Тестирование M1 vs. D1

 
Такой вопрос, почему при тестирование на минутках, значения индикатора для D1 отличаются от значения нидикатора при тетсировании на D1. и указание текущего ТФ.
Может что не так сделал?
Код получения значения индикатора
extern string MACD1="-----> Настройки MACD <-----";
int tframeMACDarr[10]=
               {0,PERIOD_M1,
               PERIOD_M5, 
               PERIOD_M15,
               PERIOD_M30,
               PERIOD_H1,
               PERIOD_H4,
               PERIOD_D1, 
               PERIOD_W1,
               PERIOD_MN1}; 
extern int  tframeMACD=0;              
extern int  fast_ema_period=12;//   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
extern int  slow_ema_period=26; //  -   Период усреднения основной линии индикатора. 
extern int  signal_period=9;//   -   Используемая цена. Может быть любой из ценовых констант. 
int         priceMACDarr[7]={   // Используемая цена. Может быть любой из ценовых констант. 
               PRICE_CLOSE,// 0 Цена закрытия 
               PRICE_OPEN,// 1 Цена открытия 
               PRICE_HIGH,// 2 Максимальная цена 
               PRICE_LOW,// 3 Минимальная цена 
               PRICE_MEDIAN,// 4 Средняя цена, (high+low)/2 
               PRICE_TYPICAL,// 5 Типичная цена, (high+low+close)/3 
               PRICE_WEIGHTED};// 6 Взвешенная цена закрытия, (high+low+close+close)/4
extern int     applied_price=0;
 
int  modeMACD=2;//   -   Индекс линии индикатора. Может быть любым из идентификаторов линий индикаторов. 
extern int  shiftMACD=0;//   -   Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). 
               
double macdRet(int mode)     
{
   return(iMACD(Symbol(),tframeMACDarr[tframeMACD],fast_ema_period,slow_ema_period,signal_period,priceMACDarr[applied_price],mode,shiftMACD));
}
 
int signalMACD()
{
   double sig1=macdRet(0);
   double sig2=macdRet(1);
   
   if(sig1>sig2)return(OP_SELL);
   if(sig1<sig2)return(OP_BUY);
}
 
Наверно моя проблема относиться к теме "Не корректное моделирование тиков на м5"
Вот сваял советника, который открывает и закрывает сделки на каждом тике, можно так сказать почувствовать разницу )


//----------------------------------------
 
dimontus:
Такой вопрос, почему при тестирование на минутках, значения индикатора для D1 отличаются от значения нидикатора при тетсировании на D1. и указание текущего ТФ.
Продемонстрируйте. Тестер только разное количество тиков генерирует на разных таймфреймах.
 
Вся демонстрация в разнице тиков, значит они на разных ТФ генерируются по разному, разница почти в 2 раза. Просто как то странно, ведь дневки строяться из минуток и тики так же должы генерироватся. Да и открывать сделки они начинают с разницей в 2 минуты, хотелось бы узнать почему так. получаеться что минута 20.07 начинаеться в 00:02, и значение индикатора мы тоже получим в 00:02, а если тетсировать по дневкам все получаем все в 00:00
 
dimontus:
Вся демонстрация в разнице тиков, значит они на разных ТФ генерируются по разному, разница почти в 2 раза. Просто как то странно, ведь дневки строяться из минуток и тики так же должы генерироватся. Да и открывать сделки они начинают с разницей в 2 минуты, хотелось бы узнать почему так. получаеться что минута 20.07 начинаеться в 00:02, и значение индикатора мы тоже получим в 00:02, а если тетсировать по дневкам все получаем все в 00:00

Заблуждаетесь. При одинаковом значении цены индикаторы покажут одинаковые значение независимо от того на чем проводится тестирование на М1 или D1. Как обычно ... разговор есть а оснований для разговора нет. Где код который демонстрирует различные занчения индкиатора? 
 
dimontus:
Вся демонстрация в разнице тиков, значит они на разных ТФ генерируются по разному, разница почти в 2 раза. Просто как то странно, ведь дневки строяться из минуток и тики так же должы генерироватся. Да и открывать сделки они начинают с разницей в 2 минуты, хотелось бы узнать почему так. получаеться что минута 20.07 начинаеться в 00:02, и значение индикатора мы тоже получим в 00:02, а если тетсировать по дневкам все получаем все в 00:00

Заблуждаетесь. При одинаковом значении цены индикаторы покажут одинаковые значение независимо от того на чем проводится тестирование на М1 или D1. Как обычно ... разговор есть а оснований для разговора нет. Где код который демонстрирует различные значения индикатора? 
 
код представлен выше :-)

