` def on_trade(self, trade: TradeData):
"""
Callback of new trade data update.
"""
msg = ["trade >>> ", trade.datetime, trade.symbol, trade.orderid, trade.tradeid, trade.direction, trade.offset, trade.price, trade.volume]
self.write_log("\t".join([str(x) for x in msg]))
self.write_log(self.bullorder)
self.write_log(self.bearorder)
# 处理开多
if trade.direction.value == Direction.LONG.value and trade.offset.value == "开":
self.bullorder["status"] = "POS"
self.bullorder["trade_time"] = trade.datetime
# 多单止盈
self.write_log("=========================================bull止盈================================================")
self.sell(self.bullorder["takeprofit_price"], 1)
# 多单止损
self.write_log("=========================================bull止损================================================")
self.sell(self.bullorder["stoploss_price"], 1)`
如代码, 在on_trade中挂止盈止损, 但是只有前面的止盈可以委托成功, 止损并未发出, 为啥?
然后再高频中应该怎样现价止损?
您好, 这个问题您解决了吗?
`class FirstStrategy(CtaTemplate):
author = "用Python的交易员"
default_pricetick = 4
default_cancel_order_second = 2
default_stop_pos_second = 40
cancel_order_times = 0
bullorder = {
"orderid": "",
"open_price": 0,
"stoploss_price" : 0,
"takeprofit_price" : 0,
"open_time": None,
"trade_time": None,
"status": "INIT",
}`
以上代码, 启动多个品种,如图:
运行过程中发现A品种设置的变量值赋值给所以启动的品种, 请问这是怎么回事