Библиотека польльских индикаторовзовате. БИБЛИОТЕКА ПОЛЬЗОВАТЕЛЬСКИХ ИНДИКАТОРОВ АЛЬФА-ДИРЕКТ4.0. Инструкция по созданию и импорту пользовательских индикаторов 4 библиотека пользовательских индикаторов 5
![]()
|
ОСЦИЛЛЯТОРЫ НОРМИРОВАННЫЕSO (Stochastic Oscillator) – СТОХАСТИЧЕСКИЙ осцилляторСтохастический осциллятор – является еще одним ярким представителем нормированных осцилляторов, т.е. его значения колеблются в диапазоне от 0 до 100. Индикатор показывает положение и направление движения текущей цены относительно максимума и минимума за выбранный период. Формула его расчета следующая. ![]() Где LLt – минимальный минимум за N1 периодов (минимальное значение цены), HHt – максимальный максимум за N1 периодов (максимальное значение цены). Сигнальная линия строится как простое среднее от основной линии стохастика. Signal = SMA(SO, N3). N1 – период поиска максимального и минимального значения, N2 – период сглаживания быстрого стохастика, N3 – период сигнальной линии Сигналы Лонг – индикатор пересекает вниз уровень «80»; шорт – индикатор пересекает вверх уровень «20». SO пересекает сигнальную линию вверх или вниз. Анализ дивергенций между экстремумами индикатора MFI и ценой. ![]() Автор: Джордж Лэйн (George Lane). Источник: Стивен Б. Акелис, Технический анализ от А до Я. Код Альфа-Директ function Initialize() { IndicatorName = "SO"; AddInput("Input", Inputs.Candle); PriceStudy = false; AddSeries("sK", DrawAs.Line, Color.White, false); AddSeries("sD", DrawAs.Line, Color.Green); AddSeries("Signal", DrawAs.Line, Color.Gray); AddParameter("nK", 5); AddParameter("nD", 3); AddParameter("nSignal", 3); AddLevel(20.0 , Color.Gray, "sD"); AddLevel(80.0 , Color.Gray, "sD"); } function Evaluate() { // AlfaDirect. 2015. OX // SO - Совпадает со встроенным SO AlfaDirect var i = 0; var eMax = 0.0; var eMin = 100000000.0; if (CurrentIndex < (nK + nD + nSignal)) { sK = 0.0; sD = 0.0; Signal = 0.0; } else { for (i=0; i < nK; i++) { if (Input.High[-i] > eMax) eMax = Input.High[-i]; if (Input.Low[-i] < eMin) eMin = Input.Low[-i]; } var a = (eMax - eMin); if (a > 0.0) sK = (Input.Close[0] - eMin) / (eMax - eMin) * 100.0; else sK = 100.0; sD = sD[-1] - (sK[-nD] - sK[0])/nD; Signal = Signal[-1] - (sD[-nSignal] - sD[0])/nSignal; } } RWilliams (%R) – осциллятор процентного диапазона Вильямса%R – является нормированным осциллятором и совпадает с линией %K SO (Stochastic Oscillator) со смещение на -1, т.е. отличается только диапазоном отображения [0; -100]. Поэтому является частным случаем SO (Stochastic Oscillator) и не рассматривается. ![]() Автор: Ларри Вильямс (Larry Williams) Источник: How I made one million dollars (https://ru.wikipedia.org/wiki/Williams_%25R) Код Альфа-Директ function Initialize() { IndicatorName = "RWilliams"; PriceStudy = false; AddInput("Input", Inputs.Candle); AddSeries("RWilliams", DrawAs.Line, Color.White); AddParameter("nK", 5); AddLevel(-20.0 , Color.Gray, "RWilliams"); AddLevel(-80.0 , Color.Gray, "RWilliams"); } function Evaluate() { // AlfaDirect. 2015. OX // %R () - Совпадает со встроенным RWilliams AlfaDirect if (CurrentIndex < (nK)) { RWilliams = 0.0; } else { var eMax = Input.High[0]; var eMin = Input.Low[0]; for (int i=1; i < nK; i++) { if (Input.High[-i] > eMax) eMax = Input.High[-i]; if (Input.Low[-i] < eMin) eMin = Input.Low[-i]; } double a = (eMax - eMin); if (a > 0.0) RWilliams = -100.0*(eMax - Input.Close[0]) / a; else RWilliams = -100.0; } } |