EA邦程序化交易论坛

标题: 彻底解决回测和实盘不一致的问题 [打印本页]

作者: 九月的雨    时间: 2022-2-24 13:40
标题: 彻底解决回测和实盘不一致的问题
本帖最后由 EA邦高老师 于 2022-3-2 14:17 编辑

回测和实盘的一致性是非常重要的,因为如果回测和实盘不一致的话,那么Ea的任何参数都不敢在实盘上用。
在回测中,我发现不同平台的回测结果有一定的差异,即使是开启了仅用开盘价。
跟老师沟通了一下仅用开盘价的逻辑,才知道这个逻辑是只用设置时间生成K线后的第一个报价,比如下图,就是当新的一分钟开始后,当mt5客户端收到第一个报价的时候,就按这个报价执行一次EA,如果有开平仓条件,就执行开平仓,然后EA在这根K线上就不再运行。
QQ图片20220224133129.png
大多数情况下,第一个报价就是开盘价,而且报价时间一般都是整点,或是01秒或02秒的时候过来第一个报价,特别是实盘的时候。
但是经过我大量的测试,发现在回测的时候,很多时候,第一个报价不是开盘的时间点,可能是已经10秒或20秒的时候,这时候这个价格可能就跟这根K线的开盘价不一致。
所以,我想的是,能不能加上一个强制使用开盘价的功能,就是当我开启仅用开盘价功能的时候,EA不用当前的现价来判断是否满足开平仓条件,现是用这根K线的开盘价来判断,只要开盘价满足条件,再用现价来开平仓。
这样的好处是,回测的结果,可能有出入,因为是强制使用的开盘价,所以开平仓的订单数量肯定都会完全一致。

总结一下就是,强制用K线的开盘价来判断各种开平仓的满足情况,而不是用开盘后的第一个报价。

作者: EA邦高老师    时间: 2022-2-24 14:14
这个需求提的好,预计下个版本更新此功能。请耐心等待!
作者: 唐老师    时间: 2022-2-25 14:16
其实回测的时候选择仅用开盘价就可以了。
QQ图片20220225141537.png
作者: vinjht    时间: 2022-2-26 00:36
本帖最后由 vinjht 于 2022-2-26 01:11 编辑

开盘价和开盘后的第一个报价有什么区别?不报价怎么形成开盘价?而且你确定你说的这种情况不是因为服务器延迟引起的?
人家那里早就报价了,只是传到你终端上已经2000毫秒后了

而且这个功能本来就有逻辑漏洞
打个比方,设了300点止盈,开盘价报到盈利290点位处了,之后60秒超过300点后回落回到300点以内,之后再也没有超过300点了,只用开盘价的话这单就不会止盈,那你说是利大还是弊大?




作者: movie    时间: 2022-2-26 09:35
楼上说的没错,实盘的情况很复杂的,不同平台的报价本身就存在差异,回测只是在客户终端上作出的理想状态,完全一致是不可能的。
作者: 唐老师    时间: 2022-2-26 11:06
这个功能实际上就是一根K线的时间开始后,开盘后加载EA的客户端收到的第一个报价,比如周期设置1小时,那么比如说在11点的时候,第一个报价过来,EA在这个报价执行一次,在12点之前EA就不再执行了,理论上这个报价就应该是这根K线的开盘价,除非之后客户端同步历史数据或是其它原因,导致这根K线的开盘价变了。
QQ图片20220226110744.png
作者: zrxtg    时间: 2022-3-6 14:58
学习中.....




欢迎光临 EA邦程序化交易论坛 (https://www.eabang.com/bbs/) Powered by Discuz! X3.5