宽客秀

宽客秀

Quant.Show的Web3站点,Archives from quant.show

vn.py的CTA策略回调函数on_init()注意点

vn.py 是我们常用来做 CTA 策略的交易平台,具体的安装可参考之前的文章《基于 VN.PY 的 CTA 策略入门心得》。vn.py 的 CTA 策模块中有一块叫做回调函数,包括 on_init (),on_start (),on_bar () 等。我们大多数的时候会关注 on_bar () 函数的内容,因为那是具体策略的内容,不过也不能忽视其他回调函数,比如说 on_init ()。

on_init () 一共没有几行程序,但并不是表面上看上去的简单。我们很多人对他的理解还是停留在完成变量初始化操作,并通过主动函数 self.load_bar (10) 载入所需的历史数据(在策略初始化时候,会调用 K 线时间序列管理器计算并缓存相关的计算指标,但是并不触发交易)。其实,on_init () 还有一个容易被忽视掉的作用,就是恢复上次退出之前的策略状态,具体表现为从.vntrader/cta_strategy_data.json 内读取策略参数,最新的技术指标,以及持仓数量(pos),并把这些数值还原回来。

参考如下的例子,cta_strategy_data.json 中内容如下:

{
"rbS": {
"pos": -12,
"initial_sell": 3470,
"initial_cover": 3500,
"step": 20
}
}

这种情况下,如果我们重新启动一个 CTA 策略,并且命名为 rbS 的话,那么上述策略的参数会在初始化的时候被重新加载,而无视新的程序,效果参考如下:

ad1a1b7183951dc89f508a6b6c422144

所以,如果是准备重新启动一个 CTA 策略,那不妨直接删除 cta_strategy_data.json 文件或删除其中相关部分,否则往往和期望的初始化不一致。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。