VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 11
声望: 0
在我的另外一个帖子(链接;https://www.vnpy.com/forum/topic/4699-yong-portfolio-strategymo-kuai-xie-de-duo-biao-de-shuang-jun-xian-ce-lue-huan-you-gu-piao-chi-de-wen-ti?page=1#pid16330)

打算按照一定的规则,建立一个 股票池,股票池的 股票标的,和数量,过一段时间,就会改变
设想在 策略之外,对所有股票进行 筛选,赋值给 engine.set_parameters的 vt_symbols
但在 策略中,比如 双均线策略(有2个标的 )
class DemoStrategy2(StrategyTemplate):

      # 第一个标的的 快速均线,和慢速均线
      fast_window_1 = 10
      slow_window_1 = 20
       fast_ma0_1 = 0.0 
       fast_ma1_1 = 0.0
      slow_ma0_1 = 0.0
      slow_ma1_1 = 0.0

      # 第二个标的的 快速均线,和慢速均线
      fast_window_2 = 10
      slow_window_2 = 20
      fast_ma0_2 = 0.0
      fast_ma1_2 = 0.0
      slow_ma0_2 = 0.0
      slow_ma1_2 = 0.0

def init(....)
super().init(.....)
self.bg = BarGenerator(self.on_bar)

       self.am_1 = ArrayManager()
       self.am_2 = ArrayManager()

def on_bar(self, bar: BarData):
bars = {bar.vt_symbol: bar}
self.on_bars(bars)

def on_bars(self, bars: Dict[str, BarData]):
""""""
self.cancel_all()

    bar_1 = bars[self.vt_symbol_1]
    am_1 = self.am_1
    am_1.update_bar(bar_1)
    if not am_1.inited:
        return

    bar_2 = bars[self.vt_symbol_2]
    am_2 = self.am_2
    am_2.update_bar(bar_2)
    if not am_2.inited:
        return

象以上的 不同标的的 快慢速均线, 在标的数量不确定的情况下 ;
bar 生成器 BarGenerator
序列生成器 ArrayManager()
init , on_bar , on_bars
如何写,才更简便,灵活 ?
才能更好的 ,配合 多标的
谢谢大家

Administrator
avatar
加入于:
帖子: 4502
声望: 321

几个编写原则吧:

  1. 通过字典,来缓存一个个的bg和am,key是vt_symbol,value是你要用的对象
  2. 最近官方在做PortfolioStrategy在商品多因子策略方面的应用研究,这里没选股票主要因为不涉及除权除息的问题
Member
avatar
加入于:
帖子: 11
声望: 0

谢谢

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

用Python的交易员 wrote:

几个编写原则吧:

  1. 通过字典,来缓存一个个的bg和am,key是vt_symbol,value是你要用的对象
  2. 最近官方在做PortfolioStrategy在商品多因子策略方面的应用研究,这里没选股票主要因为不涉及除权除息的问题
    请问大概什么时候会有一个初步的成果,非常好奇官方在这方面的应用
© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】