Пользовательские индикаторы > BAWMA (Вid \ Ask WMA) - отклонение Bid\Ask от взвешенной скользящей средней

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

BAWMA (Вid \ Ask WMA) - отклонение Bid\Ask от взвешенной скользящей средней

Непрочитанное сообщение evge » 04 апр 2016, 12:45

Индикатор BAWMA строится на основе данных индикатора WMA и данных баланса VolumeAsk, VolumeBid свечей. Величина отклонения определяется как взвешенный ATR * % отклонения от баланса Bid и Ask.

Параметры

Period - период для WMA, ATR
nATR - количество значений ATR для расчета отклонения

Примеры работы

BAWMA-00.png
BAWMA-00.png (37.27 КБ) 9245 просмотров

BAWMA-01.png
BAWMA-01.png (39.58 КБ) 9245 просмотров


Исходный текст индикатора

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

function Initialize()
{
  IndicatorName = "BAWMA";   
  PriceStudy = true;   
  AddInput("Input", Inputs.Candle);   
  AddSeries("WMA", DrawAs.Line, Color.Black, false);   
  AddSeries("BWMA", DrawAs.Custom, Color.DarkSeaGreen);
  AddSeries("AWMA", DrawAs.Custom, Color.LightSalmon);
  AddParameter("Period", 30, 1);   
  AddParameter("nATR", 4);   
}

function Evaluate()
{
// evge 04.04.2016, http://alfadirect4.ru

var A = ATR(Input, Period);

double O = 0.0; //баланс
double AP = 0.0; //% Ask
double BP = 0.0; //% Bid

  if ( CurrentIndex >= Period )
  {
    double cWMA = 0.0, cAWMA = 0.0, cBWMA = 0.0;
    var cZn = 0.0;
    for (var i=0; i<Period; i++ )
    {     
      O = (Input.VolumeAsk[-i] + Input.VolumeBid[-i]) / 2; //баланс
      AP = Input.VolumeAsk[-i] / O - 1; //% Ask
      BP = Input.VolumeBid[-i] / O - 1; //% Bid

      cWMA = cWMA + Input.Close[-i]*(Period-i);
      cAWMA = cAWMA + Input.Close[-i]*(Period-i) + A[-i]*nATR*(Period-i)*AP;
      cBWMA = cBWMA + Input.Close[-i]*(Period-i) + A[-i]*nATR*(Period-i)*BP;
      cZn = cZn + (i+1);
    }
   WMA[0] = cWMA/cZn;
   AWMA[0] = cAWMA/cZn;
   BWMA[0] = cBWMA/cZn;
  }
  else {
   WMA[0] = Input.Close[0];
   AWMA[0] = Input.Close[0];
   BWMA[0] = Input.Close[0];
   }

if (AWMA[0] < BWMA[0]) { AWMA.DrawChannel(BWMA); }  else { BWMA.DrawChannel(AWMA); }

}


Скачать исходный текст

BAWMA.zip
(1.03 КБ) 1229 скачиваний
никогда такого не было и вот опять

Вернуться в «Пользовательские индикаторы»

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

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