OnBarcalose在跨周期有重大BUG。大家引起注意。
Params Numeric NumberONE(1); //开仓数 Numeric Q(9); //过阈值 9 Numeric N(120); //分水岭 120 Vars Series<Numeric> H1; Series<Numeric> L1; Series<Numeric> H2; Series<Numeric> L2; Series<Numeric> K1; Series<Numeric> K2; Series<Numeric> G; Series<Numeric> MA; Numeric MinPoint; Bool Condition1; Bool Condition2; Numeric Condition3; Numeric Condition4; Numeric Condition5; Numeric Condition6; Events OnInit() { SetbeginBarMaxCount(-1); SubscribeBar(data0.symbol, \"5m\",Data0.BeginDateTime); /* Range[0:DataCount-1] { AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 SetOrderMap2MainSymbol(); //设置委托映射到主力 SetSlippage(Enum_Rate_PointPerHand,1); //设置滑点为2跳/手 SetOrderPriceOffset(0); //设置委托价为叫买/卖价偏移2跳 SetInitCapital(1000000); //设置初始资金为X万 } */ } OnBarClose(ArrayRef<Integer> indexs) { Range[0 : DataCount - 1] { H1 = IIF(H<H[2] And H[1]<H[2],H[2],0); L1 = IIF(L>L[2] And L[1]>L[2],L[2],0); If(H1>0) H2 = H1+2*MinPoint; If(L1>0) L2 = L1-2*MinPoint; K1 = IIF(C>H2,-1,IIF(C<L2,1,0)); If(K1<>0) K2 = K1; MinPoint = MinMove*PriceScale; G = IIF(K2==1,H2,L2); MA = XAverage(C,N); } Range[1 : 1] { Plotauto(\"data1.G\",data1.G,0,Yellow,Enum_Solid,Enum_Line,Enum_2Pix); Plotauto(\"data1.MA\",data1.MA,0,Red,Enum_Solid,Enum_Line,Enum_2Pix); } Range[0 : 0] { //Plotauto(\"data1.G\",data1.G,0,Yellow,Enum_Solid,Enum_Line,Enum_2Pix); // Plotauto(\"data1.MA\",data1.MA,0,Red,Enum_Solid,Enum_Line,Enum_2Pix); } } OnBar(ArrayRef<Integer> indexs) { Condition1 = data0.C[1]>data1.G[1] And data0.H>data0.H[1] And data0.H>data1.G[1]+Q*MinPoint ; Condition2 = data0.C[1]<data1.G[1] And data0.L<data0.L[1] And data0.L<data1.G[1]-Q*MinPoint ; Condition3 = Max(Max(Max(data0.H[1],data0.O),data1.G[1]+Q*MinPoint),data1.MA[1]); Condition4 = Min(Min(Min(data0.L[1],data0.O),data1.G[1]-Q*MinPoint),data1.MA[1]); Condition5 = Max(Max(data0.H[1],data0.O),data1.G[1]+Q*MinPoint); Condition6 = Min(Min(data0.L[1],data0.O),data1.G[1]-Q*MinPoint); If(MarketPosition == 1) //平多 { If (Condition2 And BarsSinceEntry > 0 ) Sell(0,Condition6); } If(MarketPosition == -1) //平空 { If (Condition1 And BarsSinceEntry > 0 ) BuyToCover(0,Condition5); } If(MarketPosition == 0 ) { { //开多 If (Condition1 And data0.H>data1.MA[1] ) Buy(NumberONE,Condition3); } { //开空 If (Condition2 And data0.L<data1.MA[1]) SellShort(NumberONE,Condition4); } } Commentary(\"浮动盈亏=\"+text(Portfolio_PositionProfit));//当前持仓浮动盈亏 Commentary(\"建仓价格=\"+text(EntryPrice));//当前持仓建仓价格 Commentary(\"净持仓=\"+text(MarketPosition));//当前持仓净持仓 }