VeighNa量化社区
你的开源社区量化交易平台
lyh829's Avatar
Member
离线
7 帖子
声望: 0

MTF wrote:

是的
感谢!我测试后如还有疑问再请教大牛

MTF wrote:

要在策略回调函数on_spread_data中接收SpreadData推送后,用spread.to_tick()转化为tick,并调用on_spread_tick函数

非常感谢!

是不是像statistical_arbitrage_stategy里面的on_spread_data一样?
def on_spread_data(self):
"""
Callback when spread price is updated.
"""
tick = self.get_spread_tick()
self.on_spread_tick(tick)

价差交易模块里的strategy定义了on_spread_tick方法,代码如下,策略启动后,并没有按照逻辑发出停止单,大佬们可以帮忙看一下问题在哪吗?

def on_spread_tick(self, tick: TickData):
    """
    Callback when new spread tick data is generated.
    """

    self.spread_pos = self.get_spread_pos()

    if self.spread_pos > 0:
        self.stop_open_algos()

        # Start sell close algo (profit taking)
        if (tick.last_price >= self.sell_price) and (not self.sell_algoid):
            self.sell_algoid = self.start_short_algo(
                self.sell_price, abs(
                    self.spread_pos), self.payup, self.interval
            )

        # Start stop close algo for long trading (stop loss)
        elif (tick.last_price <= self.buy_stop_price) and (not self.buy_stop_algoid):
            self.buy_stop_algoid = self.start_short_algo(
                self.buy_stop_price, self.spread_pos, self.payup, self.interval
            )

    elif self.spread_pos < 0:
        self.stop_open_algos()

        # Start cover close algo (profit taking)
        if (tick.last_price <= self.cover_price) and (not self.cover_algoid):
            self.cover_algoid = self.start_long_algo(
                self.cover_price, abs(
                    self.spread_pos), self.payup, self.interval
            )

        # Start stop close algo for short trading (stop loss)
        elif (tick.last_price >= self.short_stop_price) and (not self.short_stop_algoid):
            self.short_stop_algoid = self.start_long_algo(
                self.short_stop_price, abs(
                    self.spread_pos), self.payup, self.interval
            )

    self.put_event()

感谢大牛的慷慨分享!在GPT帮助下,对代码做些许更改后成功实现了。太感谢了!

电脑前一天结束的时候hibernate的,第二天交易的时候需要重连CTP吗?

会问这个问题的原因是我在价差交易里用SpreadTaker下的单,log里能显示发出订单,但是没有成交的log。我每天没做重连CTP这个动作,因为新的trading session的时候,主页面日志显示是自动重连的。

连龙八卦 wrote:

这个等于需要在每一个tick传入的时候创建一个bardata对象,思路是修改bargenerator的合成规则,每次on_tick都合成一次bardata。或者直接跳过bargenerator,用tick合成指标。

由同在item.py里的CandleItem class画的最后一根bar及左上角的info都可以实时更新,理论上其他class,如SmaItem, RsiItem等也可以实现?

谢谢大牛分享!

对于指标计算的range,是不是应该用range(ix - self.boll_window + 1, ix + 1) (以BollItem为例)?range(ix - self.boll_window, ix + 1)用了(self.boll_window + 1)根bar做计算了。

想问下大牛们,如果希望实现计算当前分钟(最后一根bar)的动态指标,在vnpy的框架下,实现思路是怎么样的?谢谢!

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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