[英]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.