Erreurs, bugs, questions - page 163

 
stringo:
Pouvez-vous justifier pratiquement l'expression x = x++ ; Que voulez-vous dire ? Pourquoi ne pas utiliser l'incrémentation sans affectation ultérieure de x++ ; comme c'est habituellement le cas.
Je l'ai découvert par accident - ce n'est pas tous les jours que l'on écrit dans des langages de type C, j'avais oublié qu'il y avait juste x++. Je m'attendais à x = x + 1. Le résultat est drôle...
 
GODZILLA:

Non, ce n'est pas le cas ! Il n'y a pas de données, j'ai demandé à nouveau... Je l'ai eu à la cinquième demande et j'y suis allé, mais c'est silencieux et c'est tout ! !!

Pour les conseillers experts et les indicateurs personnalisés, il est préférable d'utiliser lemodèle de traitementpar événement. Si le traitement des événements OnTick() ou OnCalculate() n'a pas permis d'obtenir toutes les données requises, vous devez quitter le gestionnaire d'événements, en espérant avoir accès aux données la prochaine fois que le gestionnaire sera appelé.

J'ai lu cela aussi et je le pensais, mais voici ce que donne ce code, par exemple :

int handle;
datetime inittime;
void OnInit(){

  
  handle = iCustom( "GBPUSD", PERIOD_M2, "examples\ATR", 14 );
  Print("Handle=", handle);
  inittime = TimeCurrent();
}
bool isfirst = true;
void OnTick()
  {
    double val[1];
    int start_pos = 1;
    if( isfirst || TimeCurrent()-5*60 > inittime ){
      int n = CopyBuffer( handle, 0, start_pos , 1, val );
      Print("Получено n=", n, 
        (n==-1)?" ошибка при получении данных из индикатора, ":" нет ошибки при получении данных из индикатора",
        " значение ", val[0] );
    }
    isfirst = false; 
  }

J'attends 5 minutes, après quoi j'obtiens la valeur de l'indicateur sur chaque tick (j'ai coupé une partie des logs) :

2010.10.14 15:47:09 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:47:03 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:10 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:05 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:02 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:01 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:45:00 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:58 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:54 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:08 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:27 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:25 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:24 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:23 23 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:04 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:43:01 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:59 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:51 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:47 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:43 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:42:04 tstincl (EURJPY,M1) Reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0006792857142856462
2010.10.14 15:41:25 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:41:22 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:41:01 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:59 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:57 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:54 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:41 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:40 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:38 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:36 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:26 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007028571428570865
2010.10.14 15:40:18 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:40:14 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:40:13 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:40:07 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:40:04 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:59 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:56 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:54 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:52 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:51 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:50 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:49 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de l'indicateur la valeur 0.0007364285714285289
2010.10.14 15:39:46 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007364285714285289
2010.10.14 15:39:43 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:42 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:39:39 tstincl (EURJPY,M1) n=1 n'a reçu aucune erreur lors de la réception des données de la valeur de l'indicateur 0.0007364285714285289
2010.10.14 15:34:38 tstincl (EURJPY,M1) A reçu n=1 aucune erreur lors de la réception des données de l'indicateur valeur 0.0007357142857142544
2010.10.14 15:34:35 tstincl (EURJPY,M1) Handle=10

qui devrait changer toutes les deux minutes, comme vous le voyez à partir d'environ 45 minutes, les nouvelles barres sur le m2 ne sont pas disponibles, ni après le premier, ni après le deuxième ou après le dixième appel.

Peut-être avez-vous quelque chose de similaire ?

Question aux développeurs : Comment appeler CopyBuffer correctement ? Chaque fois avant son appel à la synchronisation des séries temporelles... Alors il faut savoir quelle série temporelle et quel caractère se réfère à l'initiateur du handle, pour savoir cela, il faut un endroit pour stocker et transmettre cette information à tous les endroits où l'on appelle CopyBuffer : le code devient compliqué et encombré.

 

Question sur le testeur.

A quelle fréquence les résultats des passages de testeurs sont-ils stockés ?

