繁体   English   中英

为单次入场设置多个止损离场订单

[英]Place multiple stop exit orders for single entry

在交易视图的策略中,我输入了一个条目并有一个设置追踪止损的条件。 同时我想要一个固定价格的止损单,但是当我放置两个strategy.exit()命令时,实际上只使用了一个,因为两者都是“停止”类型。 但是可以通过调用strategy.exit()并为其提供相同的 id 来将退出顺序替换为另一个。 所以我的想法是用另一个替换一个退出并返回,当它适合我时,这样只有一个退出订单同时处于活动状态。

假设我有一个策略,有条件进入一个特定价格的头寸,例如conditionEnterenterPrice ,在进入时我也知道止损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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM