Индикаторы: Индекс новых максимумов-новых минимумов

 

Индекс новых максимумов-новых минимумов:

Вычисляется как разность между числом валютных пар, показавших максимум за период, и числом валютных пар, показавших минимум за период.

Author: Кирилл

 

Не работает почему-то. Пустое окно. Как запустить?

 
Ingr:

Не работает почему-то. Пустое окно. Как запустить?

Индикатору необходимы файлы историй по следующим парам:

1. EURUSD,
2. GBPUSD,
3. USDCHF,
4. USDJPY,
5. AUDUSD,
6. USDCAD,
7. NZDUSD.
 
Идея-гуд, непонятен принцип работы..., мона чуть поподробней
 

Принцип работы следующий:

1. Вычисляется количество валютных пар, по которым КУРС ДОЛЛАРА достиг максимума за период "Depth";

2. Вычисляется количество пар, по которым КУРС ДОЛЛАРА достиг минимума за период "Depth";

3. Вычисляется разница вышеуказанных сумм.

Резкие "выпады", т.е. пики и впадины индикатора говорят о том, что по всем парам, используемым в расчёте, курс доллара показал максимум, либо минимум соответственно. За подобными "кульминациями" обычно следует разворот.

Так же, дивергенции данного индикатора очень весомы в силу их природы. Допустим, курс доллара по данной паре растёт, а общее количество растущих пар уменьшается. Это указывает на то, что рынок доллара ослабевает.

 
//+------------------------------------------------------------------+
//|                                                        NH-NL.mq4 |
//|                                                 LenIFCHIK © 2011 |
//|Измеряет разность между числом пар, которые достигли новых        |
//|максимумов или минимумов за период (рассматривается курс USD).    |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, LenIFCHIK"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_minimum -7
#property indicator_maximum 7
#property indicator_color1 Green
extern int pHours=8;
double Index[];
int Depth;
//+------------------------------------------------------------------+
int init()
{
   Depth = pHours * 60 / Period();
   SetIndexBuffer(0,Index);
   SetIndexStyle(0,DRAW_HISTOGRAM);   
   string Tf;
   if(Period()==1) Tf="M1";
   if(Period()==5) Tf="M5";
   if(Period()==15) Tf="M15";
   if(Period()==30) Tf="M30";
   if(Period()==60) Tf="H1";
   if(Period()==240) Tf="H4";
   if(Period()==1440) Tf="D1";
   if(Period()==10080) Tf="W1";
   if(Period()==43200) Tf="MN";         
        string short_name="NH-NL time timecorrected("+Depth+","+Tf+")";
        IndicatorShortName(short_name);
   
   IndicatorDigits(0);
   return(0);
}
//---- функция проверки цены закрытия на максимум Доллара США за период Depth
int newh(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);
                
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {
               int j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }       
            }
         else
            {
               j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nh=1;                                                 
                  }
               else                                                                 
                  {
                     nh=0;                                              
                  }             
            }
         return(nh);      
      }
//---- функция проверки цены закрытия на минимум Доллара США за период Depth
int newl(string symbol,int i)
      {
         datetime time_bar = Time[i];
         int bar_no = iBarShift(symbol, Period(), time_bar, false);      
      
         if(symbol=="EURUSD" || symbol=="GBPUSD" || symbol=="AUDUSD" || symbol=="NZDUSD")
            {
               int j=iHighest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     int nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }       
            }
         else
            {
               j=iLowest(symbol,Period(),MODE_CLOSE,Depth,bar_no);
               if (iClose(symbol,Period(),bar_no)==iClose(symbol,Period(),j))                    
                  {
                     nl=1;                                                 
                  }
               else                                                                 
                  {
                     nl=0;                                              
                  }             
            }
         return(nl);      
      }
//+------------------------------------------------------------------+
int start()
{
   int limit=Bars-IndicatorCounted();
   for(int i=0; i<limit; i++)
          {
             int  NH=newh("EURUSD",i)+newh("GBPUSD",i)+newh("USDCHF",i)+newh("USDJPY",i)+newh("AUDUSD",i)+newh("USDCAD",i)+newh("NZDUSD",i);            
             int  NL=newl("EURUSD",i)+newl("GBPUSD",i)+newl("USDCHF",i)+newl("USDJPY",i)+newl("AUDUSD",i)+newl("USDCAD",i)+newl("NZDUSD",i);              
        if(Symbol()=="EURUSD" || Symbol()=="GBPUSD" || Symbol()=="AUDUSD" || Symbol()=="NZDUSD")                  
                    {
                       Index[i]=NL-NH;
                    }
                  else
                    {
                       Index[i]=NH-NL;   
                    }     
     }
        return(0);
}
Добавил правильное подсчет баров на меньших временных периудах, чтобы при отсузтвии баров на одном или нескольких инструментов не происходил сдвиг индекза. И добавил вычисление периода как колличество часов.
 
LenIFCHIK:
Ingr:

Не работает почему-то. Пустое окно. Как запустить?

Индикатору необходимы файлы историй по следующим парам:

1. EURUSD,
2. GBPUSD,
3. USDCHF,
4. USDJPY,
5. AUDUSD,
6. USDCAD,
7. NZDUSD.


Как это сделать технически? Можете объяснить пошагово? У меня на терминале все эти пары работают.
 
Ingr:
LenIFCHIK:
Не отвечает... Эх...
 
Ingr:
Ingr:
LenIFCHIK:
Не отвечает... Эх...

Нажимай F2, выбирай нужную пару и "Загрузить"
 
Кирилл привет.Пожалуйста я тя очень прошу можешь написать код на все валютные пары тоесть для EUR,GBP.CAD.AUD.JPY.NZD.CHF.SGD для индикатора NH-NL.или хотябы поеснить подробнее как все пары например JPY добавить.заранее спасибо
Причина обращения: