Как использовать вход в функции безопасности (индикатор Multi TF) на Pinescript? - PullRequest
2 голосов
/ 07 января 2020

Я пытался изменить индикатор, уже доступный на Tradingview.

Идея состояла в том, чтобы преобразовать WaveTrends в линейные индикаторы, которые меняют цвет при выполнении условия перепроданности или перекупленности. , Эти индикаторы являются волновыми трендами с другого таймфрейма.

У меня есть две проблемы с этим, я хочу использовать функцию ввода, чтобы иметь возможность изменять таймфрейм без необходимости делать это путем изменения кода.

Второй выпуск, Вы можете видеть 4 строки на изображении

  1. среднее короткое условие TF
  2. короткое условие longTF
  3. среднее длинное состояние TF
  4. длительное состояние.

Я обошел свои трудности, создав 2 строки для длинных и 2 строки для коротких, но я хотел бы объединить их только в 2 строки с 3 разными цветами: зеленый для состояния перепроданности, красный для состояния перекупленности и наконец серый между ними.

study("WTcheckMTF", shorttitle="WTCMTF")

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")

ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)

wt1 = tci
wt2 = sma(wt1,4)

//Mid and longer TF defining

long = input("D", "Interval used for long TF", type = resolution)
mid = input("360", "Interval used for mid TF", type = resolution)

**MidWT = security(tickerid, "360",wt2)
LongWT = security(tickerid, "720", wt2)**

//treshold MT LT

LWTLT = input(-53, "OS Threshold L")
LWTMT = input(-53, "OS Threshold M")
SWTLT = input(53, "OB Threshold L")
SWTMT = input(53, "OB Threshold M")

L1=1
M1=2
L2=3
M2=4

// Color for MT LT indicators

**lcolor1 = LongWT <= LWTLT ? lime : gray
mcolor1 = MidWT <= LWTMT ? lime : gray
lcolor2 = LongWT >= SWTLT ? red : gray
mcolor2 = MidWT >= SWTMT ? red : gray**

// plot

plot(L1, style=line,color=lcolor1,linewidth=25)
plot(M1, style=line,color=mcolor1,linewidth=25)
plot(L2, style=line,color=lcolor2,linewidth=25)
plot(M2, style=line,color=mcolor2,linewidth=25)

1 Ответ

2 голосов
/ 08 января 2020

Включены ваши входящие звонки для разрешения. Значением по умолчанию должно быть значение, которое отображается в раскрывающемся списке, поэтому изменилось "360" для "240".

Для цветов ваши условия для одной строки теперь объединены в одном выражении. Обратите внимание, как вы можете иметь несколько тройных условий, встроенных друг в друга. За ними труднее следовать, когда вы к ним не привыкли, но они очень удобны.

Не забудьте включить директиву компилятора в начале вашего скрипта при публикации кода, чтобы мы могли знать, какая версия Pine ваша Сценарий написан для.

//@version=3
study("WTcheckMTF", shorttitle="WTCMTF")

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")

ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)

wt1 = tci
wt2 = sma(wt1,4)

//Mid and longer TF defining

long = input("D", "Interval used for long TF", type = resolution)
mid = input("240", "Interval used for mid TF", type = resolution)

MidWT = security(tickerid, mid, wt2)
LongWT = security(tickerid, long, wt2)

//treshold MT LT

LWTLT = input(-53, "OS Threshold L")
LWTMT = input(-53, "OS Threshold M")
SWTLT = input(53, "OB Threshold L")
SWTMT = input(53, "OB Threshold M")

L1=1
M1=2
L2=3
M2=4

// Color for MT LT indicators

lcolor = LongWT <= LWTLT ? lime : LongWT >= SWTLT ? red : gray
mcolor = MidWT  <= LWTMT ? lime : MidWT  >= SWTMT ? red : gray

// plot

plot(L1, "L1", lcolor, 25)
plot(M1, "M1", mcolor, 25)
...