OnBar(ArrayRef<Integer> indexs)
{
MinPoint = MinMove*PriceScale;
MyEntryPrice = AvgEntryPrice;
i_offset = offset*MinMove*PriceScale;
AA = CrossOver(High,BuyPosition);
BB = CrossUnder(LOW,SellPosition);
If(Time == 0.0935)
{Sign1 = Close[1];}
IF (sign1 != 0)
{ BuyPosition = sign1 + X1;
SellPosition = sign1 - X1;
}
PlotNumeric("BuyPosition",BuyPosition);
PlotNumeric("SellPosition",SellPosition);
If(CurrentBar > 44*Max(Mday,Nday))
{
If(MarketPosition == 0 And AA And Time >= 0.0935)
{
Buy(lots,Max(Open,BuyPosition)+i_offset);
Return;
}
If(MarketPosition == 0 And BB And Time >= 0.0935)
{
SellShort(lots,Min(Open,SellPosition)-i_offset);
Return;
}
第一张图为啥没穿过上轨也有信号
第二张和第三张图是穿过了上轨没信号,但是有些时候又有信号,哪里有问题?求大神
执行顺序的问题
你的代码是先判断AA条件是否成立,再修改AA条件里的buyposition取值,然后再画图
这就导致,判断AA条件时使用的buyposition其实不是你画图画出来的东西,而是上一根bar的buyposition。
代码执行也是有一个先后顺序的,正确的顺序应该是先更新buyposition的值,然后画图,然后再判断AA条件是否成立,最后引用AA条件来判断信号。
明白了谢谢