Как работает «для» на языке Pine (TradingView) и как вызывать MACD в l oop? - PullRequest
0 голосов
/ 15 апреля 2020

Пожалуйста, научите меня, как использовать для l oop на языке Pine (скрипты для диаграмм TradingView). Я сделал тестовый индикатор (код ниже), который отображает MACD. На зеленой диаграмме я просто отображаю MACD на верхнем уровне скрипта. Я получаю то же значение MACD на красной диаграмме, но оно берется внутри 'for' l oop. Посмотрите, как это работает:

  • l oop увеличивает значение n с 0 до 20
  • , когда n равно 0, скрипт принимает значение MACD и записывает его в ячейка val
  • , тогда есть еще 20 пустых шагов.
  • в конце сценарий отображает val на экране, завершая красную диаграмму

Логически, Зеленая и красная графика должны идеально совпадать, так как они отображают одинаковые значения. Но они разные !!! Помогите понять ошибку. Спасибо.

//@version=4
study("My Script")

[_,_,currMacd] = macd(close[0], 12, 26, 9)
plot(currMacd, style=plot.style_histogram, color=color.green)

//
float val = 0.0
for int n = 0 to 20
    [_,_,tempMacd] = macd(close[n], 12, 26, 9)
    if n == 0
        val := tempMacd

plot(val, style=plot.style_histogram, color=color.red)

Screenshot of TradingView

1 Ответ

0 голосов
/ 16 апреля 2020

Не слишком уверен, что вы пытаетесь достичь sh здесь, но ваш MACD уже рассчитан на прошлых барах, поэтому вам нужно только сослаться на прошлые значения:

//@version=4
study("My Script")

[_,_,currMacd] = macd(close, 12, 26, 9)
plot(currMacd, style=plot.style_histogram, color=color.orange, linewidth = 8, transp = 60)

float val = 0.0
for int n = 0 to 20
    val := currMacd[n]
    if n == 0
        break

plot(val, style=plot.style_histogram, color=color.red)
...