Управление рисками: если уже давно, то не размещайте новый заказ - PullRequest
0 голосов
/ 14 октября 2019

Если флаг уже указывает на длину, не должно быть нового флага, указывающего на длину. Если флаг не указывает на длинную строку, вычислите выражение

longCondition = if (strategy.long) ? false: (rsi<30) and (close>moving_avg)

shortCondition = if (strategy.short) ? false: (rsi>70) and (close<moving_avg)

Сценарий обработки ...

строка 30: несоответствующий вход «shortCondition», ожидающий «конец строки без продолжения строки»

1 Ответ

0 голосов
/ 15 октября 2019

Я предполагаю, что это показатель, а не стратегия. Потому что вы можете настроить, сколько записей вы хотите иметь в одном направлении в стратегии с параметром pyramiding. По умолчанию 0, поэтому, если это стратегия, и вы не изменили параметр пирамиды, это не должно быть проблемой.

Для индикаторов вы можете использовать переменную, подобную этой:

//@version=4
study("My Script", overlay=true)

var isLong = false
var isShort = false

rsi = rsi(close, 14)
moving_avg = ema(close, 9)

buySignal = not isLong and (rsi<50) and (close>moving_avg)    // Buy only if we are not already long
sellSignal = not isShort and (rsi>50) and (close<moving_avg)  // Sell only if we are not already short

if buySignal
    isLong := true
    isShort := false

if sellSignal
    isLong := false
    isShort := true

plotshape(series=buySignal, title="BUY", text="BUY", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(series=sellSignal, title="SELL", text="SELL", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

enter image description here

...