在交易视图策略中,我输入一个条目并有条件设置止损。同时,我想要一个固定价格的止损订单,但是当我放置两个strategy.exit()
命令时,实际上只使用了一个,因为这两个命令都是“ stop”类型的。但是可以通过调用strategy.exit()
并为其指定相同的ID来用另一个订单替换退出订单。因此,我的想法是将一个出口替换为另一个出口,并在适合时将其返回,以使同时只有一个出口订单处于活动状态。
比方说,我有一个策略,条件是进入某个价格的某个位置,例如conditionEnter
和enterPrice
,在进入时我也知道止损{{1} },因此我可以设置:
stopLossPrice
现在,如果满足if conditionEnter
strategy.entry(id="longEnter", long=true, qty=1, limit=enterPrice
strategy.exit(id="longExit", from_entry="longEnter", qty_percent=100, stop=stopLossPrice)
,我将其替换为:
conditionTrailingStopLoss
其中if conditionTrailingStopLoss
strategy.exit(id="longExit", from_entry="longEnter", qty=strategy.position_size * 0.2, trail_price=priceToTriggerTrailingStopLoss, trail_offset=100)
等于或低于收盘价,因此立即设置止损并以100个价格跳动价格。请注意,即使执行该指令,也只会退出当前位置的五分之一。
正如预期的那样,尾随止损退出订单的位置将擦除原始的止损退出订单-当使用不同的ID时,甚至是正确的。我想等到尾随止损执行(被执行),然后再次下达止损出口订单。但是如何确定执行时间?
我尝试了一些尝试
priceToTriggerTrailingStopLoss
看到已经执行了一些退出,但是我从未看到两个命令都被执行。改变命令的顺序确实会影响忽略其中两个之一。如果在上面的代码中,我将if strategy.position_size < strategy.position_size[1]
strategy.exit(id="longEnter", long=true, qty=1, limit=enterPrice
strategy.exit(id="longExit", from_entry="longEnter", qty_percent=100, stop=stopLossPrice)
更改为完全不同的内容,那么三个退出指令都不会执行!
那么有人可以在这里帮忙吗?我的意思是希望有一个固定止损和一个尾随止损并不是很希望,它必须以某种方式起作用,对吧?
编辑:如果我在图表中向后滚动,我确实确实看到有时执行了一个,有时执行了另一个退出订单,但是对于相同的进入顺序却永远都不会执行。
答案 0 :(得分:0)
我找到了一种解决方案,也可以使用strategy.order()
命令来设置止损订单,如下所示:
if conditionEnter
strategy.entry(id="longEnter", long=true, qty=1, limit=enterPrice
strategy.order(id="stopLossLong", long=strategy.short,qty=strategy.position_size, limit=syminfo.mintick, stop=stopLossPrice)