[英]question about Drawing arrows using iBarshift
我正在嘗試根據來自更高時間范圍的另一個指標的信號繪制箭頭,但我面臨的問題是它在多個蠟燭上繪制了箭頭
例如:如果我檢查 W1 時間幀上的箭頭可見性並讓我的指標在 D1 時間幀上繪制箭頭,它將在箭頭出現的每周蠟燭的 5 個每日蠟燭上繪制 5 個箭頭,但我不知道如何限制它只將箭頭放在一根蠟燭上,而不是所有五根蠟燭上。
這是我的代碼:
for(int i = limit-1; i >= 0; i--)
{
int barshift_W1 = iBarShift(Symbol(), PERIOD_W1, Time[i]);
if(barshift_W1 < 0) continue;
//Indicator Buffer 1
if(iCustom(NULL, PERIOD_W1, "Arrow Indicator", 0, barshift_W1) != EMPTY_VALUE
)
{
Buffer1[i] = iLow(NULL, PERIOD_W1, barshift_W1) - iATR(NULL, PERIOD_CURRENT, 14, i);
}
else
{
Buffer1[i] = EMPTY_VALUE;
}
//Indicator Buffer 2
if(iCustom(NULL, PERIOD_W1, "Arrow Indicator", 1, barshift_W1) != EMPTY_VALUE
)
{
Buffer2[i] = iHigh(NULL, PERIOD_W1, barshift_W1) + iATR(NULL, PERIOD_CURRENT, 14, i);
}
else
{
Buffer2[i] = EMPTY_VALUE;
}
}
試試下面的這段代碼。 我還沒有測試過,但概念是,如果您不在 W1 圖表上,您只想在一周的第一個柱形圖上繪制一次箭頭,可能...:
for(int i = limit-1; i >= 0; i--)
{
int barshift_W1 = iBarShift(Symbol(), PERIOD_W1, Time[i]);
if(barshift_W1 < 0) continue;
//Indicator Buffer 1
if(iCustom(NULL, PERIOD_W1, "Arrow Indicator", 0, barshift_W1) != EMPTY_VALUE && (Period()==PERIOD_W1 || i != limit-1 && (i * Period() / 10080 != (i+1) * Period() / 10080)
)
{
Buffer1[i] = iLow(NULL, PERIOD_W1, barshift_W1) - iATR(NULL, PERIOD_CURRENT, 14, i);
}
else
{
Buffer1[i] = EMPTY_VALUE;
}
//Indicator Buffer 2
if(iCustom(NULL, PERIOD_W1, "Arrow Indicator", 1, barshift_W1) != EMPTY_VALUE && (Period()==PERIOD_W1 || i != limit-1 && (i * Period() / 10080 != (i+1) * Period() / 10080)
)
{
Buffer2[i] = iHigh(NULL, PERIOD_W1, barshift_W1) + iATR(NULL, PERIOD_CURRENT, 14, i);
}
else
{
Buffer2[i] = EMPTY_VALUE;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.