求助|老师能帮我看一下我的代码问题吗
目前系统出现三个问题: 1.平仓单发单手数与持仓的手数不一致,导致可平仓位不足,不能正常平仓 2.实际委托价格与指令价格好像不一致,我的委托价格(多仓)指令是 前一根bar的最高价和开盘价比较,取最高值 +3跳,但实际发出来的价格很乱 3.止损单发不出来 Params Numeric ma1(5); Numeric ma2(15); Numeric ma3(30); Numeric risk(0.05); Vars series<Numeric> JX1; series<Numeric> JX2; series<Numeric> dJX1; series<Numeric> dJX2; Numeric SS; series<Numeric> zsx; series<Numeric> YK; series<Numeric> myEntryPrice; series<Numeric> myExitPrice; series<Numeric> ZHJE;//保证金外的账户权益 Numeric MinPoint; //最小变动 Defs //此处添加公式函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() {ma1>0&&ma2>0&&MA3>0; SetCommissionRate(BitOr(Enum_Rate_FreeOfExitToday,Enum_Rate_ByFillAmount),5); SetSlippage(Enum_Rate_PointPerHand,2); AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) {Range[0:DataSourceSize() - 1] MinPoint = MinMove*PriceScale*3; SS=(A_CurrentEquity()*risk)/(c[1]*MarginRatio()*ContractUnit()); SS= IntPart(SS); YK=PositionProfit(); ZHJE=A_CurrentEquity()-(A_CurrentEquity()*risk);//除保证金外的账户权益 zsx=-(zhje*0.015);// JX1=AverageFC(c[1],ma1); djx1=AverageFC(c[2],ma1); PlotNumeric("MA1",JX1); PlotNumeric("dMA1",dJX1); JX2=AverageFC(c[1],ma2); djx2=AverageFC(c[2],ma2); PlotNumeric("MA2",JX2); PlotNumeric("dMA2",dJX2); JX3=AverageFC(Close[1],ma3); PlotNumeric("MA3",JX3); myExitPrice = IIF(L[1] < Open, L[1],o-MinPoint); myEntryPrice = IIF(H[1] > Open, H[1],o+MinPoint); If(crossover(dJX1,dJX2)) { buy(ss,myEntryPrice); PlotString("m1","开多",L); } if(CrossUnder(JX1,JX2)&&BarsSinceEntry >= 1) { Sell(longCurrentContracts(),myExitPrice); PlotString("m2","平多",L); } If(CrossUnder(dJX1,dJX2)) Sellshort(ss,myExitPrice); PlotString("m2","开空",L);} If(Crossover(JX1,JX2) And BarsSinceEntry >= 1) BuyToCover(shortCurrentContracts(),myExitPrice); PlotString("m2","平空",L);} //止损设置 If(MarketPosition == 1 And BarsSinceEntry >= 2) {If(zsx>YK) { Sell(longCurrentContracts(),L-MinPoint); PlotString("zs1","多仓止损",L); } } If(MarketPosition == -1 And BarsSinceEntry >= 2) { If(zsx>YK) { BuyToCover(shortCurrentContracts(),H+MinPoint); PlotString("zs2","空仓止损",L); } }}