Каталог файлов форума

Список вложений в сообщениях, оставленных на этой конференции.

Все файлы форума: 1233

Добавлено: evge » 08 фев 2016, 07:47

Тема: SO (Stochastic Oscillator) – стохастический осциллятор

Текст сообщения:

Стохастический осциллятор – является еще одним ярким представителем нормированных осцилляторов, т.е. его значения колеблются в диапазоне от 0 до 100. Индикатор показывает положение и направление движения текущей цены относительно максимума и минимума за выбранный период.

Сигнальная линия строится как простое среднее от основной линии стохастика.

Signal = SMA(SO, N3).

N1 – период поиска максимального и минимального значения, N2 – период сглаживания быстрого стохастика, N3 – период сигнальной линии

Сигналы

  • Шорт – индикатор пересекает вниз уровень «80»; лонг – индикатор пересекает вверх уровень «20».
  • SO пересекает сигнальную линию вверх или вниз.
  • Анализ дивергенций между экстремумами индикатора MFI и ценой.

Автор: Джордж Лэйн (George Lane).
Источник: Стивен Б. Акелис, Технический анализ от А до Я.

Пример:

SO-00.png
SO-00.png (42.28 КБ) 34921 просмотр


Исходный текст:

Код: Выделить всё

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;
 }
}


Индикатор является встроенным индикатором, поэтому создавать пользовательский индикатор не имеет смысла.