SO (Stochastic Oscillator) – стохастический осциллятор
Добавлено: 08 фев 2016, 07:47
				
				Стохастический осциллятор – является еще одним ярким представителем нормированных осцилляторов, т.е. его значения колеблются в диапазоне от 0 до 100. Индикатор показывает положение и направление движения текущей цены относительно максимума и минимума за выбранный период.
Сигнальная линия строится как простое среднее от основной линии стохастика.
Signal = SMA(SO, N3).
N1 – период поиска максимального и минимального значения, N2 – период сглаживания быстрого стохастика, N3 – период сигнальной линии
Сигналы
Автор: Джордж Лэйн (George Lane).
Источник: Стивен Б. Акелис, Технический анализ от А до Я.
Пример:
Исходный текст:
Индикатор является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.
			Сигнальная линия строится как простое среднее от основной линии стохастика.
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; 
 }
}
Индикатор является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.
