Логика индикатора Chaikin Oscillator
Осциллятор Чайкина напоминает индикатор MACD, но взятый не от цен закрытия, а от индикатора A/D, который, в свою очередь, учитывает не только цену, но и объем.
Расчет индикатора можно записать следующим образом:
Chaikin Oscillator = ЕМАf(A/D) – EMAs(A/D), где:
• ЕМАf — быстрое ЕМА от индикатора A/D (обычно берется период 3),
• EMAs — медленное ЕМА от индикатора A/D (обычно берется период 10).
Стоит отметить, что индикатор A/D не носит в своем расчете модели усреднения, вследствие чего является синхронным с ценой, а не запаздывающим. В Осцилляторе Чайкина усреднение присутствует, но, несмотря на это, он не стал запаздывающим — подобно тому, как индикатор MACD дает сигналы чуть быстрее, чем просто одно скользящее среднее.
Код: Выделить всё
function Initialize()
{
IndicatorName = "CHO";
PriceStudy = false;
AddInput("Input", Inputs.Candle);
AddSeries("CO", DrawAs.Line, Color.Blue);
AddSeries("Zero", DrawAs.Line, Color.Black);
AddSeries("AD", DrawAs.Line, Color.Black, false);
AddSeries("EMAf", DrawAs.Line, Color.Black, false);
AddSeries("EMAs", DrawAs.Line, Color.Black, false);
AddGlobalVariable("Kf", Types.Double, 0.0);
AddGlobalVariable("Ks", Types.Double, 0.0);
AddParameter("Pfast", 3);
AddParameter("Pslow", 10);
}
function Evaluate()
{
// evge 18.07.2018 http://alfadirect4.ru
var CL = (Input.Close[0] - Input.Open[0]) * Input.Volume[0];
var Delta = (Input.High[0] - Input.Low[0]);
if (Delta == 0) CL = 0; else CL = CL / Delta;
if (CurrentIndex > 0)
{
AD = AD[-1] + CL;
EMAf = (1.0 - Kf) * EMAf[1] + Kf * AD[0];
EMAs = (1.0 - Ks) * EMAs[1] + Ks * AD[0];
}
else
{
AD = CL;
EMAs = AD[0];
EMAf = AD[0];
Kf = 2.0/(Pfast + 1.0);
Ks = 2.0/(Pslow + 1.0);
}
CO = EMAf - EMAs;
Zero = 0.0;
}
Скачать индикатор