TradingView 帮助使用多个strategy.exit 调用

Das*_*san 6 pine-script

我在修改 TradingView 策略测试器中的未平仓头寸时遇到奇怪的问题。让我先解释一下上下文:
下面一行根据我的入场条件打开一个订单entryLong

strategy.entry("ID", strategy.long, comment="L_Entry", when = entryLong)

这很有效,但是,在关闭订单之前您无法赚钱;)因此:

strategy.exit( "L_STOP", "ID", loss = fixedSL * 10)

fixedSL该行修改未平仓订单,以低于入场位置的价格添加止损。此时,我唯一的退出条件是价格触及我的止损,这总是会导致亏损策略。为了解决这个问题,我包括:

if (exitLong) strategy.exit("L_TRAIL", "ID", trail_points = fixedTP * 10, trail_offset = trailSL * 10)

然后在达到设定利润添加追踪止损。这样,我就可以安全地锁定利润,同时仍然留有增长空间。问题就在这里。每个退出条件都有一个 ID -L_STOPL_Trail(L 代表 Long,bc 这是买入)。我在图表上引用这些 ID 来帮助调试,并且只有L_STOP出现过的 ID 才会关闭订单。这让我相信L_TRAIL退出条件要么从未满足(不太可能),要么从未设置。我知道布尔值exitLong设置为 True 并且该行应该正在执行。

我可以通过在一次调用中设置追踪止损和止损来完全避免这个问题strategy.exit,但是看到屏幕上打印的L_STOPL_TRAIL来了解导致交易退出的原因非常有帮助。当满足条件时,只会打印订单的 ID,因此一次调用只会是L_STOP,这不会提供有关退出触发器的太多信息。

任何和所有反馈都是有帮助的!如有必要,我还可以添加图表的屏幕截图。

Jur*_*ura 6

strategy.exit( "L_STOP", "ID", loss = fixedSL * 10)

...

strategy.exit("L_TRAIL", "ID", trail_points = fixedTP * 10, trail_offset = trailSL * 10)

...

我在图表上引用这些 ID 来帮助调试,并且只有 L_STOP 会出现关闭订单的情况。这让我相信 L_TRAIL 退出条件要么从未满足(不太可能),要么从未设置。

这里的问题是您使用该strategy.exit()函数两次,两次都是设置止损(固定止损和追踪止损)。

但这不是可行的strategy.exit()。TradingView 的参考资料说:

“如果您使用止损和追踪止损,它们的订单类型是‘止损’,因此只放置其中一个(应该首先填写的订单)。”

这可以解释为什么你的第二个止损(追踪止损)没有设置。

您需要做的是重写您的策略代码,以便一站式发送strategy.exit()。如果没有看到完整的代码,我无法提供太多实用的建议。但也许您可以将追踪止损设置trail_offset为正常止损设置的值?

我无法从你的问题中看出变量持有什么值,但也许这会起作用:

stopPrice = exitLong ? strategy.position_avg_price - (trailSL * 10) :
     strategy.position_avg_price - (fixedSL * 10)
     
strategy.exit("L_STOP", "ID", stop=stopPrice)
Run Code Online (Sandbox Code Playgroud)