"回测时发现"的问题其实还算少的,我一般都是在实盘时仔细盯盘,研究每一个买卖动作,用“业务逻辑”来理解实盘时发现的问题,这样才能习惯于进行业务逻辑设计。回测工具往往忽略了许多真实细节。
补充说明一下上面的“点差+滑点”的例子。比如实盘时我们开 Buy 单,我们认为当前价格是 x,但是实际成交价就会在 x 上方很远的地方,对于许多品种、许多时刻这个成交价(成本价)会高出2、3根K线,那么我们一旦开 Buy 单就已经亏了,此时市场报价在我们的开仓成本价“下边”一段距离在徘徊。然后接下来,行情报价未必会上涨并且穿透成本价,而是可能一路下跌。当我们平仓时,我们以为会在价格 y 平仓,但是实际平仓价可能会在 y 下方一点儿,那么你设计“止盈止损”策略时就要对于这种理论与成交的误差预先留出一定富余。
如果我们忽略滑点,设计出来的业务逻辑可能就会让止损距离大大超过实际预想的距离(因为没有按照真实的成交价止损),或者如果按照真实成本价设置止损又(太容易碰上K线指标)不停地“开仓、止损、开仓、止损.......”了。
最粗暴的处理办法,是每次开仓/加仓之前都要检测一下当前品种、当前时刻的参考点差值,限制开仓/加仓。丧失了进场功能,但是减少了滑点造成的影响。当然一个好的程序设计会有更聪明的处理滑点的业务处理办法。 |