具有追踪止损功能的 Pinescript TradingView 回测策略

Pinescript TradingView Backtesting Strategies with Trailing Stop Function

我正在尝试使用追踪止损在 tradingview 中回测 "Long" 策略。例如,我希望能够以高于目标价格 2% 的目标价格、低于价格 1% 的止损以及一旦达到 2% 的目标价格便激活 1% 的追踪止损来开多单。请帮助,非常感谢。

到目前为止,我已经设法用固定目标(高于价格的百分比)和固定止损(低于价格的百分比)进行回测。

tp_inp = input(2, title='Take Profit %', type=float,step=.1)/100
sl_inp = input(1, title='Stop Loss %', type=float,step=.1)/100
trail_inp = input(1, title='Trailing %', type=float,step=.1)/100

stop_level = strategy.position_avg_price * (1 - sl_inp)
take_level = strategy.position_avg_price * (1 + tp_inp)
trail_level = strategy.position_avg_price * (1 - trail_inp)

strategy.entry("Long", true, when = buysignal == 1)

strategy.exit("Exit","Long", stop=stop_level, trail_price=take_level, trail_offset=trail_level)

我只是无法绕过我的脑袋来让追踪止损在回测中发挥作用。我只能用固定的止损来做。

只留下

strategy.exit("Long", stop=stop_level, trail_price=take_level, trail_offset=trail_level)

根据 pine 脚本参考 https://www.tradingview.com/pine-script-reference/v4/#fun_strategy{dot}exit,必须在刻度中指定 trail_offset。在您的代码中,为 trail_offset.

指定了价格

一个可能的解决方案是使用 syminfo.mintick 获取交易品种的最小分时报价并计算当前价格的 1% 有多少分时报价:

trail_offset = int(close * trail_inp / syminfo.mintick)

strategy.exit("Exit","Long", stop=stop_level, trail_price=take_level, trail_offset=trail_offset)