Выход из тестера стратегий всегда возвращается

У меня есть приведенный ниже код в тестере стратегий, и когда он автоматически выходит во время тейк-профита на 300, он всегда входит снова. Как мне остановить его от повторного входа, когда срабатывает выход

isShort=false
isLong=false

if (goLong)
    if(isShort==false)
        strategy.entry("Long", strategy.long,100000,when=isShort?false:true)
        strategy.exit("b1","Long",profit=300)
        isShort:=true
        isLong:=false

else
    if(isLong==false)
        strategy.entry("Short", strategy.short,100000,when=isLong?false:true)
        strategy.exit("b2","Short",profit=300)
        isShort:=false
        isLong:=true

person JJJ    schedule 23.03.2019    source источник


Ответы (1)


Вам нужно использовать Оператор обращения к истории [], когда вы хотите получить доступ к предыдущему значению переменной.

Вы можете подумать, что для каждого нового бара в pine-script ваш код будет выполняться заново. Итак, что происходит, вы каждый раз устанавливаете isShort и isLong в false в начале вашего кода. Таким образом, не имеет значения, измените ли вы их позже в коде. Для следующего бара ваш код выполняется повторно, и isShort и isLong получают значение false в самом начале.

Что вам нужно сделать, так это просто переназначить их старые значения этим переменным после объявления. Таким образом, вы сначала объявляете свои переменные, а затем присваиваете им их последние значения из предыдущей панели/выполнения.

isShort=false
isLong=false

isShort := nz(isShort[1], false)
isLong := nz(isLong[1], false)
person Baris Yakut    schedule 25.03.2019