Скрипт Pine - Как запрограммировать несколько тейк-профитов - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь запрограммировать 3 цели тейк-профита в стратегии Pine.

В приведенном ниже коде, когда срабатывает условие идти в длинную позицию, открывается запись с количеством 100. Это работаетхорошо.Значения для valueTakeProfit1, 2 и 3 также являются правильными.Но как только я помещаю их в стратегию. Exit (), они запускаются или не запускаются, или прибыль извлекается на неправильных уровнях.Значения для переменных ATR1 / 2 / 3percent не являются процентами, это просто сумма, взятая из 100, которые открываются с помощью стратегии .entry ().

if(longCondition or re_entryCondition)
    alertLine := 1
    strategy.entry(id="Long Entry", long=true, when=alertLine==1, qty=100)
    valueTakeProfit1 := close+ATR1*ma_function(tr(true), lengthATR)
    valueTakeProfit2 := close+ATR2*ma_function(tr(true), lengthATR)
    valueTakeProfit3 := close+ATR3*ma_function(tr(true), lengthATR)
    strategy.exit("Take Profit 1 Long", from_entry="Long Entry", limit=valueTakeProfit1, qty=ATR1percent)
    strategy.exit("Take Profit 2 Long", from_entry="Long Entry", limit=valueTakeProfit2, qty=ATR2percent)
    strategy.exit("Take Profit 3 Long", from_entry="Long Entry", limit=valueTakeProfit3, qty=ATR3percent)


//End long positions
if(longCloseCondition)
    strategy.close(id="Long Entry")

Может кто-нибудь помочь мне, как я должен определитьнесколько уровней тейк-профита?

1 Ответ

0 голосов
/ 28 июня 2019

Хорошо, я нашел ошибку.В начале сценария я объявлял переменные:

valueTakeProfit1 = 0.0
valueTakeProfit2 = 0.0
valueTakeProfit3 = 0.0

Перед оператором if я сбрасывал переменные в ноль:

valueTakeProfit1Short := 0.0
valueTakeProfit2Short := 0.0
valueTakeProfit3Short := 0.0

Объявляя переменные с ихправильное значение перед оператором if решило проблему:

valueTakeProfit1 = close +  (ATR1*ma_function(tr(true), lengthATR))
valueTakeProfit2 = close +  (ATR2*ma_function(tr(true), lengthATR))
valueTakeProfit3 = close + (ATR3*ma_function(tr(true), lengthATR))
...