Версия 1
Использование функций для распределения операторов if
по нескольким группам.
Версия 2
[2020.04.28 12:34 - LucF]
Используется эксклюзивная if
структура, которая будет быстрее. Он также предоставляет механизм для использования нескольких троичных операторов в функции, чтобы вы могли иметь общее количество тестов, превышающих ограничение троичного.
//@version=4
study("PineTest", "", true)
srcHi = 0.00
srcLo = 0.00
f_Hi(_previousValue) =>
float _result = na
// Should be able to use ~500 conditions here.
_result :=
syminfo.ticker == "AMZN" ? 2000.00 :
syminfo.ticker == "SPY" ? 300.00 :
syminfo.ticker == "AAPL" ? 301.00 :
syminfo.ticker == "MSFT" ? 210.00 : na
// Should be able to use another ~500 conditions here.
_result :=
not na(_result) ? _result :
syminfo.ticker == "TDY" ? 3000.00 :
syminfo.ticker == "DB" ? 400.00 :
syminfo.ticker == "TSLA" ? 401.00 :
syminfo.ticker == "AMD" ? 310.00 : na
na(_result) ? _previousValue : _result
srcHi := f_Hi(srcHi)
plot(srcHi)
Функция также разработана таким образом, чтобы при возникновении ограничений внутри функции Вы могли бы умножить количество функций, разделив больше тестов в каждой, и сделать к ним последовательные вызовы, используя что-то вроде:
srcHi := f_Hi1(srcHi)
srcHi := f_Hi2(srcHi)
Вам потребуется c, необходимо скопировать функциональность для srcLo
.