Индикатор Statistik или 6 недель в одной

tommy27

Гуру форума
Несколько раз встречал по форумам мысли по поводу того, чтобы сравнить движения валюты на одинаковых отрезках времени, чтобы увидеть какие-нибудь закономерности... не спалось и решил сваять нечто подобное.

По дефолту индикатор ставим на тф 1Н и видим как двигалась валюта за последние 6 недель, 6 понедельников - пятниц.
так же выводится их средняя линия и если на отрезке от бара i до бара i+BarTrendLine все линии имели общий наклон вниз - горит звезда вверху, если вверх - то звезда внизу.
PHP:
//---- indicator parameters
extern int Shift1       = 0;  // на сколько баров сдвигать первую линию цены
extern int Shift2       = 120;// --/-- вторую линию цены
extern int Shift3       = 240;// и т.д.
extern int Shift4       = 360;//
extern int Shift5       = 480;//
extern int Shift6       = 600;//
extern int BarTrendLine = 3;  //если значение бара i > i+BarTrendLine на всех линиях то звезда внизу, < вверху
extern bool DrawStartWeekLine=1;// отрисовка вертикальных линий начала недели
Вобщем настройки не хитрые и подобрав сдвиги и тф можно сравнивать от шести последних минут, до 6 последних лет.
 

Вложения

  • statistik.tpl
    14,3 КБ · Просмотры: 36
  • t27_Statistik.mq4
    5 КБ · Просмотры: 51
  • Захват-1.jpg
    Захват-1.jpg
    163,8 КБ · Просмотры: 350
  • Захват-2.jpg
    Захват-2.jpg
    109,5 КБ · Просмотры: 213

Геннадий Попов

Элитный участник
Идея хорошая.

Я, сравнивая направление цены по часам, делал в виде гистограммы, где каждый час - одна линия, сумма пунктов за этот час по предыдущим дням, каждый со своим весом.
Всего 24 или 48 (24 на прошлый день и 24 - вперед, на следующий день) часов.

Только я не брал периоды в n часов назад, а принудительно выбирал день и час. Иначе случается, что n часов назад не совпадает с реальными часами за прошлые дни.
Тут требуется внимательность.

Индикатор хорошо показывал разворотные часы, когда одна линия гистограммы смотрит вниз, а другая - вверх; или наоборот. Наиболее сильная дивергенция хорошо заметна.
Показывал типичное направление в определенное волатильное время (когда группа часов смотрит в одну сторону).

По нему было видно то, что не увидишь по другим индикаторам: типичное поведение пары.

---

Прикрепить скомпилированный файл не могу (сижу с планшетом), но могу выложить код (с другого форума).
Посмотрите, может, что-то найдете для себя, или этот модифицируете.

