Bull=High-EMA(Close,Period)
Bear=Low-EMA(Close,Period)
Исходное (оригинальное) отображение является не удобным, т.к. индикатор разнесен на две области, что не позволяет быстро сравнивать поведение двух линий.
Специфика модифицированного отображения индикатора:
Если Bull > 0 и Bear > 0, то отображается зеленая гистограмма от Bull до Bear.
Если Bull < 0 и Bear < 0, то отображается красная гистограмма от Bull до Bear.
Иначе отображается и зеленая и красная часть гистограммы.
Автор: Александр Элдер (Alexandr Elder)
Первоисточник: «Основы биржевой торговли. Как играть и выигрывать на бирже.»
Пример:
Исходный текст:
Код: Выделить всё
function Initialize()
{
IndicatorName = "ElderRay";
AddInput("Input", Inputs.Candle);
AddParameter("Period", 21);
AddSeries("Bear", DrawAs.Custom, Color.Red, AxisType.ZeroBased, true, Axes.New);
AddSeries("Bull", DrawAs.Custom, Color.Green, AxisType.ZeroBased, true, Axes.New);
AddSeries("Zero", DrawAs.Line, Color.Gray, true, Axes.New);
AddGlobalVariable("E", Types.Double, 0);
}
function Evaluate()
{
// AlfaDirect. 2015. OX
// Ray (Ray) – Лучи А.Элдера
if (CurrentIndex < 1)
{
E = Input.Close[0];
Bear = 0.0;
Bull = 0.0;
Zero = 0.0;
}
else
{
E = EMA(Input.Close, Period)[0];
Bear = Input.Low[0] - E;
Bull = Input.High[0] - E;
Zero = 0.0;
if (Bull > 0 && Bear > 0 )
{
Bull.DrawHistogram(Bear);
//Bear.DrawHistogram(Zero, Color.Gray, 100);
}
else if (Bull < 0 && Bear < 0 )
{
Bear.DrawHistogram(Bull);
//Bull.DrawHistogram(Zero, Color.Gray, 100);
}
else
{
Bear.DrawHistogram(Zero);
Bull.DrawHistogram(Zero);
}
}
}