1

到目前为止,感谢大家的帮助。到目前为止,我已经在 pinescript 中编写了许多不同的策略,并且我已经阅读了 pinescript 手册和许多谷歌文章,但我仍然对 pinescript 中的追踪止损如何工作感到困惑。

例如,对于 strategy.exit,我有一个 trail_price,它标记了追踪止损激活的入口。然而,我所有的回测都表明,追踪止损位于特定蜡烛条的高点,即使 trail_offset 没有被击中。是否仅仅是因为 tradeview 回测假设在一根蜡烛条中达到最大利润,即使随后的蜡烛条继续朝着您的目标方向前进?

例如,这是我的 strategy.exit 的一个示例。Strategy.exit("long_TP", "long", trail_price = entry_price + ATR, trail_offset = ATR, stop= entry_price - ATR)。我注意到我将赚取 2 到 3 倍的 trail_offset(在这种情况下基于 ATR,即如果 ATR 为 50 点,我将赚取 100 甚至 150 点),只要在该特定收盘前获利蜡烛吧。任何后续的蜡烛柱,即使做多,即使 trail_offset 止损未达到,也不计算在内(即,即使我的 ATR 是 50 点,当蜡烛柱关闭时,我可能会赚取 70 点,即使随后的蜡烛条继续做多)。

我的假设是否不正确(即我的代码),或者这仅仅是回测的限制,因为程序无法知道蜡烛条内部发生了什么,而只知道最高价、最低价、开盘价和收盘价?但是,我确实对此感到怀疑,因为有时即使在蜡烛条的低点也没有达到 trail_offset,所以理论上利润应该继续累积,而不是在蜡烛条关闭后止损。

编辑:我添加了更多信息以进行澄清-这是带有一些解释的示例代码:

If condition == true
long = strategy.position_size[0] > strategy.position_size[1]  //go long if there is order entry
entry_price_long = valuewhen(long, open, 0) //entry price is the opening price, based off the closing price of the previous candle if condition is fulfilled
atr_long = valuewhen(long, atr, 0) //stop loss and 1st take profit based off the number of pips depending on average true range, period 14
long_TP = entry_price_long + atr_long //1st take profit limit
long_SL = entry_price_long - atr_long //stop loss

strategy.entry("long", strategy.long, when=go_long, comment="long", qty=positionSize) //enter a long position when condition fulfilled
if strategy.position_size[0] > strategy.position_size[1]
   strategy.exit("long_TP", "long", trail_price=long_TP, trail_offset=atr_long, stop=long_SL) //this is where I am confused. 

我的 strategy.exit 声明如果达到初始止损,则退出多头头寸。但是,如果市场如预期那样做多,则在达到第一个止盈限制时激活追踪止损,由 trail_price 定义。trail_offset(以点数为单位)基于 ATR。因此,如果达到 trail_price,则应通过追踪止损持续获利。但实际上发生的情况是,利润被带到我进入交易的特定蜡烛的最高点。我附上了一张图片供参考。参考图片在图片中,我们看到第一个利润限制已达到,因此激活了追踪。ATR 约为 150 点,因此从入场价到获利限制的距离约为 150 点。追踪止损设置为 ATR,因此一旦达到第一个利润限制(利润 = 150 点),理论上交易应该继续获利,直到触及追踪止损。但在图片中,我们看到实际上,一旦触及蜡烛的高点,我的头寸就会退出,尽管持续上升趋势(最终利润 = 181 点),但没有获得任何进一步的利润。为什么是这样?

再次感谢您的帮助。托马斯

4

0 回答 0