Осцилляторы волатильности > STD (Standard Deviation) – стандартное отклонение

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

STD (Standard Deviation) – стандартное отклонение

Непрочитанное сообщение evge » 08 фев 2016, 09:28

Индикатор STD в основном используется как вспомогательный для оценки текущей волатильности на рынке. Применяется в некоторых случаях при вычислении уровня стопа.

Сигналы

Если цена отклоняется от скользящей средней более чем на 2 значения индикатора STD, то предполагается, что цена начала не случайное движение, т.е. продолжит движение.

Пример:

STD-00.png
STD-00.png (40.83 КБ) 23454 просмотра


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

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

function Initialize()
{
IndicatorName = "STD";   
PriceStudy = false;   
AddInput("Input", Inputs.Price);   
AddSeries("STD", DrawAs.Line, Color.Red);   
AddParameter("Period", 20);
AddLevel(0, Color.Gray, "STD");
AddGlobalVariable("SUM", Types.Double, 0.0);
}

function Evaluate()
{
// AlfaDirect. 2015. OX
// STD (Standard Deviation)
  if ( CurrentIndex < Period )
  {
     SUM = SUM + Input[0];     
     var sma = SUM / (CurrentIndex + 1);     
     STD = 0.0;
  }
  else
  {
     SUM = SUM + Input[0] - Input[0-Period];     
     var sma = SUM/ Period;   

     var sigma = 0.0;
     for (var i = 0; i < Period; i++ )
         sigma = sigma + Math.Pow(Input[-i]-sma, 2.0);
     STD = Math.Sqrt(sigma/Period);
  }
}
никогда такого не было и вот опять

Prohar
Сообщения: 19
Зарегистрирован: 03 фев 2020, 15:10
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Re: STD (Standard Deviation) – стандартное отклонение

Непрочитанное сообщение Prohar » 24 фев 2020, 00:08

В силу линейности математического ожидания для дисперсии справедлива формула
D(x) = M(x^2) - (M(x))^2
благодаря этому можно выкинуть из скрипта тормозящий цикл

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

function Initialize()
{
    IndicatorName = "i_STD";
    PriceStudy = false;
    AddInput("Input", Inputs.Price);
    AddSeries("STD", DrawAs.Line, Color.Red);
    AddParameter("Period", 20);
    AddLevel(0, Color.Gray, "STD");
    AddGlobalVariable("SUM", Types.Double, 0.0);
    AddGlobalVariable("SUM2", Types.Double, 0.0);
}

function Evaluate()
{
    // AlfaDirect. 2015. OX
    // STD (Standard Deviation)
    // prohar 20200223 no for
    if (CurrentIndex < Period)
    {
        SUM = SUM + Input[0];
        SUM2 = SUM2 + Input[0] * Input[0];
        var sma = SUM / (CurrentIndex + 1);
        var sma2 = SUM2 / (CurrentIndex + 1);
        STD = 0.0;
    }
    else
    {
        SUM = SUM + Input[0] - Input[0 - Period];
        SUM2 = SUM2 + Input[0]*Input[0] - Input[0 - Period]*Input[0 - Period];
        var sma = SUM / Period;
        var sma2 = SUM2 / Period;

        var sigma = sma2 - sma * sma;
       // for (var i = 0; i < Period; i++)
       //     sigma = sigma + Math.Pow(Input[-i] - sma, 2.0);
        STD = Math.Sqrt(sigma);
    }
}




Вернуться в «Осцилляторы волатильности»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость