Стратегии тестирования Pinescript TradingView на истории с функцией трейлинг-стопа

Я пытаюсь протестировать «Длинную» стратегию в TradingView, используя трейлинг-стопы. Например, я хочу иметь возможность открыть длинную позицию с целью на 2% выше цены, стоп-лоссом на 1% ниже цены и активацией трейлинг-стопа на 1%, как только он достигнет целевой цены на 2%. Пожалуйста, помогите, большое спасибо.

До сих пор мне удавалось тестировать с фиксированными целями (% выше цены) и фиксированными стопами (% ниже цены).

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)

Я просто не могу понять, как заставить работать трейлинг-стоп в бэктесте. Я просто могу сделать это с фиксированными стопами.


person Robert    schedule 01.08.2019    source источник


Ответы (2)


Согласно справочнику скриптов pine https://www.tradingview.com/pine-script-reference/v4/#fun_strategy%7Bdot%7Dexit, 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)
person ben_zen    schedule 05.05.2020

оставить только

strategy.exit("Long", stop=stop_level, trail_price=take_level, trail_offset=trail_level)
person mehdi rassif    schedule 04.02.2020
comment
Хотя этот фрагмент кода может решить вопрос, включение объяснения действительно помогает улучшить качество вашего поста. Помните, что вы отвечаете на вопрос для будущих читателей, и эти люди могут не знать причин вашего предложения кода. - person Alessandro Mandelli; 04.02.2020