для разминки...

 
#property copyright ""
#property link      ""
#property description "Ichimoku Cloud H4"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 2

input int H4Tenkan  = 9;   // H4 Tenkan-sen
input int H4Kijun   = 26;  // H4 Kijun-sen
input int H4SenkouB = 52;  // H4 Senkou Span B
//+------------------------------------------------------------------+
input ENUM_LINE_STYLE pe_H4SenkouSpanAStyle = STYLE_SOLID; 
input int             pi_H4SenkouSpanAWidth = 1;           
input color           pc_H4SenkouSpanAColor = SandyBrown;    

input ENUM_LINE_STYLE pe_H4SenkouSpanBStyle = STYLE_SOLID; 
input int             pi_H4SenkouSpanBWidth = 2;           
input color           pc_H4SenkouSpanBColor = Thistle;    
//--- buffers
double gda_H4SenkouSpanA[];
double gda_H4SenkouSpanB[];
//+------------------------------------------------------------------+
int OnInit(void)
{
   IndicatorShortName("IchimokuH4SenkouSpanAB");
   IndicatorBuffers(2);
   IndicatorDigits(Digits);

   SetIndexBuffer   (0,gda_H4SenkouSpanA);
   SetIndexStyle    (0,DRAW_LINE,pe_H4SenkouSpanAStyle,pi_H4SenkouSpanAWidth,pc_H4SenkouSpanAColor);
   SetIndexLabel    (0,"H4_SenkouSpanA");
   
   SetIndexBuffer   (1,gda_H4SenkouSpanB);
   SetIndexStyle    (1,DRAW_LINE,pe_H4SenkouSpanBStyle,pi_H4SenkouSpanBWidth,pc_H4SenkouSpanBColor);
   SetIndexLabel    (1,"H4_SenkouSpanB");

   ArraySetAsSeries(gda_H4SenkouSpanA,true);
   ArraySetAsSeries(gda_H4SenkouSpanB,true);

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i_Bar;
   int i,limit;
   //--- last counted bar will be recounted
   limit = rates_total - prev_calculated;
   if(prev_calculated > 0)
      limit++;
      
   for(i = 0; i < limit; i++)
   {
      i_Bar = iBarShift(Symbol(),PERIOD_H4,iTime(Symbol(),Period(),i));
      gda_H4SenkouSpanA[i] = iIchimoku(Symbol(),PERIOD_H4,H4Tenkan,H4Kijun,H4SenkouB,MODE_SENKOUSPANA,i_Bar);
      gda_H4SenkouSpanB[i] = iIchimoku(Symbol(),PERIOD_H4,H4Tenkan,H4Kijun,H4SenkouB,MODE_SENKOUSPANB,i_Bar);
   }
   return(rates_total);
}
//+------------------------------------------------------------------+

не хочет работать в тестере...

?

 

котировки Н4 должны быть

 
Iurii Tokman:

котировки Н4 должны быть


а разве в тестере, они не доступны ?

вот я тестирую на Н1 и ведь спокойно получаю в ЕА, скажем, такие значения:

d_H4SenkouSpanA = iIchimoku(Symbol(),PERIOD_H4,H4Tenkan,H4Kijun,H4SenkouB,MODE_SENKOUSPANA,7);
разве не так ?
 
Denis Sartakov:

а разве в тестере, они не доступны ?

вот я тестирую на Н1 и ведь спокойно получаю в ЕА, скажем, такие значения:

разве не так ?

я о том что их нужно загружать, тестируете на Н1, а индикатор берет данные с Н4

и их там нет

вот в тестере все работает -


 
Iurii Tokman:

я о том что их нужно загружать, тестируете на Н1, а индикатор берет данные с Н4

и их там нет

вот в тестере все работает -



слушай, друг, что значит "их нужно загружать..." ?

как загружать ? в индикаторе, типа:

   MqlRates rates_array[]; 
   while(CopyRates(Symbol(),PERIOD_H4,0,limit,rates_array) < limit)
   {
   }

или как ?

индикатор рисует историю, но дальше никак....

 
Denis Sartakov:



в терминал загрузите, 

кнопка F2

выбираем нужную вал пару и тф

и жмем загрузить

 
Iurii Tokman:

в терминал загрузите, 

кнопка F2

выбираем нужную вал пару и тф

и жмем загрузить


