Source of Historical Minute data consistent with MT5

 
Which source of minute data would you recommend to be as consistent as possible with the data on MT5? I know that you can download this data on MT5, but I don't know how to get a larger range of one-minute data than 3 months, hence I'm looking for the best source. It can be paid, it can be a broker you recommend, the most important thing is that it perfectly matches the data published on MT5. I've been looking for a long time, there's always something wrong with the data, so maybe you can give me some advice. Thank you very much.
 
cuba30:
Which source of minute data would you recommend to be as consistent as possible with the data on MT5? I know that you can download this data on MT5, but I don't know how to get a larger range of one-minute data than 3 months, hence I'm looking for the best source. It can be paid, it can be a broker you recommend, the most important thing is that it perfectly matches the data published on MT5. I've been looking for a long time, there's always something wrong with the data, so maybe you can give me some advice. Thank you very much.

How far back does your broker tick data go ? you could download that and reconstruct the M1 ,you will need to compress the ticks though if you want to keep them around

You can use this expert advisor to find the oldest tick your broker's server has for a symbol . It may take some time . It does not store anything just gets the dates . 

#property copyright "Forum discussion"
#property link      "https://www.mql5.com/en/forum/449798"
#property version   "1.00"

int OnInit()
  {
//---
  EventSetMillisecondTimer(44); 
//---
   return(INIT_SUCCEEDED);
  }
void OnTimer(){
  EventKillTimer();
  int attempts=0;
  int ping=-1;
  datetime cursor=flatten(TimeTradeServer());
  long cursorMSC=((long)cursor)*1000;
  long jump=2592000000;//60*60*24*30*1000;
  MqlTick receiver[];
  long oldest=LONG_MAX;
  Comment("PleaseWait");
  while(attempts<5){
       ping=CopyTicks(_Symbol,receiver,COPY_TICKS_ALL,cursorMSC,1);
       if(ping==1){
         if(receiver[0].time_msc==oldest){attempts++;}else{attempts=0;}
         if(receiver[0].time_msc<oldest){oldest=receiver[0].time_msc;}
         cursorMSC-=jump;
         }
       else{
         attempts++;
         }
       Sleep(44);
       Comment("Oldest Tick : "+TimeToString((datetime)(oldest/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+"\nCursor("+TimeToString((datetime)(cursorMSC/1000),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+")\nAttempts("+IntegerToString(attempts)+")\nPlease wait for response...");
       }
  Print("DONE");
  ExpertRemove();
  }
datetime flatten(datetime _time){
MqlDateTime mqt;
if(TimeToStruct(_time,mqt)){
  mqt.day=1;
  mqt.hour=0;
  mqt.min=0;
  mqt.sec=0;
  _time=StructToTime(mqt);
  }
return(_time);
}

void OnDeinit(const int reason){}

void OnTick(){}

 
I need 1M data for 24 months
 
cuba30 #: I need 1M data for 24 months
Most reputable MT5 brokers already offer that. Most of them offer several years of M1 data.
Reason: