Pinescript - EMA cross & Stochasti c cross - PullRequest
1 голос
/ 13 марта 2020

Я пытаюсь написать код в Pinescript, когда 9 EMA пересекает 20 EMA, чтобы показать длинную стратегию. И наоборот, я хотел бы показать короткую стратегию, когда 20 EMA пересекает 9 EMA. Мне кажется, это работает нормально.

Когда у меня возникают проблемы, это показывать как вторая длинная стратегия, когда стохастический c RSI показывает длинную позицию, но я хочу, чтобы утверждение было истинным только в том случае, если 9 ЕМА пересекла 20 ЕМА.

Вот мой код:

    //@version=2
strategy("Isaac Signals2", overlay=true)

//ema
ema3 = ema(close,9)
ema4 = ema(close,20)
long_ema = crossover(ema3,ema4)
short_ema = crossover(ema4,ema3)

//stochrsi
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

data = (60-k[1])/2
data2 = (k[1]-40)/2

long_stoch = k[1] >= d[1] and k[2] <= d[2] and k <= 60 and k >= 10
short_stoch = k[1] <= d[1] and k[2] >= d[2] and k >= 40 and k <= 95

//entries
if (long_ema) 
    strategy.entry("buy", strategy.long)
**if (long_ema and long_stoch)
    strategy.entry("buy+1", strategy.long)**
if (short_ema) 
    strategy.entry("sell", strategy.short)

Там, где я выделен жирным шрифтом, я и борюсь. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 16 марта 2020

Может быть, это может помочь

//@version=2
strategy("Isaac Signals2", overlay=true)

//ema
ema3 = ema(close,9)
ema4 = ema(close,20)
long_ema = crossover(ema3,ema4)
short_ema = crossover(ema4,ema3)

//stochrsi
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

data = (60-k[1])/2
data2 = (k[1]-40)/2

long_stoch = k[1] >= d[1] and k[2] <= d[2] and k <= 60 and k >= 10
short_stoch = k[1] <= d[1] and k[2] >= d[2] and k >= 40 and k <= 95

//entries
if (long_ema) 
    strategy.entry("buy", strategy.long)
if (ema3 > ema4 and long_stoch) // ema3 > ema4 means that crossover was already and uptrend is continuing 
    strategy.entry("buy+1", strategy.long)
if (short_ema) 
    strategy.entry("sell", strategy.short)
...