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的框架下,实现思路是怎么样的?谢谢!