向下突破时开空不能实现,请老师帮忙看下是哪里的问题
Params Numeric N1(14);//短周期均线 Numeric N2(31);//中周期均线 Numeric ss(1);//交易手数 Numeric TR(4); Vars Series<Numeric> var1; Series<Numeric> var2; Series<Bool> condition1; Series<Bool> condition2; Series<Numeric> bka; Series<Numeric> bkx; Series<Numeric> var3; Series<Numeric> var4; Series<Bool> condition3; Series<Bool> condition4; Series<Bool> condition5; Series<Bool> condition6; Series<Numeric> Myprice; Series<Numeric> var3op; Series<Numeric> var4op; Series<Numeric> LowerAfterEntry; Series<Numeric> HigherAfterEntry; Series<Numeric> Myprice2; Series<Numeric> Myprice3; Events onBar(ArrayRef<Integer> indexs) { var1=Average(C[1],N1);//短周期均线 var2=Average(C[1],N2);//中周期均线 PlotNumeric("var1",var1[1]); PlotNumeric("var2",var2[1]); condition1 = CrossOver(var1,var2);//金叉 condition2 = CrossUnder(var1,var2);//死叉 If(condition1); { bka=CurrentBar; } If(condition2) { bkx=CurrentBar; } var3=Highest(H[1],(bka-bkx)+1);//计算本次金叉到上次死叉的时间范围内的高点 var4=Lowest(L[1],(bkx-bka)+1);//计算本次死叉到上次金叉的时间范围内的低点 condition3=condition1 And bka>bkx And bka>0 And bkx>0 And CurrentBar>0;//当均线金叉同时bka大于bkx且bka和bkx都不等于0时,条件3成立(多头条件) If(condition3) { var3op=var3;//条件3成立时,将var3赋值储存到var3op,保存金叉时的最高点到全局变量var3op里面 } condition4=condition2 And bkx>bka And bka>0 And bkx>0 And CurrentBar>0;//当均线死叉同时bkx大于bka且bka和bkx都不等于0时,条件4成立(空头条件) If(condition4) { var4op=var4; //条件4成立时,将var4赋值储存到var4op,保存死叉时的最低点到全局变量var4op里面 } condition5=var1>var2 and CrossOver(C[1],var3op);//当短周期均线大于中期均线,并且价格突破高点时,条件5成立 If(condition5 And MarketPosition<>1) { Myprice=Open;//保存本根bar的开盘价; Buy(ss,Myprice);//按开盘价开多头; Commentary("多头开仓"); LowerAfterEntry=EntryPrice;//保存多头开仓价格; } condition6=var1<var2 And CrossUnder(C[1],var4op);//当短周期均线小于中周期均线,并且价格跌破最低点时,条件6成立 If(condition6 And MarketPosition<>1) { Myprice=Open;//保存本根bar的开盘价; SellShort(ss,Myprice);//按开盘价开空; Commentary("空头平仓"); HigherAfterEntry=EntryPrice;//保存空头开仓价格; } //记录多头最低价和空头最高价 If(MarketPosition==1 And BarsSinceEntry==0)//有多头持仓时,刚进场时的本根bar线序号 { HigherAfterEntry= HigherAfterEntry[1]; LowerAfterEntry=Max(LowerAfterEntry,Low);//多头出场的参考价格 } If(MarketPosition==-1 And BarsSinceEntry==0)//有空头持仓时,刚进场时的本根bar线序号 { HigherAfterEntry=Min(HigherAfterEntry,High);//空头出场的参考价格 LowerAfterEntry=LowerAfterEntry[1]; } If(MarketPosition<>0 And BarsSinceEntry>=1) { LowerAfterEntry=Max(LowerAfterEntry,Low);//多头出场的参考价格 HigherAfterEntry=Min(HigherAfterEntry,High);//空头出场的参考价格 } //跟踪出场 Myprice2=LowerAfterEntry-Open*TR/100; //PlotNumeric("Myprice2",Myprice2);//多头出场线 If(MarketPosition==1 And Low<=Myprice2 And BarsSinceEntry>0)//当持有多单持仓时,最新价格跌破止损线,同时平仓信号和开仓信号不在同一根bar线; { Myprice2=Min(Myprice2,Open);//如果跳空击破,取值最新的bar线的开盘价,若不是,去出场线价格; Sell(ss,Myprice2);//多头平仓; Commentary("多头平仓"); } Myprice3=HigherAfterEntry+Open*TR/100; //PlotNumeric("Myprice3",Myprice3);//空头出场线 If(MarketPosition==-1 And High>=Myprice3 And BarsSinceEntry>0)//当持有空单持仓时,最新价格突破出场线,同时平仓信号和开仓信号不同一根bar线; { Myprice3=Max(Myprice3,Open);//如果跳空击破,取值最新的bar线的开盘价,若不是,去出场线价格; BuyToCover(SS,Myprice3);//空头平仓 Commentary("空头平仓"); } }