【从零开始vnpy量化投资】十二. CTA策略开发技巧

【从零开始vnpy量化投资】十二. CTA策略开发技巧

概述

我们在之前的策略编写中,主要关注的是策略交易信号和持仓管理,这对于回测来说就是足够完整的了。但对于实盘或者模拟盘的运行,这样的策略还无法满足需求,在本章我们将会讨论几个实盘与回测差异巨大的场景,并尝试使用编码方式来确保策略在两种模式下运行尽可能一致。

历史数据加载

在回测的时候,由于数据已经全部被加载到内存中,所以在回放数据的时候,策略内部记录的数据量包含从回测开始时间到当前k线的所有数据,这样在计算某些长期指标时就没有任何问题,因为如果数据量不够,仅需要继续回放下一阶段数据就行了。

加载数据的天数设计

而在实盘中,历史数据的加载被放到了on_init()方法中,在初始化时调用load(N)方法,即可加载N天的数据。vnpy的实现方式是N个自然日,所以如果我们需要用到20天的历史数据来计算20日均线,则需要确保N减去各种假期和周末后要超过20才行。否则在某些限制下,如果没有20天数据来计算指标,则当日的策略不会继续运行。在这里建议读者先将N除以5再乘以7,去处理周末的天数,同时额外加上10-20天作为缓冲,避免诸如春节等长假的影响。

启动时休息时间的配置

如果配置了多个策略,虽然vnpy是使用异步线程方式去启动多个策略,但实际加载数据部分也收到数据库和服务器主机的性能影响,当加载的数据范围扩大,则加载时间也会增加。这对我们的影响主要就在启动文件中,在调用init_all_strategies后,休息的时间不宜过短,vnpy如果在调用on_start时on_

猜你喜欢

转载自blog.csdn.net/u011687355/article/details/130490580