Пользовательские индикаторы > Индикатор BW_MFI_T

Дополнительные индикаторы от пользователей Альфа-Директ 4. Готовые решения от пользователей.
Геннадий
Сообщения: 29
Зарегистрирован: 06 мар 2016, 02:11
Поблагодарили: 2 раза

Индикатор BW_MFI_T

Непрочитанное сообщение Геннадий » 03 июн 2016, 08:47

Идея индикатора возникла на основе индикатора BW_MFI (Market Facilitation Index) – ИНДЕКС ОБЛЕГЧЕНИЯ РЫНКА БИЛЛА ВИЛЬЯМСА
Индикатор BW_MFI_T показывает изменение величины тела бара, приходящееся не единицу объема.
Индикатор имеет такую же раскраску, что и индикатор BW_MFI.

Зеленый бар (тело бара увеличилось и объем вырос) – большее количество участников входит в рынок, т.е. продолжение тенденции.
Синий бар (тело бара увеличилось, но объем упал) – движение без объемов (возможно спекулятивное).
Коричневый бар (тело бара уменьшилось и объем упал) – говорит о пропаже интереса к текущим ценам на рынке.
Розовый бар (тело бара уменьшилось, но объем вырос) – происходит соревнование покупателей и продавцов вследствие примерно равных сил. Обычно, прорыв такого бара дает знать, определяет ли этот бар продолжение тренда или им тренд аннулирован.

Высота столбика индикатора показывает величину тела свечи. Столбик над осью соответсвует белому бару, под осью - черному.
Исходный код взят у AlfaDirect. 2015. OX индикатор BW_MFI и переработан.
Сам индикатор BW_MFI мне не понравился, так как в нем берется разница между максимумом и минимумом бара, делится на объем бара и это соотношение сравнивается с предыдущим баром. Деление на объем очень влияет на окраску столбиков индикатора, что приводит к искажениям. Особенно это заметно для синей раскраски.
Поэтому возникла идея создать индикатор, не имеющий искажений, к тому же визуально легко определяющий направление изменения баров. Индикатор вспомогателный, недостатком его является то, что он показывает направление изменения объема бара, но не саму величину объема. Поэтому его лучше применять в тандеме с индикатором объема.
P.S. обратите внимание, после большого зеленого столбика индикатора видно изменение направления движения цены (или последующий боковик).
Вот код:

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

function Initialize()
{
   IndicatorName = "BW_MFI_T";
   PriceStudy = false;   
   AddInput("Input", Inputs.Candle);
  AddSeries("BW_MFI", DrawAs.Custom, Color.Green, AxisType.ZeroBased);   
  AddGlobalVariable("FI", Types.Double,  0.0);   
}

function Evaluate()
{
// GenGal
// Разработано на основе кода AlfaDirect. 2015. OX
// Основа: BW_MFI (Market Facilitation Index) - Индекс облегчения рынка Билла Вильямса
var a = (Input.Close[0]-Input.Open[0])/1000;
BW_MFI = a;

if (CurrentIndex > 0)
{
    if (a > FI &&  Input.Volume[0] > Input.Volume[1])
      {
                      if (a > 0)
                                              {
                                 BW_MFI.DrawHistogram (Color.Green, Color.Green, 50);
                    }
else
       {
BW_MFI.DrawHistogram (Color.Pink, Color.Pink, 100);
 }
       }
 if (a > FI &&  Input.Volume[0] < Input.Volume[1])
      {
                      if (a > 0)
                                              {
         BW_MFI.DrawHistogram (Color.Blue, Color.Blue, 50);
                    }
else
       {
BW_MFI.DrawHistogram (Color.Brown, Color.Brown, 50);
 }
       }
   if (a < FI &&  Input.Volume[0] < Input.Volume[1])
      {
                      if (a > 0)
                                              {
         BW_MFI.DrawHistogram (Color.Brown, Color.Brown, 50);                   
 }
else
       {
BW_MFI.DrawHistogram (Color.Blue, Color.Blue, 50);
 }
       }

    if (a < FI &&  Input.Volume[0] > Input.Volume[1])
      {
                      if (a > 0)
                                              {
 BW_MFI.DrawHistogram (Color.Pink, Color.Pink, 100);
 }
else
       {
BW_MFI.DrawHistogram (Color.Green, Color.Green, 50);
 }
       }

 
}
FI = a;
}

Реальный пример на SIM6 M1
Вложения
111.png

Геннадий
Сообщения: 29
Зарегистрирован: 06 мар 2016, 02:11
Поблагодарили: 2 раза

Re: Индикатор BW_MFI_T

Непрочитанное сообщение Геннадий » 11 июн 2016, 07:41

При тестировании индикатора BW_MFI_T обнаружено цветовое несоответствие условиям на отдельных столбиках индикатора. Индикатор переписан, ошибки исправлены, код более понятен:

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

function Initialize()
{
   IndicatorName = "BW_MFI_Tel";
   PriceStudy = false;   
   AddInput("Input", Inputs.Candle);
  AddSeries("BW_MFI", DrawAs.Custom, Color.Green, AxisType.ZeroBased);   
  AddGlobalVariable("FI", Types.Double,  0.0);   
}

function Evaluate()
{
// исходный код AlfaDirect. 2015. OX
// основа: BW_MFI (Market Facilitation Index) - Индекс облегчения рынка Билла Вильямса
 
var a =Math.Abs( (Input.Close[0]-Input.Open[0])/1000);
bool с = true;
 if (с = (Input.Close[0]-Input.Open[0])>0)
    {BW_MFI = a;
     }
else
    {BW_MFI = -a;
     }

if (CurrentIndex > 0)
{
    if (a > FI &&  Input.Volume[0] > Input.Volume[1])
             BW_MFI.DrawHistogram (Color.Green, Color.Green, 50);
    if (a > FI &&  Input.Volume[0] < Input.Volume[1])
             BW_MFI.DrawHistogram (Color.Blue, Color.Blue, 50);
    if (a < FI &&  Input.Volume[0] < Input.Volume[1])
             BW_MFI.DrawHistogram (Color.Brown, Color.Brown, 50);
    if (a < FI &&  Input.Volume[0] > Input.Volume[1])
             BW_MFI.DrawHistogram (Color.Pink, Color.Pink, 100);
}
FI = a;
}




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

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

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