Close = (O+H+L+C)/4;
Open = (Open (предыдущего бара) + Close (предыдущего бара))/2;
High = максимальное значение из (H, Open, Close);
Low = минимальное значение из (L, Open, Close), где O, H, L, C – цены текущего бара (открытия, максимум, минимум, закрытия).
Свечи Heiken Ashi отображаю направление изменения цены с запаздыванием, которое происходит из-за того, что параметры свечи зависят от цен предыдущего бара. Однако в этом запаздывании и проявляется преимущество индикатора, которое позволяет отсекать лишние шумы.
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "HeikenAshi";
AddInput("Input", Inputs.Candle);
PriceStudy = true;
AddSeries("Open", DrawAs.Custom, Color.Gray);
AddSeries("High", DrawAs.Custom, Color.Gray);
AddSeries("Low", DrawAs.Custom, Color.Gray);
AddSeries("Close", DrawAs.Custom, Color.Gray);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// HeikenAshi Candles
if (CurrentIndex < 1)
{
Close = Input.Close[0];
Open = Input.Open[0];
High = Input.High[0];
Low = Input.Low[0];
}
else
{
Close = 0.25*(Input.Open[0] + Input.High[0] + Input.Low[0] + Input.Close[0]);
Open = 0.5*(Open[-1] + Close[-1]);
High = Math.Max(Math.Max(Open[0], Input.High[0]), Close[0]);
Low = Math.Min(Math.Min(Open[0], Input.Low[0]), Close[0]);
High.DrawVertical(Low, Color.Black, Line.Solid, 1);
if ( Close > Open)
Close.DrawHistogram(Open, Color.FromArgb(150, Color.Blue), Line.Solid, 1, Color.Blue, 100);
else
Close.DrawHistogram(Open, Color.FromArgb(150, Color.Magenta), Line.Solid, 1, Color.Magenta, 100);
}
}