Tradingview | strategy.exit() с отдельными выходами

#pine-script

#сценарий pine

Вопрос:

У меня проблема с этим кодом:

 strategy.entry("LONG", strategy.long, alert_message='{"action":"order","side":"buy","price":"' tostring(close) '"}')
strategy.exit("STOP", "LONG", stop=close * (1 - stop), alert_message='{"action":"close","side":"sell"}')
strategy.exit("PRFT", "LONG", limit=close * (1   prft), alert_message='{"action":"profit","side":"sell"}')
  

* убыток / прибыль имеют ту же проблему остановки / ограничения.

Работает только первый выход, в данном случае только «СТОП». Мне нужны эти два отдельных для отправки в webhook.

Я попытался использовать strategy.order(), чтобы сделать свой «PRFT», однако результат в обратном тестировании сильно отличается.

Я не могу использовать alertcondition(), потому что он запускается только после закрытия свечи.

Кто-нибудь может мне помочь?

Ответ №1:

Может быть, это то, что вы найдете:

 // @version=4
strategy("strategy")

stop = 0.05
prft = 0.05

strategy.entry("LONG", strategy.long, alert_message='{"action":"order","side":"buy","price":"' tostring(close) '"}')
if strategy.position_size != 0
    strategy.order("STOP", false, qty = strategy.position_size, oca_name = "exit long", oca_type = strategy.oca.reduce, stop=strategy.position_avg_price * (1 - stop), alert_message='{"action":"close","side":"sell"}')
    strategy.order("PRFT", false, qty = strategy.position_size, oca_name = "exit long", oca_type = strategy.oca.reduce, limit=strategy.position_avg_price * (1   prft), alert_message='{"action":"profit","side":"sell"}')
else
    strategy.cancel("STOP")
    strategy.cancel("PRFT")
  

Ответ №2:

Я пытался сделать то же самое. Один выход со стопом и прибылью, но у меня ничего не получилось. Я пытался сделать это в двух отдельных ордерах, как и вы, один для остановки и один для прибыли. Это все еще не работает, я думаю, что это ОШИБКА в методе / функции pinescript strategy.exit(). Мой код понятен, и я проверил значения прибыли и стоп-лосса, и все в порядке.

Спасибо Андрею за альтернативное решение.