请教个问题,辛苦大佬帮忙看下:)
场景如下:
假设只做ma5均线上做多的情况,每次价格突破ma5后,买入,然后设置止损止盈单,等待行情触发止损或者止盈。
伪代码:
def on_bar(…)
Self.cancelAll() #取消所有未成交委托
If bar.price > ma5 #k线收盘价超过5日均线
Self.buy( bar.price+5, 1) # 买1手开仓
self.sell( bar.price-5, 1, True) #设置止损的停止单
Self.sell(bar.price+20, 1) #设置止盈的限价单
**问题:
- 每次进入onbar回调函数中cancelAll()的方法会把未成交的 止损和止盈单取消掉吗? 如果取消了,是不是要设置全局变量,每次cancelall()后,在重新设置止损止盈单
- 在On_bar()的开仓单后立刻下止损止盈单,存在订单延迟,不成交的风险,可以放在on_trade(),如果在on_trade()中,如何精确的管理订单的状态,比如开仓后获取到orderid, 在触发该orderid的止损后,通过代码自动清除orderid对应的止盈单,确保没有残存的未成交挂单,从而实现不用cancelall()的目的
**