это само собой, но дело в том, что индикатор, да тестируется нормально, но если тестируется ЕА и нидикатор накидывается на график, то он рисует историю а дальше перестает работать, то есть перестает вести свои подсчеты...

попробуйте в тестере запустить пустую ЕА и накиньте этот индикатор, он нарисует историю и на этом все...

 
Denis Sartakov:

это само собой, но дело в том, что индикатор, да тестируется нормально, но если тестируется ЕА и нидикатор накидывается на график, то он рисует историю а дальше перестает работать, то есть перестает вести свои подсчеты...

попробуйте в тестере запустить пустую ЕА и накиньте этот индикатор, он нарисует историю и на этом все...


Индикатор присоединяется к окну визуализатора? Если да, то получить сведения о другом ТФ такой индикатор не сможет. Окно визуализатора в МТ4 - довольно специфическая вещь. Индикаторы в нем получают адекватную информацию только по тем данным, которые есть в окне (максимумы, минимумы, объемы). А вот при запросе цены Bid или Ask будет получен текущий Bid или Ask, а не те цены, которые показаны в окне. Аналогично с другими таймфреймами.

 
Ihor Herasko:

Индикатор присоединяется к окну визуализатора? Если да, то получить сведения о другом ТФ такой индикатор не сможет. Окно визуализатора в МТ4 - довольно специфическая вещь. Индикаторы в нем получают адекватную информацию только по тем данным, которые есть в окне (максимумы, минимумы, объемы). А вот при запросе цены Bid или Ask будет получен текущий Bid или Ask, а не те цены, которые показаны в окне. Аналогично с другими таймфреймами.


да, к окну визуализатора. 

а вот фишка в том, что ЕА спокойно получает инфу с любого таймфрема в тестере...

придется видно рисовать прямо из ЕА...

кроме того индикатор прекрасно отрисовывает историю...

Спасибо друг.

вот так все работает:

#property copyright ""
#property link      ""
#property description "Ichimoku Cloud H4"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 2

input int H4Tenkan  = 9;   // H4 Tenkan-sen
input int H4Kijun   = 26;  // H4 Kijun-sen
input int H4SenkouB = 52;  // H4 Senkou Span B
//+------------------------------------------------------------------+
input ENUM_LINE_STYLE pe_H4SenkouSpanAStyle = STYLE_SOLID; 
input int             pi_H4SenkouSpanAWidth = 1;           
input color           pc_H4SenkouSpanAColor = SandyBrown;    

input ENUM_LINE_STYLE pe_H4SenkouSpanBStyle = STYLE_SOLID; 
input int             pi_H4SenkouSpanBWidth = 2;           
input color           pc_H4SenkouSpanBColor = Thistle;    
//--- buffers
double gda_H4SenkouSpanA[];
double gda_H4SenkouSpanB[];
//+------------------------------------------------------------------+
int OnInit(void)
{
   IndicatorShortName("IchimokuH4SenkouSpanAB");
   IndicatorBuffers(2);
   IndicatorDigits(Digits);

   SetIndexBuffer   (0,gda_H4SenkouSpanA);
   SetIndexStyle    (0,DRAW_LINE,pe_H4SenkouSpanAStyle,pi_H4SenkouSpanAWidth,pc_H4SenkouSpanAColor);
   SetIndexLabel    (0,"H4_SenkouSpanA");
   
   SetIndexBuffer   (1,gda_H4SenkouSpanB);
   SetIndexStyle    (1,DRAW_LINE,pe_H4SenkouSpanBStyle,pi_H4SenkouSpanBWidth,pc_H4SenkouSpanBColor);
   SetIndexLabel    (1,"H4_SenkouSpanB");

   ArraySetAsSeries(gda_H4SenkouSpanA,true);
   ArraySetAsSeries(gda_H4SenkouSpanB,true);

   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int i,limit;
   //--- last counted bar will be recounted
   limit = rates_total - prev_calculated;
   if(prev_calculated > 0)
      limit++;
      
   for(i = 0; i < limit; i++)
   {
      gda_H4SenkouSpanA[i] = iIchimoku(Symbol(),Period(),H4Tenkan*4,H4Kijun*4,H4SenkouB*4,MODE_SENKOUSPANA,i);
      gda_H4SenkouSpanB[i] = iIchimoku(Symbol(),Period(),H4Tenkan*4,H4Kijun*4,H4SenkouB*4,MODE_SENKOUSPANB,i);
   }
   return(rates_total);
}
//+------------------------------------------------------------------+