Erreurs, bugs, questions - page 311

 

Bug dans la nouvelle version, uniquement possible sur les systèmes x64 (spécifiquement windows 7, processeur core i7). Il n'y avait pas un tel bug dans la version précédente. Ce bogue a la signification suivante.

Si je ne modifie pas le code source d'Expert Advisor de manière significative (par exemple, en changeant uniquement la valeur d'une variable) et que je recompile ensuite, le résultat du test reste le même.

Je suis même arrivé à ce qui suit :

Dans la fonction void OnTick(), j'insère return ; :) compilez, exécutez, et le résultat est le même ! !!!. Bien qu'en général, la ligne devrait être.

La solution était soit d'effacer le fichier *.ex5 et de recompiler, soit d'écrire une bêtise pour que le compilateur se mette en marche, puis de compiler.

Demain, je vérifierai si la même chose se produit sur un OS x32 bit.

J'ai également remarqué qu'il faut trop de temps pour ouvrir de nouvelles fenêtres avec des graphiques sur x64 et prendre trop de temps pour les supprimer !

Et le terminal se bloque avec l'inscription "no response" pendant environ 5 secondes.

 
bobsley:

Bug dans la nouvelle version, uniquement possible sur les systèmes x64 (spécifiquement windows 7, processeur core i7). Il n'y avait pas un tel bug dans la version précédente. Ce bogue a la signification suivante.

Si je ne modifie pas le code source d'Expert Advisor de manière significative (par exemple, en changeant uniquement la valeur d'une variable) et que je recompile ensuite, le résultat du test reste le même.

Je suis même arrivé à ce qui suit :

Dans la fonction void OnTick() j'insère return ; :) compile, exécute, et le résultat est le même ! !!!. Bien qu'en général, la ligne devrait être.

La solution était soit d'effacer le fichier *.ex5 et de recompiler, soit d'écrire une bêtise pour que le compilateur se mette en marche, puis de compiler.

Demain, je vérifierai si la même chose se produit sur un OS x32 bit.

J'ai également remarqué qu'il faut trop de temps pour ouvrir de nouvelles fenêtres avec des graphiques sur x64 et prendre trop de temps pour les supprimer !

Et le terminal se bloque avec l'inscription "no response" pendant environ 5 secondes.

Vérifiez ce dossier (nom d'utilisateur : AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5), peut-être que votre EA se compilera ici.
 
bobsley:

Bug dans la nouvelle version, uniquement possible sur les systèmes x64 (spécifiquement windows 7, processeur core i7). Il n'y avait pas un tel bogue dans la version précédente. Ce bogue a la signification suivante.

Si je ne modifie pas le code source d'Expert Advisor de manière significative (par exemple, en changeant uniquement la valeur d'une variable) et que je recompile ensuite, le résultat du test reste le même.

Je suis même arrivé à ce qui suit :

Dans la fonction void OnTick(), j'insère return ; :) compilez, exécutez, et le résultat est le même ! !!!. Bien qu'en général, la ligne devrait être.

La solution était soit d'effacer le fichier *.ex5 et de recompiler, soit d'écrire une bêtise pour que le compilateur se mette en marche, puis de compiler.

Demain, je vérifierai si la même chose se produit sur un OS x32 bit.

...

Je n'ai pas spécialement attrapé ce bug mais j'ai remarqué un comportement similaire sur 32-bit. C'est l'erreur qui se produit si vous compilez une expression que vous n'avez pas terminée, comme un point-virgule.
 
Im_hungry:
bien sûr qu'il y a une histoire, mais tous les vers n'ont pas une histoire étalée !

1. Nous ne parlerons pas de tout, juste de celui-ci, le serveur du développeur - access.metatrader5.com:443 (enfin, je n'ai rencontré personne avec un meilleur historique dans MT5 en ce moment).

Prenons mon scénario, il n'est pas très bon, mais néanmoins il n'est pas terminé. Exécutons-le sur TF "1 semaine" et le nombre de barres 930.

Nous obtenons le résultat suivant

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

Apparemment, les spreads sur les barres hebdomadaires datent de 1993.05.02 et l'histoire des barres est encore plus profonde. Mais ces données ne sont peut-être pas si profondes si l'Euro existe officiellement depuis 1999 (bien que, Dieu soit avec lui, c'est une autre question).

2. Essayons maintenant de spécifier la profondeur des informations de spread sur les graphiques quotidiens.

Prenons comme base le fait qu'il y a 5 jours de trading dans une semaine et essayons de trouver le début de l'histoire des données de spread sur les graphiques quotidiens (je dirai dès le début que le nombre approximatif est 4630).

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

Ainsi, nous pouvons voir que l'historique de l'écart sur les barres quotidiennes commence en 1993.05.13.

PS

Je pense qu'il faut encore trier par analogie (la date la plus ancienne sur le plus petit laps de temps comme je le comprends et sera l'endroit que nous recherchons)...

Je ferai seulement remarquer que les écarts sur :

H12 disponible depuis 1993.05.13 (mais des barres là comme je l'ai compris quotidiennement) - la profondeur est d'environ 7790 barres

Les H6 sont disponibles à partir de 1993.05.13 (barres quotidiennes) - la profondeur est d'environ 14100 barres.

 
sergey1294:
Vérifiez ce dossier (Nom d'utilisateur\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5), votre EA y sera peut-être compilée.

J'ai vérifié, bien sûr, c'est tout vide. Et pourquoi ça le serait, j'ai les experts dans... Des exemples.

c'est là qu'apparaissent leurs compilations.

Aujourd'hui, je l'ai vérifié sur un OS x32 au travail. Avant la mise à jour, tout allait bien, j'ai mis à jour le terminal et immédiatement le même problème !

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


il faut que ce soit comme ça
 double op=0, sp=0;
 
sergey1294:
Il faut que ce soit comme ça.
Pourquoi ?
 
Academic:
Pourquoi ?

Il n'y a vraiment rien de mal à cela.

Les variables sont remises à zéro lors de l'initialisation.

Vous pouvez le vérifier ici.

int i ;

printf("i=%d",i) ;

 
bobsley:

Il n'y a vraiment rien de mal à cela.

Les variables sont remises à zéro lors de l'initialisation.

Vous pouvez le vérifier ici.

int i ;

printf("i=%d",i) ;

Cet avertissement ne devrait pas être donné, car une référence est passée à la fonction ObjectGetDouble et l'instruction if vérifie la vérité retournée par les deux appels, et donc seulement si les deux fonctions retournent vrai alors ces variables sont manipulées, ce qui signifie que ces deux variables ne peuvent pas être définies à la valeur correcte.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5