TradingView Pine Script Стратегия множественного кроссовера - PullRequest
0 голосов
/ 28 сентября 2019

Я отчаянно ищу помощи в написании стратегии в трейдинге, где я пытаюсь создать перекрестные сигналы покупки и продажи на 3 разных мах, в частности, на 9 ema, 21 ema и 33 простых скользящих средних.То, что я пытаюсь сделать, это представить себе длинное условие, когда 9 ema пересекает выше 21 ema, а также иметь такое же длинное состояние, когда 21 ema пересекает выше 33 простого скользящего среднего.Я хочу, чтобы это работало как для длинных, так и для шортов - используя 9 и 21 в качестве «малого сигнала», в то время как 21 и 33 - в качестве «большого сигнала», и я не могу понять это ... это самый близкий яесть ниже, и это не будет работать правильно: / Пожалуйста, помогите, я буду Venmo / приложение наличными для ваших следующих 6 пакетов на меня !!!!

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("EMA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = security(tickerid, period, src)
ema1 = input(9, title="1st EMA Length")
type1 = input("EMA", "1st EMA Type", options=["SMA", "EMA"])

ema2 = input(21, title="2nd EMA Length")
type2 = input("EMA", "2nd EMA Type", options=["SMA", "EMA"])

sma3 = input(33, title="1st MA Length")
type3 = input("SMA", "2nd SMA type", options=["SMA", "EMA"])

price1 = if (type1 == "EMA")
ema(price, ema1)
else
sma(price, ema1)

price2 = if (type2 == "EMA")
sma(price, ema2)
else
ema(price, ema2)

price3 = if (type3 == "SMA")
sma(price, sma3)
else
ema(price, sma3)

//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st EMA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd EMA", color=yellow, linewidth=2, transp=0)
plot(series=price3, style=line, title="1st MA", color=orange, linewidth=2, transp=0)

longCondition = crossover(price1, price2) and crossover(price2, price3)
if (longCondition)
strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2) and crossover(price2, price3)
if (shortCondition)
strategy.entry("Short", strategy.short)

Сигналы не будут отображаться, но если вы удалите последнюю часть "и кроссовер" обоих условий, это сработает только для 9 и 21, но я хочу включить 21 и 33 простыекрест

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Пожалуйста, скопируйте код с пробелами / табуляцией в следующий раз, чтобы он не требовал переформатирования.Кроме того, не используйте тег [tradingiew-api] для вопросов, связанных с Pine, как указано в описании тега.

Вы использовали and в своих условиях, что означало, что оба скрещивания должны были произойти на одном и том жебар для условия, чтобы быть правдой.Также инвертируйте ваши ema / sma calcs для второй MA.

Всегда лучше напечатать маркер на ваших условиях, чтобы быть уверенным, что они происходят, когда вы ожидаете их тоже.

//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("EMA Crossover Strategy", overlay=true)
src = input(close, title="Source")

price = security(tickerid, period, src)
ema1 = input(9, title="1st EMA Length")
type1 = input("EMA", "1st EMA Type", options=["SMA", "EMA"])

ema2 = input(21, title="2nd EMA Length")
type2 = input("EMA", "2nd EMA Type", options=["SMA", "EMA"])

sma3 = input(33, title="3rd MA Length")
type3 = input("SMA", "3rd SMA type", options=["SMA", "EMA"])

price1 = if (type1 == "EMA")
    ema(price, ema1)
else
    sma(price, ema1)

price2 = if (type2 == "EMA")
    ema(price, ema2)
else
    sma(price, ema2)

price3 = if (type3 == "SMA")
    sma(price, sma3)
else
    ema(price, sma3)

//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st EMA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd EMA", color=yellow, linewidth=2, transp=0)
plot(series=price3, style=line, title="1st MA", color=orange, linewidth=2, transp=0)

longCondition = crossover(price1, price2) or crossover(price2, price3)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2) or crossover(price2, price3)
if (shortCondition)
    strategy.entry("Short", strategy.short)

plotchar(shortCondition, "shortCondition", "▼", location.abovebar, maroon, size = size.tiny)
plotchar(longCondition, "longCondition", "▲", location.belowbar, lime, size = size.tiny)

enter image description here

...