Код:
 /* Индикатор Попова ©
    !! Только для часовых таймфреймов !!
    Отображает среднее значение "трендовости" на каждом часе,
    либо среднее направление цены,
    либо среднее значение волатильности.
 */

 #property indicator_separate_window
 #property indicator_buffers 4
 #property indicator_color1 Green
 #property indicator_width1 4
 #property indicator_style1 0
 #property indicator_color2 Red
 #property indicator_width2 4
 #property indicator_style2 0
 #property indicator_color3 Silver
 #property indicator_width3 1
 #property indicator_style3 2
 #property indicator_color4 Silver
 #property indicator_width4 1
 #property indicator_style4 2

 extern int Тренд_Напр_Вол=1; // "1" - тренд/флэт, "2" - направление, "3" - волатильность
 extern int Включить_Комментарий=1;
 extern int Сдвинуть_Гистограмму=0;

 double BufRes[], BufRes2[], BufH[], BufL[];
 double Buf00[], Buf01[], Buf02[], Buf03[], Buf04[], Buf05[],
        Buf06[], Buf07[], Buf08[], Buf09[], Buf10[], Buf11[],
        Buf12[], Buf13[], Buf14[], Buf15[], Buf16[], Buf17[],
        Buf18[], Buf19[], Buf20[], Buf21[], Buf22[], Buf23[];
 double Mid, Mid2, Mid3, k;

 int init()
  {
  SetIndexBuffer(0,BufRes);
  SetIndexStyle (0,DRAW_HISTOGRAM);
  SetIndexShift (0,-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(1,BufRes2);
  SetIndexStyle (1,DRAW_HISTOGRAM);
  SetIndexShift (1,24-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(2,BufH);
  SetIndexStyle (2,DRAW_LINE);
  SetIndexShift (2,24-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(3,BufL);
  SetIndexStyle (3,DRAW_LINE);
  SetIndexShift (3,24-Hour()+Сдвинуть_Гистограмму);
  return(0);
  }

 int start()
  {
  ArrayResize(Buf00,1440); ArrayResize(Buf01,1440); ArrayResize(Buf02,1440); ArrayResize(Buf03,1440);
  ArrayResize(Buf04,1440); ArrayResize(Buf05,1440); ArrayResize(Buf06,1440); ArrayResize(Buf07,1440);
  ArrayResize(Buf08,1440); ArrayResize(Buf09,1440); ArrayResize(Buf10,1440); ArrayResize(Buf11,1440);
  ArrayResize(Buf12,1440); ArrayResize(Buf13,1440); ArrayResize(Buf14,1440); ArrayResize(Buf15,1440);
  ArrayResize(Buf16,1440); ArrayResize(Buf17,1440); ArrayResize(Buf18,1440); ArrayResize(Buf19,1440);
  ArrayResize(Buf20,1440); ArrayResize(Buf21,1440); ArrayResize(Buf22,1440); ArrayResize(Buf23,1440);
  double SH;
  int HR;
  
  for(int i=0;i<Bars;i++)
   {
    BufRes[i]=0; BufRes2[i]=0;
    if (Тренд_Напр_Вол!=3) { BufH[i]=15; BufL[i]=-15; }
   }
  
  for(i=1440;i>0;i--)
   {
   if (Тренд_Напр_Вол==1)
    {
     Mid=(iHigh(0,60,i)+iLow(0,60,i))/2;
     Mid2=(iHigh(0,60,i)+iLow(0,60,i+1))/2;
     Mid3=(iHigh(0,60,i)+iLow(0,60,i+2))/2;
     if ((Mid>Mid2 && Mid2>Mid3) ||
         (Mid<Mid2 && Mid2<Mid3))
      SH=MathAbs(Mid-Mid2)/Point;
     if ((Mid>Mid2 && Mid2<Mid3) ||
         (Mid<Mid2 && Mid2>Mid3))
      SH=-MathAbs(Mid-Mid2)/Point;
    }
   if (Тренд_Напр_Вол==2)
    {
     SH=(iClose(0,60,i)-iOpen(0,60,i))/Point;
    }
   if (Тренд_Напр_Вол==3)
    {
     SH=0.0001*iVolume(0,0,i)*MathAbs(iClose(0,0,i)-iOpen(0,0,i))/Point;
    }

   HR=TimeHour(iTime(0,0,i));
   
   if (i<=1440) k=4;  if (i<=1320) k=5;  if (i<=1200) k=6;  if (i<=1080) k=7;
   if (i<=960)  k=8;  if (i<=840)  k=9;  if (i<=720)  k=10; if (i<=600)  k=11;
   if (i<=480)  k=12; if (i<=360)  k=13; if (i<=240)  k=14; if (i<=120)  k=15;
   
   if (HR==0)  Buf00[i]=k*SH; if (HR==1)  Buf01[i]=k*SH; if (HR==2)  Buf02[i]=k*SH; if (HR==3)  Buf03[i]=k*SH;
   if (HR==4)  Buf04[i]=k*SH; if (HR==5)  Buf05[i]=k*SH; if (HR==6)  Buf06[i]=k*SH; if (HR==7)  Buf07[i]=k*SH;
   if (HR==8)  Buf08[i]=k*SH; if (HR==9)  Buf09[i]=k*SH; if (HR==10) Buf10[i]=k*SH; if (HR==11) Buf11[i]=k*SH;
   if (HR==12) Buf12[i]=k*SH; if (HR==13) Buf13[i]=k*SH; if (HR==14) Buf14[i]=k*SH; if (HR==15) Buf15[i]=k*SH;
   if (HR==16) Buf16[i]=k*SH; if (HR==17) Buf17[i]=k*SH; if (HR==18) Buf18[i]=k*SH; if (HR==19) Buf19[i]=k*SH;
   if (HR==20) Buf20[i]=k*SH; if (HR==21) Buf21[i]=k*SH; if (HR==22) Buf22[i]=k*SH; if (HR==23) Buf23[i]=k*SH;
   }

  for (i=24;i>=0;i--)
   {
   BufRes[i]=0;
   int c00, c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11,
       c12, c13, c14, c15 ,c16, c17, c18, c19, c20, c21, c22, c23;
   for (int n=1440;n>0;n--)
    {
    if (i==24 && Buf00[n]!=0) {c00++; BufRes[i]=BufRes[i]+Buf00[n]/9.5;}
    if (i==23 && Buf01[n]!=0) {c01++; BufRes[i]=BufRes[i]+Buf01[n]/9.5;}
    if (i==22 && Buf02[n]!=0) {c02++; BufRes[i]=BufRes[i]+Buf02[n]/9.5;}
    if (i==21 && Buf03[n]!=0) {c03++; BufRes[i]=BufRes[i]+Buf03[n]/9.5;}
    if (i==20 && Buf04[n]!=0) {c04++; BufRes[i]=BufRes[i]+Buf04[n]/9.5;}
    if (i==19 && Buf05[n]!=0) {c05++; BufRes[i]=BufRes[i]+Buf05[n]/9.5;}
    if (i==18 && Buf06[n]!=0) {c06++; BufRes[i]=BufRes[i]+Buf06[n]/9.5;}
    if (i==17 && Buf07[n]!=0) {c07++; BufRes[i]=BufRes[i]+Buf07[n]/9.5;}
    if (i==16 && Buf08[n]!=0) {c08++; BufRes[i]=BufRes[i]+Buf08[n]/9.5;}
    if (i==15 && Buf09[n]!=0) {c09++; BufRes[i]=BufRes[i]+Buf09[n]/9.5;}
    if (i==14 && Buf10[n]!=0) {c10++; BufRes[i]=BufRes[i]+Buf10[n]/9.5;}
    if (i==13 && Buf11[n]!=0) {c11++; BufRes[i]=BufRes[i]+Buf11[n]/9.5;}
    if (i==12 && Buf12[n]!=0) {c12++; BufRes[i]=BufRes[i]+Buf12[n]/9.5;}
    if (i==11 && Buf13[n]!=0) {c13++; BufRes[i]=BufRes[i]+Buf13[n]/9.5;}
    if (i==10 && Buf14[n]!=0) {c14++; BufRes[i]=BufRes[i]+Buf14[n]/9.5;}
    if (i==9  && Buf15[n]!=0) {c15++; BufRes[i]=BufRes[i]+Buf15[n]/9.5;}
    if (i==8  && Buf16[n]!=0) {c16++; BufRes[i]=BufRes[i]+Buf16[n]/9.5;}
    if (i==7  && Buf17[n]!=0) {c17++; BufRes[i]=BufRes[i]+Buf17[n]/9.5;}
    if (i==6  && Buf18[n]!=0) {c18++; BufRes[i]=BufRes[i]+Buf18[n]/9.5;}
    if (i==5  && Buf19[n]!=0) {c19++; BufRes[i]=BufRes[i]+Buf19[n]/9.5;}
    if (i==4  && Buf20[n]!=0) {c20++; BufRes[i]=BufRes[i]+Buf20[n]/9.5;}
    if (i==3  && Buf21[n]!=0) {c21++; BufRes[i]=BufRes[i]+Buf21[n]/9.5;}
    if (i==2  && Buf22[n]!=0) {c22++; BufRes[i]=BufRes[i]+Buf22[n]/9.5;}
    if (i==1  && Buf23[n]!=0) {c23++; BufRes[i]=BufRes[i]+Buf23[n]/9.5;}
    }

   if (i==24) BufRes[i]=BufRes[i]/c00; if (i==23) BufRes[i]=BufRes[i]/c01;
   if (i==22) BufRes[i]=BufRes[i]/c02; if (i==21) BufRes[i]=BufRes[i]/c03;
   if (i==20) BufRes[i]=BufRes[i]/c04; if (i==19) BufRes[i]=BufRes[i]/c05;
   if (i==18) BufRes[i]=BufRes[i]/c06; if (i==17) BufRes[i]=BufRes[i]/c07;
   if (i==16) BufRes[i]=BufRes[i]/c08; if (i==15) BufRes[i]=BufRes[i]/c09;
   if (i==14) BufRes[i]=BufRes[i]/c10; if (i==13) BufRes[i]=BufRes[i]/c11;
   if (i==12) BufRes[i]=BufRes[i]/c12; if (i==11) BufRes[i]=BufRes[i]/c13;
   if (i==10) BufRes[i]=BufRes[i]/c14; if (i==9)  BufRes[i]=BufRes[i]/c15;
   if (i==8)  BufRes[i]=BufRes[i]/c16; if (i==7)  BufRes[i]=BufRes[i]/c17;
   if (i==6)  BufRes[i]=BufRes[i]/c18; if (i==5)  BufRes[i]=BufRes[i]/c19;
   if (i==4)  BufRes[i]=BufRes[i]/c20; if (i==3)  BufRes[i]=BufRes[i]/c21;
   if (i==2)  BufRes[i]=BufRes[i]/c22; if (i==1)  BufRes[i]=BufRes[i]/c23;
   
   BufRes2[i]=BufRes[i];
   if (Тренд_Напр_Вол!=3)
    {
     BufH[i]=15; BufL[i]=-15; BufH[i+24]=15; BufL[i+24]=-15;
    }
   }

 if (Включить_Комментарий==1)
  {
   WindowRedraw();
   int H;
   if (Hour()==23) H=0; else H=Hour()+1;
   Comment(
      "\n00= ",MathRound(BufRes[24]),"     01= ",MathRound(BufRes[23]),
   "     02= ",MathRound(BufRes[22]),"     03= ",MathRound(BufRes[21]),
      "\n04= ",MathRound(BufRes[20]),"     05= ",MathRound(BufRes[19]),
   "     06= ",MathRound(BufRes[18]),"     07= ",MathRound(BufRes[17]),
      "\n08= ",MathRound(BufRes[16]),"     09= ",MathRound(BufRes[15]),
   "     10= ",MathRound(BufRes[14]),"     11= ",MathRound(BufRes[13]),
      "\n12= ",MathRound(BufRes[12]),"     13= ",MathRound(BufRes[11]),
   "     14= ",MathRound(BufRes[10]),"     15= ",MathRound(BufRes[9]),
      "\n16= ",MathRound(BufRes[8]), "     17= ",MathRound(BufRes[7]),
   "     18= ",MathRound(BufRes[6]), "     19= ",MathRound(BufRes[5]),
      "\n20= ",MathRound(BufRes[4]), "     21= ",MathRound(BufRes[3]),
   "     22= ",MathRound(BufRes[2]), "     23= ",MathRound(BufRes[1]),
      "\n\nСледующий час - ",H,",  значение часа = ",MathRound(BufRes[24-H])
          );
  }
 else Comment("");

 return(0);
 }
eurnzd.png

Как настраивать и что показывает:
а) верхний вариант (в настройках включите трендовость, цифра 1) в 14 часов показывает прекращение тренда;
б) вариант ниже (включено направление цены, цифра 2) в 15 часов показывает медвежью свечу;
в) нижний вариант (включена волатильность) показывает активность торгов в 15 часов.

