Сосновый скрипт тернарного оператора выдает ошибку - PullRequest
0 голосов
/ 13 февраля 2020

Почему defval=second работает, но defval=third не работает?

//@version=4 
study(title="Test") 

//STEP 1 - Get main symbol 
getmain = syminfo.ticker

//STEP 2 - Add second symbol input 
second = "EURUSD"
third = getmain == "EURUSD"?"GBPUSD" : getmain == "GBPUSD"?"EURUSD" : "BTCUSD"

sym = input(title="Symbol", type=input.symbol, defval=third)

//STEP 3 - plot
symbolClose = security(sym, timeframe.period, close)
plot(symbolClose, color=color.red)

По сути, я пытаюсь автоматически поменять оверлейный / второй график на указанную пару c на главном тикере.

Я получаю ошибку для defval=third:

line 16: Cannot call 'input' with arguments (title=literal string, type=const string, defval=string); available overloads: input(const bool, const string, const string, const bool, const string) => input bool; input(const integer, const string, const string, const integer, const integer, const bool, const integer, [const integer...], const string) => input integer; input(const float, const string, const string, const float, const float, const bool, const float, [const float...], const string) => input float; input(const string, const string, const string, const bool, [const string...], const string, const bool) => input string; input(series[float], const string, const string, const string) => series[float];
line 17: Undeclared identifier 'sym';
line 18: Undeclared identifier 'symbolClose'

Кроме того, у меня есть около 40 пар для работы, есть ли более эффективный метод для минимизировать все эти операторы if?

...