VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 17
声望: 0

您好!我现在用的是veighna 3.9.1版本,我使用的是spreadtrading价差策略模块,如果我将self.send_email(body)放在def on_spread_pos(self):下面,可以触发发送邮件的信号,能够成功发送邮件,如果我将self.send_email(body)放在def on_trade(self, trade: TradeData):下面,即使有成交,也无法发送邮件。并且如果我在def on_trade(self, trade: TradeData):项下写入代码self.write_log("有订单完成"),成交时,也不能输出日志。这说明成交时,spreadtrading价差策略模块的def on_trade(self, trade: TradeData):不能生成触发信号。
而CTA自动交易模块策略中的def on_trade(self, trade: TradeData):下面放self.send_email(body)的代码是可以成功发送邮件的。
请问在spreadtrading价差策略模块中,当有成交时,如何在def on_trade(self, trade: TradeData):项下生成触发给邮箱发邮件的信号,像CTA自动交易模块一样,给邮箱发邮件?

Member
avatar
加入于:
帖子: 1911
声望: 142

on_trade是只有策略调用send_order直接发送委托时才会 被触发,你正常使用start_long/short_algo通过算法执行价差交易的时候不会触发。

你需要把send_email写在on_spread_algo下,加个条件判断只有发生成交的时候才发送邮件。

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

感谢您的指点

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

沪公网安备 31011502017034号

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