Experts: Download all ticks of a symbol's history

 

Download all ticks of a symbol's history:

Téléchargez tous les ticks de votre courtier pour tous les symboles dans le Market Watch. Téléchargez tout l'historique ou jusqu'à une date spécifique dans le passé si disponible.

Author: Lorentzos Roussos

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки : MultiTester

fxsaber, 2020.01.25 12:39

Le moyen le plus pratique de télécharger l'historique des tics (exécuter le conseiller dans le Terminal).

#property description "Закачивает тики через Тестер."

sinput datetime inFromDate = D'2019.01.01'; // даты закачать тики
sinput bool inAllSymbols = false;           // По всем символам (true) или текущему (false)

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

string PrevTesterSettings = NULL;

string GetMyName( void )
{
  return(StringSubstr(MQLInfoString(MQL_PROGRAM_PATH), StringLen(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\")));
}

bool RunMe( const datetime FromDate, const bool AllSymbols = false )
{
  const string Str = "[Tester]" +
                     "\nExpert=" + GetMyName() +
                     "\nSymbol=" + _Symbol +
                     "\nOptimization=" + (AllSymbols ? "3" : "0") +
                     "\nModel=4" +
                     "\nFromDate=" + TimeToString(FromDate, TIME_DATE) +
                     "\nToDate=" + TimeToString(TimeCurrent(), TIME_DATE) +
                     "\nForwardMode=0" +
                     "\nProfitInPips=1" +
                     "\nOptimizationCriterion=0" +
                     "\nVisual=0";
                     
  return(MTTESTER::SetSettings2(Str) && MTTESTER::ClickStart());
}

int OnInit()
{
  bool Res = !MQLInfoInteger(MQL_TESTER) && EventSetTimer(1);

  if (Res = Res && MTTESTER::GetSettings(PrevTesterSettings))
    if (!(Res = RunMe(inFromDate, inAllSymbols)))
      MTTESTER::SetSettings2(PrevTesterSettings);

  return(Res ? INIT_SUCCEEDED : INIT_FAILED);
}

void OnTimer()
{
  if (MTTESTER::IsReady())
  {
    MTTESTER::SetSettings2(PrevTesterSettings);
    
    if (inAllSymbols)
      MTTESTER::CloseNotChart();

    ExpertRemove();
  }
}


Après cela, vous pouvez exécuter des scripts dans le Terminal qui travaillent avec les ticks, et ne pas attendre longtemps sans signes de vie.

 
fxsaber #:

Bien, merci

Il y avait parfois des blocages lors des téléchargements et le fait de "grouper" et d'"espérer" autour des graphiques semble résoudre le problème, car la demande était trop importante pour le serveur, je suppose.