VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 62
声望: 3

我看了TrendFollowingStrategy这个sample,其实是一个单一标的例子。假设我有3个标的,我理解应该至少创建3个独立的BarGenerator。在

def on_tick(self, tick: TickData):

方法里面分区去为这3个BarGenerator做相应的update_tick。并且这三个BarGenerator的回调都设置成:

    def on_bar(self, bar: BarData):
        """
        Callback of new bar data update.
        """
        bars = {bar.vt_symbol: bar}
        self.on_bars(bars)

但是,这样的话

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

参数bars其实只包含了某一个标的物的bar,而非3个标的物的bar。请问代码上该如何实现才能在参数bars里面包括3个标的物的bar?

Administrator
avatar
加入于:
帖子: 4500
声望: 320

不能依赖回调,要通过generate函数来强制合成

Member
avatar
加入于:
帖子: 62
声望: 3

不是太明白 “要通过generate函数来强制合成” 具体怎么做,能否给个简单是示例?

Member
avatar
加入于:
帖子: 62
声望: 3

我在init方法里面创建3个BarGenerator:

self.bg1 = BarGenerator(self.on_bar1)
self.bg2 = BarGenerator(self.on_bar2)
self.bg3 = BarGenerator(self.on_bar3)

我的问题是,这3个回调函数需要设置成一样吗?

假设bg1触发了回调self.on_bar1,我需要对另外两个bg强制生成bar?:

self.bg2.generate()
self.bg3.generate()

但如果这样做的话,不就又触发了bg2和bg3的回调函数了吗?

还是没想明白具体该怎么做,是否能给个简单的示例?

Administrator
avatar
加入于:
帖子: 4500
声望: 320

下个版本我们会提供DEMO代码的

Member
avatar
加入于:
帖子: 62
声望: 3

能否贴个sample?急着开发啊~~~

Member
avatar
加入于:
帖子: 36
声望: 7

用Python的交易员 wrote:

下个版本我们会提供DEMO代码的

版主,下个版本什么时候发布啊?

Member
avatar
加入于:
帖子: 36
声望: 7

liang wrote:

能否贴个sample?急着开发啊~~~

我这边也需要用到组合策略,比你的还要复杂。

Administrator
avatar
加入于:
帖子: 4500
声望: 320

https://share.weiyun.com/53AqePC

先参考这个例子好了

Member
avatar
加入于:
帖子: 62
声望: 3

谢谢啦~~~

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

用Python的交易员 wrote:

不能依赖回调,要通过generate函数来强制合成

看了下面发的例子,是不是意味着目前trendfollowingstrategy的例子有点问题,所有的合约都需要强制合成不能回调?给的pcparbitragestrategy得例子似乎就是强制合成1min k,可是这个例子里的策略是只关注截面数据,如果需要callback获取之前k线数据呢?,另外,那如果是要5min 10min 2hour 甚至daybar呢也是强制合成?

抱歉技术水平有限,问的问题可能比较低级…因为开发时间很紧凑,求版主回答,拜托了,万分感谢

Administrator
avatar
加入于:
帖子: 4500
声望: 320

弃治羽 wrote:

用Python的交易员 wrote:

不能依赖回调,要通过generate函数来强制合成

看了下面发的例子,是不是意味着目前trendfollowingstrategy的例子有点问题,所有的合约都需要强制合成不能回调?给的pcparbitragestrategy得例子似乎就是强制合成1min k,可是这个例子里的策略是只关注截面数据,如果需要callback获取之前k线数据呢?,另外,那如果是要5min 10min 2hour 甚至daybar呢也是强制合成?

抱歉技术水平有限,问的问题可能比较低级…因为开发时间很紧凑,求版主回答,拜托了,万分感谢

之前的数据都已经推送过,用ArrayManager自己存下来好了,跟CtaStrategy模块一样的,其他时间周期K线的合成可以按照自己的策略逻辑管理

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

哇, 刚了解了一下, 这个组合框架厉害了, 能想到这个办法~,.,

强制合成那个,我估计可能是考虑到期权合约流动性不及期货活跃?
期货合约一般是每秒2跳动
期权合约,我没有跟踪过,不知道是不是也是每秒2跳? 还是说一定要有报价变动或有成交变动才会推送tick进来?

Administrator
avatar
加入于:
帖子: 4500
声望: 320

后者,最高频率是1秒2跳

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

添加多个合约时,怎么防止bardata,混在一起推送给 am.update_bar(bar)

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

am自身好像没有区分合约,铜和螺纹交替推送给am.update_bar(bar),容易导致ATR指标计算出错

Member
avatar
加入于:
帖子: 4618
声望: 284

基于前面提到的pcp策略,每个bgs[vt_symbol]对应创建一个ams[vt_symbol]应该就可以了吧

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

沪公网安备 31011502017034号

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