老师麻烦帮忙为什么有时候没有等收盘就发出平仓委托

老师,麻烦帮忙看看这个策略,有时候正常,有时候距离收盘还有好长时间就发出平仓委托Params Numeric FastLength(20); // 短期指数平均线参数 Numeric SlowLength(60); // 长期指数平均线参数Vars Series<Numeric> AvgValue1; // 短期指数平均线 Series<Numeric> AvgValue2; // 长期指数平均线Events OnReady() { SetBackBarMaxCount(1 + Max(FastLength, SlowLength)); } OnBar(ArrayRef<Integer> indexs) { // 计算短期和长期指数平均线 AvgValue1 = AverageFC(Close, FastLength); AvgValue2 = AverageFC(Close, SlowLength); PlotNumeric(\"MA1\", AvgValue1); PlotNumeric(\"MA2\", AvgValue2); // 只做空头的开仓条件 if (MarketPosition == 0 && AvgValue1[1] < AvgValue2[1] && Open < AvgValue2[1]) { SellShort(0, Open); // 在新的Bar的开盘价卖出做空 } // 平仓条件 if (MarketPosition == -1 && Close > AvgValue2[1]) { BuyToCover(0, Close); // 在Bar结束时如果收盘价高于长期均线,则平掉空头仓位 } }

为什么回溯参数是barcount一头雾水这是想干嘛?

回复:自己搞复杂了,直接Close[1]模拟测试了一下好像问题解决,谢谢老师

老师,这样改可以吗?

close在盘中代表最新价你好像对运行机制有一点误解建议看看这个 https://www.bilibili.com/video/BV1zV411G7Pw/?spm_id_from=333.999.0.0&vd_source=148cb1d807933f47bb50c46ed69d3c82

回复:// 平仓条件 if (MarketPosition == -1 && Close[BarCount] > AvgValue2[BarCount]) { BuyToCover(0, Close[BarCount]); // 在Bar结束时如果收盘价高于长期均线,则平掉空头仓位这样改可以吗?

回复:在bar结束时 那你得写到onbarclose域里或者在onbar里判断 如果上一根bar收盘价高于指标,当前bar开盘价平仓

回复:老师,这样改可以吗

交易的是60分钟周期,然后在22.32分的时候价格突破长期均线没等60分钟收盘就被平仓了,策略是不是写错了?