#pine-script
#pine-script
Вопрос:
У меня есть косметический вопрос относительно PineScript. Я пытаюсь понять, почему я не могу нарисовать непрерывную линию индикатора. Я делал это в прошлом со Stochs, и это работало без пробелов, но я не могу понять, почему это не сработает здесь. Вот минимальный пример.
study(title="Directional Movement Index", shorttitle="DMI", format=format.price, precision=4)
lensig = input(title="ADX Smoothing", defval=14, minval=1, maxval=50)
len = input(title="DI Length", defval=14, minval=1)
[diplus, diminus, adx] = dmi(len, lensig)
adxStronger = adx[1] <= adx
adxWeaker = adx[1] >= adx
plot(adxStronger ? adx : na, color=#2196f3, title="ADX Stronger", style=plot.style_linebr, linewidth=2)
plot(adxWeaker ? adx : na, color=#2196f3, title="ADX Weaker", style=plot.style_linebr, linewidth=1)
Этот код создает разрывы в строке ADX. Я думаю, потому что значения от одного бара к следующему не заканчиваются точно там, где они начинаются снова, и, следовательно, создают этот разрыв, но я видел, как это делают другие индикаторы, и мне интересно, как они это сделали. Должен ли я отказаться от идеи и просто один раз отобразить ADX обычным способом, а затем закрасить значения ADX, которые я хочу изменить?
Кроме того, есть ли способ каким-то образом «сгруппировать» два параметра ADX в меню внешнего вида, чтобы они отображались в группе, а не отдельно? Я не смог найти в документации об этом или в Kodify.
Спасибо.
Ответ №1:
Все время рисуйте, но делайте цвет условным:
//@version=4
study(title="Directional Movement Index", shorttitle="DMI", format=format.price, precision=4)
lensig = input(title="ADX Smoothing", defval=14, minval=1, maxval=50)
len = input(title="DI Length", defval=14, minval=1)
[diplus, diminus, adx] = dmi(len, lensig)
adxStronger = adx[1] <= adx
adxWeaker = adx[1] >= adx
plot(adx, color=adxStronger ? #2196f3 : na, title="ADX Stronger", linewidth=2)
plot(adx, color=adxWeaker ? #2196f3 : na, title="ADX Weaker", linewidth=1)
Комментарии:
1. Приятно! Я чувствую себя глупо из-за того, что мне не пришла в голову идея просто добавить условие к параметру цвета. Я полагаю, что столкнулся с проблемами, когда попробовал это с чем-то другим, может быть, именно поэтому я этого не делал. В любом случае. Работает как шарм. Группировку, кстати, можно выполнить, используя один график вместо двух:
plot(adx, color=adxStronger ? #0097a7 : #80deea, title="ADX Stronger", linewidth=1)
(хотя возможны разные ширины линий)2. Эй, np. Никто не видит все все время. И да, различные ширины линий являются единственным ограничением, делающим необходимыми два оператора.