商品期货的回测价格变化不连续

Author: edwardgyw, Created: 2017-01-29 19:55:16, Updated: 2017-01-29 21:26:50

一般主力合约的市场深度比较厚,所以价格变化应该是连续的,但是我突破策略在回测的时候,比如设置价格突破2000就做多,但实际开仓价格却常常是到了2004才被触发,太不符合市场实际了,这造成我回测基本都亏的(sleep间隔都是用的1s钟)

麻烦Z大给改改,让根据k线生成的交易价格插值能够连续,另外价格(包括asks和bids)要是PriceTick的整数倍,谢谢 更新:目前检查发现是期货交易库中的NewTaskQueue会造成延后30到1min左右,价格是否连续变化还没搞清楚


More

Zero 你好, 多谢反馈, 实盘tick跳空的现像已经查明是bug, 只存在商品期货, 我会尽快在一天内处理, 模拟tick不存在跳空, 低层尽量用一分K线周期先回测着, 我解决以后通知你.

edwardgyw 用实盘tick倒是没这问题了,我一测试,好嘛又是大亏比,再仔细看原来都是因为跳空的原因,但我纳闷螺纹钢咋可能那么多跳空呢,结果原来是你的实盘tick收集老忘了把日盘给收集进去,光收集夜盘tick了,那可不就得跳空么。z大快瞅瞅你收集K线的代码是不是有问题吧。看我大过年的深夜还帮忙找了这么俩大bug,也是拼了啊 https://dn-filebox.qbox.me/e1d6af8cb202bcc7d5ac1f214dc598747e3f658b.png https://dn-filebox.qbox.me/303a460c70ac0101b29a245478c7bef3bd9871d7.png

edwardgyw 同时也是时间突变造成了NewTaskQueue的交易延迟的原因

Zero 你用实盘tick测试下商品期货看看, 可能是滑点的原因, 但不可能每个品种滑点都这么大啊, 如果有可能的话, 请给出具体的回测日期与策略

edwardgyw 有效率,我的qq3171256772

Zero 你清空缓存再测试下实盘tick应该没啥问题了, 数据已经修复, 另外请问你QQ是多少哈, 有些问题实时沟通比较方便

edwardgyw 模拟tick确实没有跳空,但时间缺失了,也就是说回测不会经过2-38秒这段时间,直接跳过了,也就造成了价格的突变。1分钟k也是这样,你可以试试,出现时间跳跃的频率还非常高 exchange.SetContractType('rb1705') function main() { while(true){ var depth=exchange.GetDepth() var sell_price=depth.Asks[0].Price var time=new Date().getTime() chart(time,sell_price) Sleep(1000) } }

edwardgyw Z大,我发现了,确实很有问题,我写了个测试策略,隔1s取一次depth的asks[0],然后用图表画出来,发现时间并不是连续的,有时候直接从02秒跳到了38秒,价格发生了突变,具体测试的品种是rb1705,时间17.1.23-17.1.24 https://dn-filebox.qbox.me/d8f32f8c12b221c4b7945d4e12342dfa692c6257.png https://dn-filebox.qbox.me/dcf0a1091506eec12338351e9fda0dabd1fdb898.png