Как использовать вход в функцию безопасности (индикатор Multi TF) на pinescript?

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

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

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

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

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

Я преодолел свои трудности, создав 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)

person Arnaud Deblander    schedule 07.01.2020    source источник


Ответы (1)


Включены ваши входные запросы для разрешения. По умолчанию должно быть значение, которое отображается в раскрывающемся списке, поэтому изменено "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)
person PineCoders-LucF    schedule 07.01.2020