程序报价,报价锚定不准。出现开仓偷价,附代码

/*问题:进场价格抓取出现BUG,平仓的时候,也会出现BUG主要是锁定的价格,当下开仓棒体如果无法给予,就无法延续到后面的棒体。模型概要级别15分钟图,商品,白银1:出现向上跳空大于30跳,符合多单开仓条件2:多单开仓价格算法: open - 3*(high[1]-low[1])*minpoint3:平仓条件: 盈利:40跳平仓, 止损:亏损20跳平仓。*/Params Numeric lots(10); // 开仓手数 Vars Global Numeric MinPoint; // 最小变动价位 Global Numeric RR;// Global Numeric yy; // Global Numeric aa; // 状态变量 Global Numeric bb; // Global Numeric ddEntryPrice; // 多头开仓价格 Global Numeric kkEntryPrice; // 空头开仓价格 Global Numeric ddExitPrice; // 多头止损价格A Global Numeric ddProfitPrice; // 多头止盈价格A Global Numeric kkExitPrice; // kong头止损价格B Global Numeric kkProfitPrice; // kong头止盈价格BEventsOnBarOpen(ArrayRef<Integer> indexs){ MinPoint = MinMove * PriceScale; // 判断跳空空间,大于30跳 开单模式成立 if(open-close[1]>= 30) // 向上跳空。 { rr= 3*(high[1]-low[1])*minpoint; //计算开仓空间 ddEntryPrice = open-RR*MinPoint;// 多单开仓价格计算 ddProfitPrice = ddEntryPrice + 40*MinPoint ; ddExitPrice = open-20*MinPoint; buy(lots,max(low,ddEntryPrice)); // 实盘或模拟测试写法 // 回测的时候,出现的问题如下。 // 如果按上述的方式写 开仓代码,开盘单根棒体,如果不符合开仓条件,会偷价到最低价开仓。 // 需要的结果是,如果开盘当根棒体没有合适的成交价,那么就等后面的棒体给予开仓价格,即可。 //同理,这里的盈利价格和止损价格有时也抓不住平仓价格。 }} //如果放在if条件外面写,有时会出现多伦开仓。OnBar(ArrayRef<Integer> indexs){ if(MarketPosition == 1 ) { if(low <= ddExitPrice) { sell(lots, max(low, ddExitPrice)); // 为反手做准备! } else if(high >= ddProfitPrice) // 止盈 { sell(lots, min(high, ddProfitPrice)); } }}这个代码,出现偷价,原本的意思,出现向上跳空,下行到开仓位置,进场,如果当根棒体不到开仓价格,等待即可如果到下轮跳空,还没有到开仓价格,那么在符合条件的情况下,开仓价格自动更新,即可。但现在数据复盘时候,有时候出现,没有到开仓价格,却在最低价格,偷价成交了。。所以影响了回测数据的真实性。不知道有什么方法可以解决吗

。。。你这一大堆global变量谁教你的全局变量实时变化,每次运行结果也会不同

回复:😒

回复:😆

回复:哈哈哈哈哈哈哈哈哈

回复:这不,想着调用方便。我回头修改下试下。