* История должна быть не менее 1440 часов.
* Первая линия на гистограмме должна совпадать с 0 часов. Для этого иногда требуется сдвигать гистограмму на некоторое количество баров.
* Преобразовать код в индикатор, для тех, кто не умеет, очень просто. Дело одной минуты. Погуглите.
 
Последнее редактирование модератором:

Egorushka1974

Местный житель
Идея хорошая.

Я, сравнивая направление цены по часам, делал в виде гистограммы, где каждый час - одна линия, сумма пунктов за этот час по предыдущим дням, каждый со своим весом.
Всего 24 или 48 (24 на прошлый день и 24 - вперед, на следующий день) часов.

Только я не брал периоды в n часов назад, а принудительно выбирал день и час. Иначе случается, что n часов назад не совпадает с реальными часами за прошлые дни.
Тут требуется внимательность.

Индикатор хорошо показывал разворотные часы, когда одна линия гистограммы смотрит вниз, а другая - вверх; или наоборот. Наиболее сильная дивергенция хорошо заметна.
Показывал типичное направление в определенное волатильное время (когда группа часов смотрит в одну сторону).

По нему было видно то, что не увидишь по другим индикаторам: типичное поведение пары.

---

Прикрепить скомпилированный файл не могу (сижу с планшетом), но могу выложить код (с другого форума).
Посмотрите, может, что-то найдете для себя, или этот модифицируете.

