Pine script 使用多个strategy.exit调用的TradingView帮助

Pine script 使用多个strategy.exit调用的TradingView帮助,pine-script,Pine Script,我在修改TradingView的strategy tester中的空缺职位时遇到了一个奇怪的问题。让我先解释一下上下文: 以下行根据我的输入条件打开订单,entryLong strategy.entry(“ID”,strategy.long,comment=“L_entry”,when=entryLong) 这非常有效,但是,只有关闭订单才能赚钱;)因此: strategy.exit(“L_STOP”,“ID”,loss=fixedSL*10) 此行修改未平仓订单,以在进场位置下方的价格fix

我在修改TradingView的strategy tester中的空缺职位时遇到了一个奇怪的问题。让我先解释一下上下文:
以下行根据我的输入条件打开订单,
entryLong

strategy.entry(“ID”,strategy.long,comment=“L_entry”,when=entryLong)

这非常有效,但是,只有关闭订单才能赚钱;)因此:

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

此行修改未平仓订单,以在进场位置下方的价格
fixedSL
添加止损。在这一点上,我唯一的退出条件是价格达到我的止损点,这将总是导致一个亏损策略。为了解决这一问题,我包括:

if(exitLong)
策略。退出(“L_TRAIL”,“ID”,TRAIL_points=fixedTP*10,
trail_offset=trailSL*10)

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

通过在单个
策略中设置尾随止损和止损,我可以完全避免这个问题。退出
呼叫,但看到屏幕上打印的L_止损L_止损非常有帮助,可以告诉你是什么导致了交易的退出。当订单的条件满足时,只打印订单的ID,因此,例如,一次调用只能是L_STOP,这不会提供关于退出触发器的太多信息

任何和所有的反馈都是有帮助的!如有必要,我还可以包括图表的屏幕盖

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

strategy.exit(“L\u TRAIL”,“ID”,TRAIL\u points=fixedTP*10,TRAIL\u offset=trailSL*10)

我在图表上引用这些ID以帮助调试,并且只有L_停止出现以关闭订单。这使我相信,L_轨迹退出条件要么从未满足(不太可能),要么从未设置

这里的问题是您使用了两次
strategy.exit()
函数来设置止损(固定止损和跟踪止损)

但这不是
strategy.exit()
的工作方式。TradingView说:

如果使用止损和尾随止损,则其订单类型为“止损”,因此仅放置其中一个(应该首先填充的那个)

这就解释了为什么没有设置第二个止损点(轨迹一)

您需要做的是重写策略代码,这样就可以通过
strategy.exit()
一站式发送。如果没有看到完整的代码,我就不能提供很多实用的建议。但也许你可以给你的尾随止损设定正常止损的
trail\u offset

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

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

啊,太谢谢你了!我想我错过了订单类型的部分。我可以通过在一个strategy.exit()调用中设置损失和尾随止损来轻松解决这个问题,但是我想知道到底是什么导致退出价格触及我原来的止损或尾随止损。我想如果我赚了钱,很明显,它触及了尾随止损点。谢谢你的回复!你帮我解决了一个非常愚蠢的问题