Использование переменной стиля на графике - PullRequest
0 голосов
/ 04 мая 2018

Я просто хочу разрешить замену переменной на графике, но получаю сообщение об ошибке.

cr20_50up = cross(d1,d9) and d1 > d9
cr20style = cr20_50up ? 1 : 2
plot(d1, title='%K SMA20', color=cr20_50_color, transp=0,style=cr20style)

Но это не работает.

line 54: Cannot call `plot` with arguments (series, title=literal string, color=series[color], transp=literal integer, style=series[integer]); available overloads: plot(series, const string, series[color], integer, integer, bool, integer, float, series[integer], bool, series, const bool, const integer, string) => plot; plot(fun_arg__<arg_series_type>, const string, fun_arg__<arg_color_type>, integer, integer, bool, integer, float, series[integer], bool, series, const bool, const integer, string) => plot

Любые иды? Спасибо Скотт

1 Ответ

0 голосов
/ 31 июля 2018

Я просто хочу разрешить замену переменной на графике, но получаю сообщение об ошибке.

не может вызвать с аргументами ошибка , которую вы продолжаете получать с этим кодом, потому что один из аргументов plot() не в принятом формате.

Если мы посмотрим на функцию plot() , мы увидим, что она принимает следующие значения, каждое со своим собственным типом:

  • series (серия)
  • title (постоянная строка)
  • color (цвет)
  • linewidth (целое число)
  • style (целое число)
  • transp (целое число)
  • trackprice (bool)
  • histbase (с плавающей точкой)
  • offset (целое число)
  • join (bool)
  • editable (const bool)
  • show_last (const integer)

Теперь вот как ваш код вызывает plot():

cr20style = cr20_50up ? 1 : 2
plot(d1, title='%K SMA20', color=cr20_50_color, transp=0,style=cr20style)

Проблема в том, что здесь мы устанавливаем аргумент style не целым числом, а серией. Это потому, что cr20style установлен условно на 1 или 2. И хотя это правда, что это серия целых чисел, эта серия все еще отличается от обычного целого числа в TradingView Pine.

Это также, к сожалению, означает следующее: вы не можете установить стиль функции plot() условно.

Вероятно, лучший обходной путь для вашего кода - создать два графика, каждый со своим стилем. А затем отключить построение графиков на основе cr20style. Например:

plot(cr20style == 1 ? d1 : na, title='%K SMA20', 
     color=cr20_50_color, transp=0,style=1)
plot(cr20style == 2 ? d1 : na, title='%K SMA20', 
     color=cr20_50_color, transp=0,style=2)
...