Erreurs, bugs, questions - page 1631

 

Erreur d'exécution

Séquence des opérations :

1. Exécutez l'expert Test.ex5, qui affiche le même type de texte sur le graphique ligne par ligne jusqu'à ce qu'une erreur se produise.

2. Sur le même graphique, exécutez le script simplifié démontrant l'erreur

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

Nous obtenons le résultat

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... et devrait être "OK"

Dossiers :
Test.ex5  13 kb
 
A100:

Erreur d'exécution

Séquence des opérations :

1. Exécutez l'expert Test.ex5, qui affiche le même type de texte sur le graphique ligne par ligne jusqu'à ce qu'une erreur se produise.

2. Sur le même graphique, exécutez le script simplifié démontrant l'erreur

Nous obtenons le résultat

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... et devrait être "OK"

Je ne vois pas d'erreur, entre les appels ChartGetString, le commentaire du graphique a été modifié, c'est pourquoi il y a une différence de 16 caractères entre les lignes, juste la taille de la ligne ajoutée au commentaire du graphique.
 
Ilyas:
Je ne vois pas d'erreur, entre les appels ChartGetString, le commentaire du graphique a été modifié, c'est pourquoi il y a une différence de 16 caractères entre les lignes, juste pour la taille de la ligne ajoutée au commentaire du graphique.

L'expert est déchargé (c'est-à-dire qu'il ne peut plus agir sur le graphique). Chargez le script de test (10 lignes). Question : laquelle des lignes données modifie le commentaire du graphique ?

Il n'y a pas de code entre les appels de ::ChartGetString()

Dossiers :
Test.ex5  6 kb
 

Quel est le problème avec la version mobile du forum ?

Lorsque j'appuie sur "Répondre", une citation apparaît avec des crocodiles de code htlm. Et vous ne pouvez pas en retirer le curseur.

Android 2.3.4


 
A100:

L'expert est déchargé (c'est-à-dire qu'il ne peut plus agir sur le graphique). Chargez le script de test (10 lignes). Question : laquelle des lignes données modifie le commentaire du graphique ?

Il n'y a pas de code entre les appels de ::ChartGetString()

Par action (car les opérations sur les graphiques sont synchrones/séquentielles, l'EA et le script travaillent dans leurs propres threads) :

  1. le script appelle le premier ChartGetString
  2. le conseiller expert appelle ChartSetString
  3. le conseiller expert se termine
  4. le script appelle le deuxième ChartGetString
 
Ilyas:
Par les actions (pour un graphique, les opérations sont synchrones/séquentielles, l'Expert Advisor et le script travaillent dans leurs fils) :

  1. le script appelle le premier ChartGetString
  2. l'expert appelle ChartSetString
  3. Finitions expertes
  4. le script appelle le second ChartGetString

L'expert Test.ex5 ne peut rien appeler (point 2), car au moment où le script s'exécute, il a déjà été déchargé au préalable,

c'est-à-dire que l'étape 3 est évidemment avant l'étape 1

Voici le résultat du script Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...et devrait être "OK".

 
A100:

L'expert Test.ex5 ne peut rien appeler (point 2), car au moment où le script s'exécute, il est déjà déchargé au préalable,

c'est-à-dire que l'étape 3 est évidemment avant l'étape 1

Voici le résultat du script Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...et devrait être "OK".

ExpertRemove ne supprime pas instantanément le conseiller expert du graphique, mais seulement à la fin de OnTick. Et ce n'est pas analogue à la fonction exit()

La citation dans le journal illustre uniquement le fait d'appeler la fonction ExpertRemove(). Le fait de supprimer le conseiller expert sera reflété dans le journal du terminal du client comme "expert supprimé".

Afficher le code source du conseiller expert

 
Slawa:

La citation dans le journal illustre uniquement le fait d'appeler la fonction ExpertRemove(). Le conseiller expert sera supprimé du journal du terminal du client en tant que "expert supprimé".

Séquence détaillée des actions :

  1. Ouvrir un nouveau graphique
  2. Exécutez Test.ex5 sur le graphique de l'Expert Advisor (dans quelques secondes, le message suivant apparaîtra dans l'onglet Experts : 2016.08.08 15:40:47.267 Test (EURUSD,M15) Appel de la fonction ExpertRemove()' et l'EA est déchargé du graphique.
  3. Assurez-vous que l'onglet Journal affiche un message de la forme suivante : 2016.08.08 15:40:47.286 Experts expert Test (EURUSD,M15) supprimé".
  4. Exécuter le script Script1.ex5 sur le même graphique (le nom du script ici ne correspond pas au nom du Conseiller Expert)

En conséquence, un message de la forme suivante apparaîtra dans l'onglet Experts : '2016.08.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'
Il devrait l'être :'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'.

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
Dossiers :
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

Il devrait l'être :'2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'.

Cela peut être facilement vu en remplaçant la ligne (*) dans Script1.mq5 par

               text1 = ChartGetString( 0, CHART_COMMENT );
 
A100:

L'expert Test.ex5 ne peut rien appeler (point 2), car au moment où le script s'exécute, il est déjà déchargé au préalable,

c'est-à-dire que l'étape 3 est évidemment avant l'étape 1

Voici le résultat du script Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...et devrait être "OK"

Merci pour le message. Corrigé.

L'expert n'a rien à voir avec cela. Le problème réside dans la taille différente des tampons de demande de commentaire de graphique pour les différentes versions de la fonction ChartGetString.