我在修改 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_STOP
和L_Trail
(L 代表 Long,bc 这是买入)。我在我的图表上引用这些 ID 以帮助调试,并且只有L_STOP
曾经似乎关闭订单。这使我相信L_TRAIL
退出条件要么从未满足(不太可能),要么从未设置。我知道 bool, exitLong
, 设置为 True 并且该行应该正在执行。
我可以通过在一次调用中设置追踪止损和止损来完全避免这个问题strategy.exit
,但是看到屏幕上打印的L_STOP或L_TRAIL来判断导致交易退出的原因是非常有帮助的。当条件满足时,仅打印订单的 ID,因此只需一次调用,它只会是L_STOP,例如,它不会提供有关退出触发器的太多信息。
任何和所有的反馈都是有帮助的!如有必要,我还可以包含图表的屏幕截图。