Erreurs, bugs, questions - page 572

 
Interesting:

Où et comment est généré MarketWatch?

Si j'ai bien compris, ce bloc essaie d'ajouter un symbole à la liste, avec vérification du résultat.

Mais si le Conseiller Expert est une paire de devises multiples (ce qui n'est pas évident dans l'exemple ci-dessus).

Ce code est dans une boucle de paire de devises, Exp_Symbol à chaque passage, sauf le premier, est une paire de devises "étrangères". S'il existe cinq paires de devises, SymbolSelect(Exp_Symbol, true) sera appelé cinq fois pour cinq symboles différents.

L'appel aux fonctions SymbolSelect(), SymbolIsSynchronized(), CopyRates() dans mon code par des symboles "étrangers" (l'historique doit être mis à jour en conséquence). Au premier test, il y a des données, mais au deuxième test, il n'y a pas de données et l'Expert Advisor se bloque dans le testeur.

 
Konstantin83:

Ce code est dans la boucle de la paire de devises, Exp_Symbol à chaque passage sauf le premier qui est une paire de devises "étrangères". J'ai un appel aux fonctions SymbolSelect(), SymbolIsSynchronized(), CopyRates() par des symboles "étrangers" (donc l'historique doit être échangé). Au premier test, il y a des données, mais au deuxième test, il n'y a pas de données et l'Expert Advisor se bloque dans le testeur.


Pouvez-vous envoyer à Servicedesk un expert et une description des paramètres d'optimisation/de test ?
 
alexvd:
Pouvez-vous envoyer un expert et une description des paramètres d'optimisation/de test à servicedesk ?
Créé.
 
A l'instant, les cotations sont à nouveau suspendues dans le compte de démonstration. Il y a une communication mais pas de mouvement.
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 

Je veux décharger les données de janvier 2009. J'ai déchargé les données de 15 minutes et d'une heure, mais je ne peux pas décharger les données de 5 minutes, il dit qu'il n'y a pas d'historique. Pourquoi le téléchargement de l'historique n'est pas de 5 minutes ?

void OnStart()
  {
   int size = 25;
   datetime dateFrom;
   datetime dateTo;
   MqlRates rates[];
   MqlDateTime stDate;
   int FileHandle;
  
   stDate.day  = 1;
   stDate.hour = 0;
   stDate.mon  = 1;
   stDate.year = 2009;
   dateFrom    = StructToTime( stDate );
   stDate.day  = 31;
   dateTo      = StructToTime( stDate );
  
  
   ArraySetAsSeries(rates,true);
  
   int copied=CopyRates(Symbol(), PERIOD_M5, dateFrom, dateTo, rates);
   for(int i=0;i<100;i++)
     {
      if(GetLastError()!=0)
       {
        Sleep(5000);
        copied=CopyRates(Symbol(), PERIOD_M5, dateFrom, dateTo, rates);
       }
      else
       {
        break;
       }
      Print("Нет истории, проход № " + i);
     }
   if(copied>0)
     {
      Print("Скопировано баров: "+IntegerToString(copied));
      //string format="open = %G, high = %G, low = %G, close = %G, volume = %d";
      string out;
      size = ArraySize(rates);
      ResetLastError();
     
      FileHandle=FileOpen("Data.csv",FILE_WRITE|FILE_CSV);
      if(FileHandle==INVALID_HANDLE)
        {
         Print("Ошибка " + IntegerToString((GetLastError())));
        }
      for(int i=size-1;i>=0;i--)
        {
         FileWrite(FileHandle, TimeToString(rates[i].time), DoubleToString(rates[i].open, _Digits), DoubleToString(rates[i].high, _Digits), DoubleToString(rates[i].low, _Digits), DoubleToString(rates[i].close, _Digits));
        }
     
      Print("size = " + FileSize(FileHandle));
      FileFlush(FileHandle);
      FileClose(FileHandle);
     }
   else
    {
     Print("Не удалось получить исторические данные по символу ",Symbol());
     Print("Ошибка " + GetLastError());
    }
  }

 

J'ai décidé de vérifier comment la fonction ArrayResize fonctionne avec tous les paramètres. Il compile sans problème, l'auto-trading est activé partout, mais l'Expert Advisor se décharge du graphique sans même passer par OnInit.

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Print(__FUNCTION__);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Print(__FUNCTION__);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
   double ZZ[][2];
//==============================================   
   Print(__FUNCTION__);
   
   ResetLastError();
   ArrayResize(ZZ,5,5);
   for(int i=0;i<10;i++) {
      ZZ[i][0]=i;
      Print("i=",i,"; ZZ=",ZZ[i][0]);
      Print(GetLastError());
   }
   return;
}
//+------------------------------------------------------------------+

Quel est le problème, je n'arrive pas à le comprendre.

1

2

 
Talex:

J'ai décidé de vérifier comment la fonction ArrayResize fonctionne avec tous les paramètres. Il compile sans problème, l'auto-trading est activé partout, mais l'Expert Advisor se décharge du graphique sans même passer par OnInit.

Quel est le problème, je n'arrive pas à le comprendre.


Banal hors de portée, vérifier dans l'onglet "Experts".
La réservation n'est pas une allocation, votre tableau compte toujours cinq éléments, bien que la mémoire soit allouée pour 10.

 
mql5:

Banal hors de portée, regardez l'onglet "Experts".
Réserver n'est pas allouer, votre tableau est toujours composé de cinq éléments, même si vous avez alloué de la mémoire pour 10.

Bien, merci. Je regardais le mauvais onglet, je suis malade, ça doit m'affecter.
 
Talex:

J'ai décidé de vérifier comment la fonction ArrayResize fonctionne avec tous les paramètres. Il compile sans problème, l'auto-trading est activé partout, mais l'Expert Advisor se décharge du graphique sans même passer par OnInit.

De manière générale, la capture d'écran ci-dessus montre le journal du terminal. Et ce que vous cherchez se trouve dans l'onglet Experts.
 

Bonjour,

Après avoir testé et activé l'optimisation, j'obtiens ceci :

Passe génétique du Core 1 (127, 1195) testée avec l'erreur "critical runtime error

Le test est normal.