Начинающий Pine Script, сюжетная форма

Ищете обходной путь, не можете использовать plotshape таким образом, потому что он не работает в локальной области.

//@version=3
study("MA test ", overlay=true)
FastMA = sma(close, 9)
SlowMA = sma(close, 15)
Diff = FastMA - SlowMA
if Diff > 0
    plotshape(Diff, style=shape.arrowup, location=location.belowbar, color=green)

person sunspore    schedule 18.10.2018    source источник
comment
Что именно ты пытаешься сделать?   -  person Baris Yakut    schedule 18.10.2018
comment
Я хочу нарисовать стрелку под каждым баром, где быстрая МА выше медленной МА. Я собираюсь развить это, но сначала мне нужно выяснить, как использовать функцию plotshape.   -  person sunspore    schedule 18.10.2018


Ответы (1)


Вы можете напрямую применить ваше условие к аргументу series функции plot() (также к аргументу color).

Я также добавил еще один plotshape(), который использует crossover() в своем series, и он отображает треугольники только тогда, когда FastMA пересекает SlowMA (оранжевый треугольник). Я подумал, что это может пригодиться вам в будущем :)

//@version=3
study("MA test ", overlay=true)
FastMA = sma(close, 9)
SlowMA = sma(close, 15)
Diff = FastMA - SlowMA

plot(series=FastMA, title="FastMA", color=color.green, linewidth=3)
plot(series=SlowMA, title="SlowMA", color=color.red, linewidth=3)
bgcolor(color=Diff > 0 ? green : red)
plotshape(series=Diff > 0, style=shape.arrowup, location=location.belowbar, color=color.green, size=size.normal)
plotshape(series=crossover(FastMA, SlowMA), style=shape.triangledown, location=location.abovebar, color=color.orange, size=size.normal)

введите здесь описание изображения

person Baris Yakut    schedule 18.10.2018
comment
Большое спасибо! Это чрезвычайно полезный ответ. Я не понимал, что вы можете помещать условия непосредственно в сюжетную функцию. Это решает много проблем. Я ценю, что вы нашли время. - person sunspore; 20.10.2018
comment
Продолжая это, в конечном итоге я хочу выделить области, в которых две скользящие средние расходятся, а затем сходятся. Как вы думаете, было бы лучше закодировать это как функцию или как отдельные вычисления в глобальной области видимости? Я работал над функцией для инкапсуляции всех вычислений, но как новичок я не уверен, что это лучший способ. - person sunspore; 20.10.2018
comment
Если мой ответ помог вам, не могли бы вы принять его как ответ, нажав на галочку рядом с моим ответом? Возвращаясь к вашему вопросу, если вам нужно снова и снова вычислять одно и то же с разными параметрами, вам обязательно следует использовать функцию. Если вы собираетесь использовать результат только один раз, глобальное объявление подойдет. - person Baris Yakut; 20.10.2018