[英]Place multiple stop exit orders for single entry
在交易视图的策略中,我输入了一个条目并有一个设置追踪止损的条件。 同时我想要一个固定价格的止损单,但是当我放置两个strategy.exit()
命令时,实际上只使用了一个,因为两者都是“停止”类型。 但是可以通过调用strategy.exit()
并为其提供相同的 id 来将退出顺序替换为另一个。 所以我的想法是用另一个替换一个退出并返回,当它适合我时,这样只有一个退出订单同时处于活动状态。
假设我有一个策略,有条件进入一个特定价格的头寸,例如conditionEnter
和enterPrice
,在进入时我也知道止损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)
其中priceToTriggerTrailingStopLoss
等于或低于收盘价,以便立即设置追踪止损并跟踪价格 100 个分时。 请注意,即使它被执行,也只会退出当前位置的五分之一。
正如预期的那样,追踪止损退出订单的放置会删除原始止损退出订单 - 当使用不同的 ID 时甚至是这样。 我想等到追踪止损已经执行(被填充),然后再次放置止损退出订单。 但是我如何确定执行时间?
我尝试了一些东西
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)
看到一些退出已被执行,但我从未看到两个订单都被执行。 但是,更改命令的顺序确实会影响忽略这两者中的哪一个。 如果在上面的一段代码中我将id
更改为完全不同的东西,那么三个退出订单都不会被执行!
那么有人可以在这里帮忙吗? 我的意思是想要有一个固定止损和一个追踪止损并不是很奇怪,它必须以某种方式起作用,对吗?
编辑:如果我在图表中向后滚动,我实际上确实看到有时一个,有时另一个退出订单被执行,但对于同一个入场订单,仍然永远不会同时执行。
我找到了一个解决方案,也可以使用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.