Le journal montre que si les résultats sont stockés dans le cache, ils y sont repris sans recalcul, ce qui permet de gagner du temps. J'ai été confronté à une situation où un ordinateur a planté pendant un long cycle d'optimisation (la raison n'est pas importante). L'optimisation suivante , effectuée avec le même conseiller expert et les mêmes paramètres, a révélé que rien n'avait été économisé - le temps avait été perdu. Bien sûr, il existe une mesure de sécurité - arrêter et redémarrer l'optimisation de temps en temps, mais ce n'est pas très pratique. Construire 342.

 
Ashes:

Question sur le testeur.

A quelle fréquence les résultats des passages de testeurs sont-ils stockés ?

Le journal montre que si les résultats sont stockés dans le cache, ils y sont repris sans recalcul, ce qui permet de gagner du temps. J'ai été confronté à une situation où un ordinateur a planté pendant un long cycle d'optimisation (la raison n'est pas importante). L'optimisation suivante avec le même conseiller expert et les mêmes paramètres a révélé que rien n'avait été économisé - le temps avait été perdu. Bien sûr, il existe une mesure de sécurité - arrêter et redémarrer l'optimisation de temps en temps, mais ce n'est pas très pratique. Construire 342.

Les résultats de l'optimisation sont écrits dans le fichier une fois l'optimisation terminée. En cas d'arrêt d'urgence, les résultats ne sont pas mémorisés.

Nous allons examiner ce qui peut être fait.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo:

Les résultats de l'optimisation sont écrits dans un fichier lorsque l'optimisation est terminée. Les résultats ne sont pas mémorisés en cas d'arrêt d'urgence.

Nous allons examiner ce qui peut être fait.

Ce serait une bonne idée.

À propos, j'aimerais sauvegarder les résultats de l'optimisation sous une forme utilisable, et pas seulement sous forme d'images. Ou peut-être n'ai-je pas trouvé le bon bouton ?

 
Ashes:

Ce serait une bonne idée.

À propos, j'aimerais sauvegarder les résultats de l'optimisation sous une forme adaptée au traitement, et pas seulement sous forme d'images. Ou peut-être n'ai-je pas trouvé le bon bouton ?

tester\cache\<nom_ea>.<symbole>.<période>.< mode>.xml
 
Ashes:

Ce serait une bonne idée.

À propos, j'aimerais sauvegarder les résultats de l'optimisation sous une forme adaptée au traitement, et pas seulement sous forme d'images. Ou peut-être n'ai-je pas trouvé le bon bouton ?

Et j'ai une question aussi, comment continuer l'optimisation après un arrêt forcé, je n'ai rien trouvé à ce sujet dans l'aide.
 

sergey1294:
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

Il suffit d'appuyer sur le bouton de démarrage.
 
stringo:
tester\cache\<nom_ea>.<symbole>.<période>.<mode>.xml

Et un autre article de MQL5 : Guide de test et d'optimisation des conseillers experts:

Une fois l'optimisation terminée, vous pouvez regarder dans le dossier "MQL5\Tester\cache" où vous trouverez le fichier cci_ma_ea.EURUSD.H1.2.xml qui contient les valeurs numériques de tous les paramètres et caractéristiques obtenus à la suite de l'optimisation.

Les résultats de l'optimisation sont enregistrés dans le fichier : ExpertName.SYMBOL.PERIOD.GenerationMode.xml, où :

  • ExpertName - nom du conseiller expert à optimiser ;
  • SYMBOL - symbole ;
  • PERIOD - cadre temporel (M1,H1,...) ;
  • GenerationMode - mode de génération des ticks (0 - "Every tick", 1 - "OHLC on M1", 2 - "Opening prices only".

Ce fichier peut être ouvert dans Excel pour une analyse plus approfondie.

 
stringo:
Il suffit d'appuyer sur le bouton de démarrage.
Le testeur devrait donc charger automatiquement la liste des essais antérieurs dans l'onglet"Résultats de l'optimisation" et poursuivre l'optimisation là où elle s'est arrêtée ?
Raison: