Erreurs, bugs, questions - page 503

 
snookeredman:

Bonjour !

Veuillez m'aider à comprendre ....

void OnStart()
  {
    int h;
    int    m_integer  = 23;
    string m_string   = "EURUSD";
    double m_double   = 1.2345678;    
    
    h=FileOpen("TEST_CSV_FILE.CSV",FILE_CSV|FILE_WRITE,";");
    FileWrite(h,  
              m_integer, 
              m_string, 
              DoubleToString(NormalizeDouble(m_double,5),5));
    FileWrite(h,  
              m_integer, 
              m_string, 
              DoubleToString(NormalizeDouble(m_double,5),5));
    FileClose(h);
  }

Comme il se doit, la taille du fichier est deux fois supérieure à la taille prévue.

Essayez comme ceci :

void OnStart()
  {
    int h;
    int    m_integer  = 23;
    string m_string   = "EURUSD";
    double m_double   = 1.2345678;    
    
    h=FileOpen("TEST_CSV_FILE.CSV",FILE_CSV|FILE_WRITE|FILE_ANSI,";");                     // Добавлен флаг FILE_ANSI
    FileWrite(h, m_integer, m_string, DoubleToString(NormalizeDouble(m_double,5),5));
    FileWrite(h, m_integer, m_string, DoubleToString(NormalizeDouble(m_double,5),5));
    FileClose(h);
  }
Je pense que c'est exactement ce que vous recherchiez.
 
Que se passe-t-il ? Le site est de nouveau en ligne après trois jours d'interruption, mais les serveurs sont de nouveau hors service et le terminal ne se connecte pas.
 
Bene_Nota:

Qu'est-ce qui se passe ? Le site est de nouveau en ligne après trois jours d'interruption, mais les serveurs sont de nouveau hors service et le terminal ne se connecte pas.
Mon terminal est connecté depuis hier soir. Point d' accès : USA, Europe, Hong Kong
 

Merci à TheXpert, MetaDriver pour leur aide.

Le drapeau FILE_ANSI a aidé, et essayer de jouer avec des pages de code sans ce drapeau a échoué.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 

Messieurs, comment connaître le nombre total d'éléments d'un formulaire en C++ ?

 

Bonjour, je voudrais contacter les développeurs, mais d'abord un peu decontexte...

Comme il est désormais impossible de détenir plusieurs positions, je vois que la solution la plus raisonnable pour moi est de définir des ordres en suspens. Mais le fait de fixer les commandes une par une pose un problème. Nous devons définir trois ordres (un d'exécution immédiate et deux ordres en attente au lieu de TP et SL). Que faire si je passe une commande et que je ne peux pas en passer deux ? Que se passe-t-il si ma société de courtage va déjeuner ? Mon dépôt peut ne pas aimer ça. Prévoyez-vous d'ouvrir plusieurs commandes (tout ou rien) ?

 
220Volt:

Envisagez-vous de rendre possible la définition de commandes multiples (tout ou rien) ?

Malheureusement, non.

Cela est pratiquement impossible, notamment au sein des passerelles d'échange, où des ordres aussi complexes ne sont en principe pas pris en charge.

 

J'essaie de demander la date de début de l'historique et j'obtiens des zéros.

Le test est en mode visualisation, tous les ticks sont sur H1.

Vérification du code de test

int DS[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   int total=SymbolsTotal(false);
   ArrayResize(DS,total);
   for(int i=0;i<total;i++)
   {
    DS[i]=0;
    string symbol=SymbolName(i,false);
    
    while(!SymbolIsSynchronized(symbol)) 
    {
     DS[i]=(int)SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE);
     Sleep(30);
    }
    DS[i]=(int)SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE);
    Print("История по символу ",symbol," Синхронизирована. дата начала истории ",TimeToString(DS[i])," = ",DS[i]);
   }
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+

La pièce jointe est un journal.

 

L'optimiseur de code a-t-il des limitations sur la taille de l'arbre d'objets ?

J'obtiens une "erreur d'optimisation de l'arbre" au stade de la compilation lorsque j'augmente le nombre d'objets.

P.S. En mode débogage, la compilation se fait.

 
sergey1294:

J'essaie de demander la date de début de l'historique et j'obtiens des zéros.

Le test est en mode visualisation, tous les ticks sont sur H1.

Vérification du code de test

La pièce jointe est un journal.

Tout d'abord, quel est le sens du téléchargement forcé de l'historique dans le testeur ? Le testeur lui-même téléchargera l'historique nécessaire et disponible sur le serveur, s'il y a des demandes dans le code ou des opérations commerciales avec les symboles nécessaires. Puisque votre code est vide, le testeur n'a pas besoin de simuler des ticks pour d'autres symboles, à l'exception du symbole sur lequel le test est effectué. Et c'est ce que le testeur a téléchargé de son histoire. Et comme il n'y a pas d'historique (dans le testeur), on se retrouve avec 0.

Deuxièmement, même si vous augmentez le code en appelant l'historique complet pour tous les symboles, il est peu probable que le téléchargement de tout l'historique disponible pour tous les symboles réussisse, et un échec se produira quelque part. Comme le testeur utilise la base de citations des terminaux, il doit télécharger l'historique nécessaire.