По умолчанию свечные графики TradingView используют зеленые свечи для выделения баров, у которых цена закрытия выше цены открытия и красным цветом противоположные. Но как при помощи кода обнаружить эти красные и зеленые свечи? Давайте выясним.
Как определить какого цвета свеча: красная или зеленая?
Чтобы понять является ли бар зеленым или красным, мы сравниваем закрытие этого бара с его открытием.
- Переменная open возвращает цену открытия бара.
- Переменная close возвращает цену закрытия бара.
- Когда мы сравниваем эти две переменные друг с другом, мы понимаем какого цвета бар.
Код, который проверяет, зеленая ли свеча (закрытие выше открытия):
1 |
GreenBar = (close > open) |
Переменная GreenBar возвращает true всякий раз, когда цена закрытия бара больше цены открытия. Когда бар закрылся ниже или без изменений, переменная возвращает false.
Теперь мы можем определить зеленые свечи и использовать это знание в скриптах:
1 2 3 4 5 |
//@version=5 indicator(title="Green bar", overlay=true) GreenBar = (close > open) bgcolor(color=GreenBar ? color.yellow : na) |
Закрасим фон за зелеными свечами в желтый цвет:
Найдем красные свечи и пометим их:
1 2 3 4 5 |
//@version=5 indicator(title="Green bar", overlay=true) RedBar = (close < open) plotshape(series=RedBar, style=shape.diamond, color=color.navy, location=location.abovebar) |
Над красными свечами при помощи функции plotshape выведем ромбы синего цвета:
Найдем бары, у которых цена закрытия равна цене открытия (так называемые свечи доджи)
1 2 3 4 5 |
//@version=5 indicator(title="Green bar", overlay=true) doji= (close == open) bgcolor(color=doji ? color.new(color.fuchsia, transp=90) : na) |
Чаще всего нам не достаточно просто определить цвет свечи. Обычно мы ищем какие-то сочетания красных и зеленых свечей — паттерны.
Например, 2 идущие подряд красные или зеленые свечи можно найти следующим образом:
1 2 3 4 |
twoGreenBars = (close[1] > open[1]) and (close > open) <strong>или</strong> greenBar = (close > open) twoGreenBar = greenBar[1] and greenBar |
Поменяйте местами close и open и найдете 2 подряд красные свечи.
Как найти 3 подряд зеленые свечи:
1 2 3 4 5 |
threeGreenCandles = (close[2] > open[2]) and (close[1] > open[1]) and (close > open) <strong>или</strong> greenCandle = (close > open) threeGreenCandles = greenCandle[2] and greenCandle[1] and greenCandle |
Как найти закрытые красные и зеленые свечи в режиме реального времени?
Во время расчетов в реальном времени последний ценовой бар графика еще не закрылся. Если мы ищем зеленую свечу сравнивая цену открытия и закрытия в реальном времени этот код также срабатывает всякий раз, когда бар торгуется выше своего открытия.
Нам на помощь приходит переменная barstate.isconfirmed. Эта переменная возвращает true, когда бар закрывается. Когда бар еще не закрылся, возвращается false.
С помощью этой переменной мы можем убедиться, что наши текущие сравнения баров происходят только с закрытыми барами.
- ClosedGreenBar = barstate.isconfirmed and (close > open) — ищем закрытые зеленые бары на графике в реальном времени
- ClosedRedBar = barstate.isconfirmed and (close < open) — ищем закрытые красные бары на графике в реальном времени
- ClosedDojiBar = barstate.isconfirmed and (close = open) — ищем доджи в реальном времени
Заключение
При помощи встроенных переменных close и open у нас есть возможность узнать цену закрытия и открытия каждого бара.
Операторы сравнения и логические операторы помогают нам найти свечные паттерны (3 подряд красные свечи, 2 красные и 1 зеленую, доджи и тд).