Вот полный код эксперта:
//+------------------------------------------------------------------+
//|                                                       1_MACD.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
extern int       Revers                   =1;
extern int       Slippage                 =3; 
extern int       magicNumup               =756456400;
extern string    s="<-----Управление рисками----->";
extern double    MaximumRisk    =0;
extern int       OptimizeType   =1;
extern double    MaximumLots    =0;
extern double    Lots           =0.01;
 
 
int      openCurBuy     =0;
int      openCurSell    =0;
//#include <1_filtrMACD.mqh>
 
extern string MACD1="-----> Настройки MACD <-----";
int tframeMACDarr[10]=
               {0,PERIOD_M1,
               PERIOD_M5, 
               PERIOD_M15,
               PERIOD_M30,
               PERIOD_H1,
               PERIOD_H4,
               PERIOD_D1, 
               PERIOD_W1,
               PERIOD_MN1}; 
extern int  tframeMACD=7;              
extern int  fast_ema_period=12;//   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
extern int  slow_ema_period=26; //  -   Период усреднения основной линии индикатора. 
extern int  signal_period=9;//   -   Используемая цена. Может быть любой из ценовых констант. 
int         priceMACDarr[7]={   // Используемая цена. Может быть любой из ценовых констант. 
               PRICE_CLOSE,// 0 Цена закрытия 
               PRICE_OPEN,// 1 Цена открытия 
               PRICE_HIGH,// 2 Максимальная цена 
               PRICE_LOW,// 3 Минимальная цена 
               PRICE_MEDIAN,// 4 Средняя цена, (high+low)/2 
               PRICE_TYPICAL,// 5 Типичная цена, (high+low+close)/3 
               PRICE_WEIGHTED};// 6 Взвешенная цена закрытия, (high+low+close+close)/4
extern int     applied_price=0;
 
int  modeMACD=2;//   -   Индекс линии индикатора. Может быть любым из идентификаторов линий индикаторов. 
extern int  shiftMACD=0;//   -   Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). 
               
double macdRet(int mode)     
{
   return(iMACD(Symbol(),tframeMACDarr[tframeMACD],fast_ema_period,slow_ema_period,signal_period,priceMACDarr[applied_price],mode,shiftMACD));
}
 
int signalMACD()
{
   double sig1=macdRet(0);
   double sig2=macdRet(1);
   
   if(sig1>sig2)return(OP_SELL);
   if(sig1<sig2)return(OP_BUY);
}
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   numOrd();
   int sig=signalMACD();
   //Print(sig);
   if(sig==OP_BUY )
   {
      closeOrderType(OP_SELL);
      if(openCurBuy==0)openBuy();
   }
   if(sig==OP_SELL )
   {
      closeOrderType(OP_BUY);
      if(openCurSell==0) openSell();
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
void numOrd()
{
 int total =OrdersTotal();
 string str;  
 int num;
 int vopenCurBuy;
 int vopenCurSell;
 
 for(int pos=total-1;pos>=0;pos--)
 {
       if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue;  
       if (OrderMagicNumber()!=magicNumup) continue; 
       if (OrderSymbol()!=Symbol())continue; 
 
       switch (OrderType())
       {
            case OP_BUY:
               vopenCurBuy++;
               break;
            
            case OP_SELL:
               vopenCurSell++;
               break;  
       }
  } 
   openCurBuy=vopenCurBuy;
   openCurSell=vopenCurSell;
  // if(openCurBuy==0 && openCurSell==0)fNull();
return;   
}
 
 
 
int closeOrderType(int type, int itsPorifit=0)
   {
   int total      =OrdersTotal();
  
   for(int pos=total-1;pos>=0;pos--)
   {
      if (OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==false) continue;  
      if (OrderMagicNumber()!=magicNumup) continue; 
      if (OrderSymbol()!=Symbol())continue; 
      if (OrderType()!=type)continue; 
      
         switch (OrderType())
         {
            case OP_BUY:
               if(OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue)==false)
               break;
 
            case OP_SELL:
               if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red)==false)
               break;  
         }
   }    
 
return(0); 
}
  
 double LotsOptimized(int type)
  {
 
   return(Lots);
  }  
  
 int openSell()
{
     OrderSend(Symbol(),OP_SELL,LotsOptimized(OP_SELL),Bid,Slippage,0,0,"MTS ордер Sell",magicNumup,0,Red);
 
 
}
int openBuy()
{
    OrderSend(Symbol(),OP_BUY,LotsOptimized(OP_BUY),Ask,Slippage,0,0,"MTS ордер Buy",magicNumup,0,Blue);
     
}
протестируйте по евре на дневках, модель все тики, и на минутках с такой же моделью. ТФ индикатора установлен на дневки переменной
extern int  tframeMACD=7;  
 

В коде не наблюдается ни одного Print(), Alert(), или Comment(), чтобы можно было посмотреть значение индикаторов.

 
можно посмотреть по результатам сделок :-)
 
dimontus:
можно посмотреть по результатам сделок :-)

Разные результаты тестирования только из-за разного количества тиков, но не из-за разных показаний индикатора.
 
Объясни почему разное кол-во тиков?