Код:
 /* Индикатор Попова ©
    !! Только для часовых таймфреймов !!
    Отображает среднее значение "трендовости" на каждом часе,
    либо среднее направление цены,
    либо среднее значение волатильности.
 */

 #property indicator_separate_window
 #property indicator_buffers 4
 #property indicator_color1 Green
 #property indicator_width1 4
 #property indicator_style1 0
 #property indicator_color2 Red
 #property indicator_width2 4
 #property indicator_style2 0
 #property indicator_color3 Silver
 #property indicator_width3 1
 #property indicator_style3 2
 #property indicator_color4 Silver
 #property indicator_width4 1
 #property indicator_style4 2

 extern int Тренд_Напр_Вол=1; // "1" - тренд/флэт, "2" - направление, "3" - волатильность
 extern int Включить_Комментарий=1;
 extern int Сдвинуть_Гистограмму=0;

 double BufRes[], BufRes2[], BufH[], BufL[];
 double Buf00[], Buf01[], Buf02[], Buf03[], Buf04[], Buf05[],
        Buf06[], Buf07[], Buf08[], Buf09[], Buf10[], Buf11[],
        Buf12[], Buf13[], Buf14[], Buf15[], Buf16[], Buf17[],
        Buf18[], Buf19[], Buf20[], Buf21[], Buf22[], Buf23[];
 double Mid, Mid2, Mid3, k;

 int init()
  {
  SetIndexBuffer(0,BufRes);
  SetIndexStyle (0,DRAW_HISTOGRAM);
  SetIndexShift (0,-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(1,BufRes2);
  SetIndexStyle (1,DRAW_HISTOGRAM);
  SetIndexShift (1,24-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(2,BufH);
  SetIndexStyle (2,DRAW_LINE);
  SetIndexShift (2,24-Hour()+Сдвинуть_Гистограмму);
  SetIndexBuffer(3,BufL);
  SetIndexStyle (3,DRAW_LINE);
  SetIndexShift (3,24-Hour()+Сдвинуть_Гистограмму);
  return(0);
  }

 int start()
  {
  ArrayResize(Buf00,1440); ArrayResize(Buf01,1440); ArrayResize(Buf02,1440); ArrayResize(Buf03,1440);
  ArrayResize(Buf04,1440); ArrayResize(Buf05,1440); ArrayResize(Buf06,1440); ArrayResize(Buf07,1440);
  ArrayResize(Buf08,1440); ArrayResize(Buf09,1440); ArrayResize(Buf10,1440); ArrayResize(Buf11,1440);
  ArrayResize(Buf12,1440); ArrayResize(Buf13,1440); ArrayResize(Buf14,1440); ArrayResize(Buf15,1440);
  ArrayResize(Buf16,1440); ArrayResize(Buf17,1440); ArrayResize(Buf18,1440); ArrayResize(Buf19,1440);
  ArrayResize(Buf20,1440); ArrayResize(Buf21,1440); ArrayResize(Buf22,1440); ArrayResize(Buf23,1440);
  double SH;
  int HR;
  
  for(int i=0;i<Bars;i++)
   {
    BufRes[i]=0; BufRes2[i]=0;
    if (Тренд_Напр_Вол!=3) { BufH[i]=15; BufL[i]=-15; }
   }
  
  for(i=1440;i>0;i--)
   {
   if (Тренд_Напр_Вол==1)
    {
     Mid=(iHigh(0,60,i)+iLow(0,60,i))/2;
     Mid2=(iHigh(0,60,i)+iLow(0,60,i+1))/2;
     Mid3=(iHigh(0,60,i)+iLow(0,60,i+2))/2;
     if ((Mid>Mid2 && Mid2>Mid3) ||
         (Mid<Mid2 && Mid2<Mid3))
      SH=MathAbs(Mid-Mid2)/Point;
     if ((Mid>Mid2 && Mid2<Mid3) ||
         (Mid<Mid2 && Mid2>Mid3))
      SH=-MathAbs(Mid-Mid2)/Point;
    }
   if (Тренд_Напр_Вол==2)
    {
     SH=(iClose(0,60,i)-iOpen(0,60,i))/Point;
    }
   if (Тренд_Напр_Вол==3)
    {
     SH=0.0001*iVolume(0,0,i)*MathAbs(iClose(0,0,i)-iOpen(0,0,i))/Point;
    }

   HR=TimeHour(iTime(0,0,i));
   
   if (i<=1440) k=4;  if (i<=1320) k=5;  if (i<=1200) k=6;  if (i<=1080) k=7;
   if (i<=960)  k=8;  if (i<=840)  k=9;  if (i<=720)  k=10; if (i<=600)  k=11;
   if (i<=480)  k=12; if (i<=360)  k=13; if (i<=240)  k=14; if (i<=120)  k=15;
   
   if (HR==0)  Buf00[i]=k*SH; if (HR==1)  Buf01[i]=k*SH; if (HR==2)  Buf02[i]=k*SH; if (HR==3)  Buf03[i]=k*SH;
   if (HR==4)  Buf04[i]=k*SH; if (HR==5)  Buf05[i]=k*SH; if (HR==6)  Buf06[i]=k*SH; if (HR==7)  Buf07[i]=k*SH;
   if (HR==8)  Buf08[i]=k*SH; if (HR==9)  Buf09[i]=k*SH; if (HR==10) Buf10[i]=k*SH; if (HR==11) Buf11[i]=k*SH;
   if (HR==12) Buf12[i]=k*SH; if (HR==13) Buf13[i]=k*SH; if (HR==14) Buf14[i]=k*SH; if (HR==15) Buf15[i]=k*SH;
   if (HR==16) Buf16[i]=k*SH; if (HR==17) Buf17[i]=k*SH; if (HR==18) Buf18[i]=k*SH; if (HR==19) Buf19[i]=k*SH;
   if (HR==20) Buf20[i]=k*SH; if (HR==21) Buf21[i]=k*SH; if (HR==22) Buf22[i]=k*SH; if (HR==23) Buf23[i]=k*SH;
   }

  for (i=24;i>=0;i--)
   {
   BufRes[i]=0;
   int c00, c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11,
       c12, c13, c14, c15 ,c16, c17, c18, c19, c20, c21, c22, c23;
   for (int n=1440;n>0;n--)
    {
    if (i==24 && Buf00[n]!=0) {c00++; BufRes[i]=BufRes[i]+Buf00[n]/9.5;}
    if (i==23 && Buf01[n]!=0) {c01++; BufRes[i]=BufRes[i]+Buf01[n]/9.5;}
    if (i==22 && Buf02[n]!=0) {c02++; BufRes[i]=BufRes[i]+Buf02[n]/9.5;}
    if (i==21 && Buf03[n]!=0) {c03++; BufRes[i]=BufRes[i]+Buf03[n]/9.5;}
    if (i==20 && Buf04[n]!=0) {c04++; BufRes[i]=BufRes[i]+Buf04[n]/9.5;}
    if (i==19 && Buf05[n]!=0) {c05++; BufRes[i]=BufRes[i]+Buf05[n]/9.5;}
    if (i==18 && Buf06[n]!=0) {c06++; BufRes[i]=BufRes[i]+Buf06[n]/9.5;}
    if (i==17 && Buf07[n]!=0) {c07++; BufRes[i]=BufRes[i]+Buf07[n]/9.5;}
    if (i==16 && Buf08[n]!=0) {c08++; BufRes[i]=BufRes[i]+Buf08[n]/9.5;}
    if (i==15 && Buf09[n]!=0) {c09++; BufRes[i]=BufRes[i]+Buf09[n]/9.5;}
    if (i==14 && Buf10[n]!=0) {c10++; BufRes[i]=BufRes[i]+Buf10[n]/9.5;}
    if (i==13 && Buf11[n]!=0) {c11++; BufRes[i]=BufRes[i]+Buf11[n]/9.5;}
    if (i==12 && Buf12[n]!=0) {c12++; BufRes[i]=BufRes[i]+Buf12[n]/9.5;}
    if (i==11 && Buf13[n]!=0) {c13++; BufRes[i]=BufRes[i]+Buf13[n]/9.5;}
    if (i==10 && Buf14[n]!=0) {c14++; BufRes[i]=BufRes[i]+Buf14[n]/9.5;}
    if (i==9  && Buf15[n]!=0) {c15++; BufRes[i]=BufRes[i]+Buf15[n]/9.5;}
    if (i==8  && Buf16[n]!=0) {c16++; BufRes[i]=BufRes[i]+Buf16[n]/9.5;}
    if (i==7  && Buf17[n]!=0) {c17++; BufRes[i]=BufRes[i]+Buf17[n]/9.5;}
    if (i==6  && Buf18[n]!=0) {c18++; BufRes[i]=BufRes[i]+Buf18[n]/9.5;}
    if (i==5  && Buf19[n]!=0) {c19++; BufRes[i]=BufRes[i]+Buf19[n]/9.5;}
    if (i==4  && Buf20[n]!=0) {c20++; BufRes[i]=BufRes[i]+Buf20[n]/9.5;}
    if (i==3  && Buf21[n]!=0) {c21++; BufRes[i]=BufRes[i]+Buf21[n]/9.5;}
    if (i==2  && Buf22[n]!=0) {c22++; BufRes[i]=BufRes[i]+Buf22[n]/9.5;}
    if (i==1  && Buf23[n]!=0) {c23++; BufRes[i]=BufRes[i]+Buf23[n]/9.5;}
    }

   if (i==24) BufRes[i]=BufRes[i]/c00; if (i==23) BufRes[i]=BufRes[i]/c01;
   if (i==22) BufRes[i]=BufRes[i]/c02; if (i==21) BufRes[i]=BufRes[i]/c03;
   if (i==20) BufRes[i]=BufRes[i]/c04; if (i==19) BufRes[i]=BufRes[i]/c05;
   if (i==18) BufRes[i]=BufRes[i]/c06; if (i==17) BufRes[i]=BufRes[i]/c07;
   if (i==16) BufRes[i]=BufRes[i]/c08; if (i==15) BufRes[i]=BufRes[i]/c09;
   if (i==14) BufRes[i]=BufRes[i]/c10; if (i==13) BufRes[i]=BufRes[i]/c11;
   if (i==12) BufRes[i]=BufRes[i]/c12; if (i==11) BufRes[i]=BufRes[i]/c13;
   if (i==10) BufRes[i]=BufRes[i]/c14; if (i==9)  BufRes[i]=BufRes[i]/c15;
   if (i==8)  BufRes[i]=BufRes[i]/c16; if (i==7)  BufRes[i]=BufRes[i]/c17;
   if (i==6)  BufRes[i]=BufRes[i]/c18; if (i==5)  BufRes[i]=BufRes[i]/c19;
   if (i==4)  BufRes[i]=BufRes[i]/c20; if (i==3)  BufRes[i]=BufRes[i]/c21;
   if (i==2)  BufRes[i]=BufRes[i]/c22; if (i==1)  BufRes[i]=BufRes[i]/c23;
   
   BufRes2[i]=BufRes[i];
   if (Тренд_Напр_Вол!=3)
    {
     BufH[i]=15; BufL[i]=-15; BufH[i+24]=15; BufL[i+24]=-15;
    }
   }

 if (Включить_Комментарий==1)
  {
   WindowRedraw();
   int H;
   if (Hour()==23) H=0; else H=Hour()+1;
   Comment(
      "\n00= ",MathRound(BufRes[24]),"     01= ",MathRound(BufRes[23]),
   "     02= ",MathRound(BufRes[22]),"     03= ",MathRound(BufRes[21]),
      "\n04= ",MathRound(BufRes[20]),"     05= ",MathRound(BufRes[19]),
   "     06= ",MathRound(BufRes[18]),"     07= ",MathRound(BufRes[17]),
      "\n08= ",MathRound(BufRes[16]),"     09= ",MathRound(BufRes[15]),
   "     10= ",MathRound(BufRes[14]),"     11= ",MathRound(BufRes[13]),
      "\n12= ",MathRound(BufRes[12]),"     13= ",MathRound(BufRes[11]),
   "     14= ",MathRound(BufRes[10]),"     15= ",MathRound(BufRes[9]),
      "\n16= ",MathRound(BufRes[8]), "     17= ",MathRound(BufRes[7]),
   "     18= ",MathRound(BufRes[6]), "     19= ",MathRound(BufRes[5]),
      "\n20= ",MathRound(BufRes[4]), "     21= ",MathRound(BufRes[3]),
   "     22= ",MathRound(BufRes[2]), "     23= ",MathRound(BufRes[1]),
      "\n\nСледующий час - ",H,",  значение часа = ",MathRound(BufRes[24-H])
          );
  }
 else Comment("");

 return(0);
 }
eurnzd.png

Как настраивать и что показывает:
а) верхний вариант (в настройках включите трендовость, цифра 1) в 14 часов показывает прекращение тренда;
б) вариант ниже (включено направление цены, цифра 2) в 15 часов показывает медвежью свечу;
в) нижний вариант (включена волатильность) показывает активность торгов в 15 часов.

* История должна быть не менее 1440 часов.
* Первая линия на гистограмме должна совпадать с 0 часов. Для этого иногда требуется сдвигать гистограмму на некоторое количество баров.
* Преобразовать код в индикатор, для тех, кто не умеет, очень просто. Дело одной минуты. Погуглите.

Вот, скомпилировал
 

Вложения

  • yu.mq4
    8 КБ · Просмотры: 45

Геннадий Попов

Элитный участник
Вот, скомпилировал

Спасибо. )

Только это версия с багом (начало красной гистограммы с каждым новым часом съезжает с 0 часов).

Исправленная версия здесь: http://forexsystemsru.com/indikatory/73942-hi-end-klasternye-indikatory-fx-matrix-dlya-momental%60nogo-kompleksnogo-analiza-dinamiki-rynka-3.html
 
Верх