Erreurs, bugs, questions - page 2933

 
Vitaly Muzichenko:

Cela devrait être un devoir.

et non une comparaison ?

Il ne s'agit donc pas du code du programme, mais du résultat de l'impression dans le journal du terminal. Et voici le code lui-même :

   int c=CopyTime(_Symbol,tf,0,1,Arr);
   if(c<1)
   {
      Print("ArraySize(Arr)=",ArraySize(Arr),
            "; copied=",c,
            "; TF=",EnumToString((ENUM_TIMEFRAMES)tf)
            //"; Arr[0]=",Arr[0]
           );
      Print("Error Code = ",GetLastError());
      ResetLastError();
      return;
   }
Ce n'est donc pas moi qui ai raté la portée du tableau, mais l'histoire qui souffre depuis longtemps n'est pas toujours supposée être chargée. J'ai toujours pensé que l'historique était chargé à gauche et qu'il pouvait manquer lorsqu'il n'était pas entièrement chargé. Mais pas assez d'historique sur le côté droit (nouvelles barres) - c'est un non-sens pour moi ! De plus, j'ai ArraySetAsSeries=false, si cela a une quelconque importance.
Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Print - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

Il ne s'agit donc pas du code du programme, mais du résultat de l'impression dans le journal du terminal. Et voici le code lui-même :

Ce n'est donc pas moi qui ai raté la portée du tableau, mais l'histoire qui souffre depuis longtemps n'est pas toujours supposée être chargée. J'ai toujours pensé que l'historique est chargé sur le côté gauche et qu'il n'est peut-être pas suffisant lorsqu'il n'est pas entièrement chargé. Mais pas assez d'historique sur le côté droit (nouvelles barres) - c'est un non-sens pour moi ! De plus, j'ai ArraySetAsSeries=false.

Lire un tableau vide qui ne contient rien ?

ArraySize(Arr)

Essayez ceci

Print("ArraySize(Arr)=",Arr[0],
 
Vitaly Muzichenko:

Lire un tableau vide qui ne contient rien ?

Essayez ceci

J'ai mis en commentaire la chaîne de sortieArr[0](voir ci-dessus), parce que lorsque j'essaie de l'envoyer au Journal, le message d'erreur 4401 n'apparaît pas, mais le message d'erreur "array out of range" est affiché.

...Je vais fumerhttps://www.mql5.com/ru/docs/series/timeseries_access pour le moment, mais gonfler mon code avec ce code est effrayant...
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Ошибки компиляции - Коды ошибок и предупреждений - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

Ma chaîne de sortieArr[0] est spécialement commentée (voir ci-dessus), car lorsque j'essaie de l'envoyer à Journal, le message d'erreur 4401 n'apparaît pas, mais l'erreur "array out of range" apparaît.

 
Vitaly Muzichenko:

Oui, le tableau s'avère être vide, c'est-à-dire qu'aucune nouvelle barre n'y est copiée.

 
x572intraday:

Oui, le tableau s'avère être vide, c'est-à-dire qu'aucune nouvelle barre n'y est copiée.

C'est le cas de la première requête

 
Vitaly Muzichenko:

Cela se produit à la première demande

Ce qui est fou, c'est quehttps://www.mql5.com/ru/docs/series/timeseries_access mentionne Sleep() dans l'article sur le chargement de l'historique dans le code. Mais l'aide pour Sleep() dit : "La fonction Sleep() ne peut pas être appelée depuis des indicateurs personnalisés, parce que les indicateurs sont exécutés dans le thread de l'interface et cela ne doit pas le ralentir". Il s'avère que je dois charger l'historique dans un indicateur.

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Организация доступа к данным - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

Ce qui est fou, c'est quehttps://www.mql5.com/ru/docs/series/timeseries_access mentionne Sleep() dans l'article sur le chargement de l'historique dans le code, mais l'aide pour Sleep() dit : "La fonction Sleep() ne peut pas être appelée depuis des indicateurs personnalisés, parce que les indicateurs sont exécutés dans le thread de l'interface et il ne faut pas le ralentir". Il s'avère que je dois charger l'historique dans l'indicateur.

Eh bien, faites une sortie si les données ne sont pas copiées.

int c=CopyTime(_Symbol,tf,0,1,Arr);
if(c<1) return;

Au prochain tic-tac, tout sera copié et le code fonctionnera correctement.

 

Bonjour, je suis en train de tester mon robot, après avoir terminé les tests j'ai vu beaucoup de champs avec des requêtes dans le Log, que signifient ces piles de messages et que puis-je ajouter au code pour les empêcher d'apparaître ? Merci, bonne année !

Dossiers :
1.jpg  412 kb
 
Vitaly Muzichenko:

Donc faire une sortie si les données ne sont pas copiées.

Au prochain tic-tac, tout sera chargé et le code fonctionnera correctement.

Non, dans mon cas, le code fonctionnera terriblement mal, les objets glisseront de leurs positions dans l'indicateur. Je vais m'occuper du chargement de l'histoire...