Индикаторы: Гистограмма объемов другая интерпритация

 

Гистограмма объемов другая интерпритация:

Гистограмма объемов по вертикали

Author: Евгений

 

Вот так лучше, наверно. И с мелкими периудами проблем нет.

// Объём расчитыватся от Low до High. Считается что в "хвостиках" сосредоточен двойной объём (туда-сюда)
#property indicator_chart_window
extern int      Period_ind = 240;   // 3000 - 10000
int      Amplitude = 100;
double Hist[];
datetime OpenTime = 0;
datetime CountTime = 0;
int init()
{
   ObjectCreate("Line_Goriz", OBJ_VLINE, 0, Time[Period_ind], 0);
   ObjectSet("Line_Goriz", OBJPROP_COLOR, Red);
   return(0);
}
int start()
{
   if (OpenTime != Open[0])
   {
      ObjectSet( "Line_Goriz", OBJPROP_TIME1, Time[Period_ind]);
      OpenTime = Open[0];
      double max = High[iHighest( NULL , 0, MODE_HIGH, Period_ind, 0)];
      double min =  Low[ iLowest( NULL , 0, MODE_LOW,  Period_ind, 0)];
      int items = MathRound((max - min) / Point);
      ArrayResize(Hist, items);
      ArrayInitialize(Hist, 0);
      int n;
      for (int i = 1; i <= Period_ind; i++)
      {
         double t1 = Low[i], t2 = Open[i], t3 = Close[i], t4 = High[i];
         if (t2 > t3) {t3 = Open[i]; t2 = Close[i];}
         double znamen = 2*(t4 - t1) - t3 + t2;
         if (znamen != 0.0)
         {
            for (double Price_i = t1; Price_i <= t4; Price_i += Point)
            {
               n = MathRound((Price_i - min) / Point);
               if (t1 <= Price_i && Price_i <  t2)
               {
                  Hist[n] += MathRound(Volume[i]*2*(t2-t1)/znamen);
               }
               if (t2 <= Price_i && Price_i <= t3)
               {
                  Hist[n] += MathRound(Volume[i]*(t3-t2)/znamen);
               }
               if (t3 <  Price_i && Price_i <= t4)
               {
                  Hist[n] += MathRound(Volume[i]*2*(t4-t3)/znamen);
               }
            }
         }
      }
      for (i = 0; i < 3000; i++) ObjectDelete("VH"+i);
      int MaxVolume = Hist[ArrayMaximum(Hist)];
       
      for (i = 0; i <= items; i++)
      {
         if (MaxVolume != 0) Hist[i] = MathRound(Amplitude * Hist[i] / MaxVolume );
         if (Hist[i] > 0)
         {
            int time_i = Hist[i];
            ObjectCreate("VH"+i, OBJ_RECTANGLE, 0, Time[0], min + i*Point, Time[time_i], min + (i+1)*Point);
            ObjectSet("VH"+i, OBJPROP_STYLE, DRAW_HISTOGRAM);
            ObjectSet("VH"+i, OBJPROP_COLOR, Red);
            ObjectSet("VH"+i, OBJPROP_BACK, true);
         }
      }
   }
   return(0);
}
int deinit()
{
   for (int i = 0; i < 3000; i++) ObjectDelete("VH"+i);
   ObjectDelete("Line_Goriz");
   return(0);
}
 

Есть идеи, как это использовать в торговле?

 
DrShumiloff:

Есть идеи, как это использовать в торговле?

ААААААбсолютно никакой. Просто показывает на каких участках графика происходили наиболее "ОЖЕСТОЧЁННЫЕ БОИ", что связано с увеличением объёмов. Короче на этом уровне встретились быки и медведи и стали мерится у кого длиннее и крепче

 

'Рыночный профиль ( Market Profile)'

https://www.mql5.com/ru/code/8115 - сдвинуть бы только профили к началу каждой сессии

/ru/code/7334

http://www.forextimes.ru/article/a26747p.htm

https://www.youtube.com/watch?v=7e3rXhCsbyI&feature=related

https://www.youtube.com/watch?v=g6X_CDU5lfI&feature=related

Прочтите Секреты объемов в Форекс магазине №167\16 стр.27 - 2007г.

и теорию Ричарда Викоффа (Richard Wyckoff - http://fx-trend.ru/content/view/287/69/) .

https://www.youtube.com/v/7e3rXhCsbyI

Прочтите Секреты объемов в Форекс магазине №167\16 - 2007г.

и теорию Ричарда Викоффа (Richard Wyckoff - http://fx-trend.ru/content/view/287/69/) .


 

Вкоде кроеца ошибка нефурычит.................

 

В коде кроеца ошибка нефурычит.......................

 

В коде кроеца ошибка нефурычит..................

 
sumkin:

В коде кроеца ошибка нефурычит..................

Странно. У всех Фурычит, а У тебя нет :))...

Странно. У всех Фурычит, а У тебя нет :))...

Странно. У всех Фурычит, а У тебя нет :))...

 

Индюк хороший, только комп подвешивает т.к. в альпари 5 цифр после запятой, так что я вместо Point поставил Point*10, сразу вычислений в 10 раз меньше, а картинка такая же осталась, еще сделал себе нормальное позиционирование по самостоятельно проводимой вертикальной линии. Ну и убрал сомнительную идею насчет двойного объема в тенях свечек.

 

5555, а можно код на общее обозрение? Очень интересно - как вы сделали "позиционирование по самостоятельно проводимой вертикальной линии"?