Как запустить сделку, когда цена касается канала? - PullRequest
1 голос
/ 13 мая 2019

Я новичок в Pine и пытаюсь запустить длинную сделку, когда цены касаются верхней полосы канала Дончиана и наоборот.

В настоящее время, основываясь на моем текущем коде, я могу видетьчто цены коснулись верхней полосы, но это не вызвало длинную сделку намного позже (см. рисунок).

chart

Я пыталсяуменьшить период Дончиана (по умолчанию 20), но он все равно не вызывает сигнал.

Вот код, который я использовал:


length = input(20, minval=1)
lower = lowest(length)
upper = highest(length)
basis = avg(upper, lower)

// 4. Long trading conditions
enterLong = upTrend and (close >= upper) or (high >= upper) 
exitLong = (low <= lower) or (close <= basis)

// 5. Short trading conditions
enterShort = downTrend and (close <= lower) or (low <= lower)
exitShort = (high >= upper) or (close >= basis)

// 6. Submit entry orders
if (enterLong)
    strategy.entry(id="OL", long=true, qty=posSize)

if (enterShort)
    strategy.entry(id="OS", long=false, qty=posSize)

// 7. Submit exit orders
strategy.close(id="OL", when=exitLong)
strategy.close(id="OS", when=exitShort)

Есть ли способ, которым я могуулучшить его?

Заранее спасибо!

1 Ответ

0 голосов
/ 13 мая 2019

В вашей логике есть проблема:

enterLong = upTrend and (close >= upper) or (high >= upper) 

оценивается как false, если upTrend and close < upper or high >= upper

изменить на

enterLong = upTrend and high >= upper
enterShort = downTrend and low <= lower
...