Честно говоря, как сложно реализовать параметры без проблем с серверной частью на языке сценариев. Я получаю следующую ошибку «Невозможно использовать изменяемую переменную в качестве аргумента функции безопасности» только потому, что я продолжаю передавать переменную, которая была установлена в операторе if. Пробовал косвенную переменную, косвенную функцию, всевозможные перестановки, даже некоторые из них, насколько я знаю, преуспели в этом, но проблема все еще сохраняется.
Мне нужен чистый способ закодировать это без использования троичных операций или обходных функций. Тернарные операции и работа с функциями предлагаются в дублирующем вопросе, но не отвечают на то, что я ищу. Любой скриптовый или объектно-ориентированный язык программирования имеет возможность использовать операторы if для обработки параметров, а этот язык - нет.
// @version=4
study("multi_ma_pos", "multi_ma", overlay=true)
get_period(interval_input) =>
period = ""
if (timeframe.isintraday)
interval = interval_input > timeframe.multiplier ? interval_input : timeframe.multiplier
period := tostring(interval)
else
period := timeframe.period
period
ma_opt = input(title="ma_opt", defval="13/34", options=["23/75/616", "13/34"])
ma_interval = input(title="ma_interval", type=input.integer, defval=240)
// Declare variables
shrt_term = close
midt_term = close
long_term = close
is_opt_selected = false
if (ma_opt == "23/75/616" and not is_opt_selected)
shrt_term := sma(close, 23)
midt_term := sma(close, 65)
long_term := sma(close, 137)
is_opt_selected := true
if (ma_opt == "13/34" and not is_opt_selected)
shrt_term := ema(close, 13)
midt_term := ema(close, 34)
long_term := sma(close, 34)
is_opt_selected := true
shrt_term_out = security(syminfo.tickerid, get_period(ma_interval), shrt_term)
midt_term_out = security(syminfo.tickerid, get_period(ma_interval), midt_term)
long_term_out = security(syminfo.tickerid, get_period(ma_interval), long_term)
plot(shrt_term_out, title="shrt_term", color=#ffa726, linewidth=2)
plot(midt_term_out, title="midt_term", color=#ffa726, linewidth=4)
plot(long_term_out, title="long_term", color=#e65100, linewidth=4)