vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 31
声望: 6

1)策略中的variables变量会在停止策略时写入策略数据文件:cta_strategy_data.json 中
2)每次初始策略会先加载数据然后用cta_strategy_data.json文件的内容重置策略变量,代码如下:

        self.write_log(f"{strategy_name}开始执行初始化")

        # Call on_init function of strategy
        self.call_strategy_func(strategy, strategy.on_init)

        # Restore strategy data(variables)
        data = self.strategy_data.get(strategy_name, None)
        if data:
            for name in strategy.variables:
                value = data.get(name, None)
                if value:
                    setattr(strategy, name, value)

3)假设策略用到的交易高点被记录到变量中 variables = ['intraTradeHigh'],则可能引发问题如下:

  9月1号 开仓做多,成交价 = 98,停止策略时 记录 intraTradeHigh = 100
  9月2号 没有启动策略交易 当天最高价 = 110
  9月3号 开启策略时候会用策略文件中的 100 设置intraTradeHigh值,这样就漏掉了2号的最高价110,可能对交易策略产生一定影响。

粗略的分析,欢迎大佬拍砖指正~

Administrator
avatar
加入于:
帖子: 1711
声望: 80

是的,这里设计上考虑的是:正常跑量化策略的人,肯定每天盘中都开着系统,而不会今天跑一天明天不跑

Member
avatar
加入于:
帖子: 93
声望: 2

用Python的交易员 wrote:

是的,这里设计上考虑的是:正常跑量化策略的人,肯定每天盘中都开着系统,而不会今天跑一天明天不跑

请问一下假如我用的是no ui运行的,就是运行那个run.py。
里面好像没有停止策略的功能,假如直接将运行run.py的cmd窗口关闭了。

那还会将数据写入策略数据文件:cta_strategy_data.json 中吗?

谢谢。

Administrator
avatar
加入于:
帖子: 1711
声望: 80

2.0.7后,改为只要有成交随时会将数据写入json文件中,或者用户自己调用sync_data写入也行

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3