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

1.同一策略,不同标的同时开盘前开启,开盘前总会出现没有数据更新情况,有时候延迟几分钟,今天延迟了差不多15min才更新(主逻辑在on_bar里面)
2.同一策略,夜盘标的在上述更新完成后,可以随时更新日内高低点,只有白盘的标的,日内高低点只能等到有仓位时候才能更新
注:区分白盘夜盘,自己建了一个json文件,存放标的开盘时间,比对json文件与 self.symol抓取开盘时间;单个标的测试打印开盘时间没问题
3.同一策略,不同标的,当某几个标的入场后手动平仓了,停止这几个标的对应的策略,依然在发出止损单,开仓单,这意味着没有停止该标的对应的策略啊

Member
avatar
加入于:
帖子: 524
声望: 24
  1. 是不是该品种流动性太差了价格一直没有更新
  2. 确定是同一个逻辑吗?如果没有仓位不更新,在pos=0的时候也更新intra_trade_high和intra_trade_low就行了吧。
    self.intra_trade_high = bar.high_price
    self.intra_trade_low = bar.low_price
  3. 请问是多标的还是一个单品种CTA策略跑多个合约?
Member
avatar
加入于:
帖子: 45
声望: 0

单一策略对应不同标的,在功能——CTA策略——添加策略,分别添加不同标的;假设策略TestStrategy,意味着我通过这个策略类创建了多个策略实例;想了下,是不是不同标的开盘时间不一样,导致创建实例时候start_time属性混乱
1.创建了一个tradinghour.py (class TRADINGHOUR,有get_trading_time(symblo)方法、trading_period(bar)方法)可以获取不同标的开盘、收盘时间,和不同标的一天的交易时间段;
2.在策略里面import TRADINGHOUR ,在创建策略实例 (def --init--)同时创建TRADINGHOUR的实例self.tradingtime;
3.在on_init里面调用self.tradingtime.get_trading_time()获取开盘时间self.start_time;
这里面有个问题,start_time应该是time对象,属于可变对象,是不是应该在def--init--里面同时初始化一下,作为全局变量可以在后面实例方法里面用;我是把start_time作为类的全局变量,start_time = “”,在on_init 里面用self.tradingtime.get_trading_time()方法获取具体实例的开盘价,然后在on_bar里要用到self.start_time

Member
avatar
加入于:
帖子: 45
声望: 0

策略本身没问题,跑单一标的几天都没出错

Member
avatar
加入于:
帖子: 524
声望: 24
  1. on_init是拉取数据初始化,策略变量初始化应该在def_init里吧;
  2. 虽然是同一策略,但实例名称不能重名,可以检查一下看有没有重名;
  3. 怀疑自己start_time有问题,最简单的方法就是去print一下看看到底有没有错
Member
avatar
加入于:
帖子: 45
声望: 0

on_init反正启动策略都会运行一次,获取start_time 需要运行一次就可以;今天早晨好像把self.start_time,self.end_time = self.tradingtime.get_trading_time(self.symbol)放在def_init里面,启动半小时都没挂出单子,策略应该是开盘一分钟后就发出stop单的
实例是不会重名的,实例命名方式是策略名_symbol
start_time没问题,都针对不同开收盘标的打印过

Member
avatar
加入于:
帖子: 524
声望: 24

请问当时策略的指标达到发单要求了吗?
也可以自己多print看看策略其他的细节排查看看哪里出了问题

Member
avatar
加入于:
帖子: 45
声望: 0

今天情况是这样,比如策略class TestStrategy ,昨晚用这个class 创建了ag,cu,al,昨晚启动了,发单没问题;今天早晨开盘前用这个class 创建了fg,sm策略;同时启动了ag,cu,al,fg,sm,只有昨晚ag,cu,al挂出单子,今天加的fg,sm都没发出单子;
1.策略命名都是TestStrategy_symbol,不会重复;2早晨开盘前,特意开了白盘,夜盘的标的sm,fg,开盘后几分钟都没发出单子;3.策略发单不需要条件判断,开盘就挂单;4.删除了新增的sm,fg,换成其他策略开启,比如bollStrategy_fg,能够启动;5.半小时左右,重新用TestStrategy开启fg,sm又都能启动;

Member
avatar
加入于:
帖子: 45
声望: 0

模拟盘测试了下,有时候能够启动,打印有夜盘,白盘不同标的也没问题,但有时候启动不了,启动按钮是卡死的状况;会不会是同一策略跑不同标的,线程太多,早盘开启时候出现有的线程启动不了呢?

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