Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 625

 
Igor Makanu:

expérimentez avec un tel code, lisez le message dans le journal de l'Expert Advisor (changez le TF, entrez la variable, rechargez le terminal sans fermer l'Expert Advisor...)

et la seconde variante consiste à décrire à la portée globale une variable avec un modificateur statique

Tout d'abord, c'est mql4.

Deuxièmement, j'ai besoin d'exécuter OnInit() à chaque changement de variables de l'Expert Advisor.

C'est tout ce que je demande comme aide !

Oui, redémarrer le terminal et changer le texte aide, mais lorsque vous changez les variables, OnInit() ne fonctionne pas et c'est pourquoi j'ai tous les problèmes !!!!.

 
Игорь:

Premièrement, c'est mql4. Deuxièmement, je dois exécuter OnInit() pour modifier les variables de l'EA.

Deuxièmement, j'ai besoin qu'il exécute OnInit() lorsque les variables de l'Expert Advisor sont modifiées.

C'est tout ce que je demande comme aide !

Redémarrer le terminal et changer le texte aide, mais quand vous changez les variables, OnInit() ne fonctionne pas et c'est pourquoi j'ai tous les problèmes !!!!.

J'ai la solution suivante. OnInit() copie les variables lors de la 1ère exécution de l'EA. Sur Calc...() ou autre dans MT4, il vérifie si les variables sont identiques à leurs copies. Si les variables ne coïncident pas, nous exécutons de force OnInit() et, si nécessaire, nous exécutons quelque chose d'autre avant cela pour mettre à jour l'EA. Et enfin, le retour.

 
Игорь:

Premièrement, c'est mql4. Deuxièmement, je dois exécuter OnInit() pour modifier les variables de l'EA.

Deuxièmement, j'ai besoin qu'il exécute OnInit() lorsque les variables de l'Expert Advisor sont modifiées.

C'est tout ce que je demande comme aide !

Oui, redémarrer le terminal et changer les sécurités aide, mais lorsque vous changez les variables, OnInit() ne fonctionne pas et c'est pourquoi j'ai tous les problèmes !!!!.

Avez-vous regardé le code que je vous ai donné ? C'était MT4 et tout fonctionne comme vous l'avez demandé.

lisez la documentationhttps://docs.mql4.com/ru/runtime/event_fire

J'ai exécuté le code que j'ai suggéré, j'ai changé la variable externe var deux fois, voici le journal de l'Expert Advisor :

0       15:36:39.736    Compiling 'test'
0       15:37:37.573    Expert test EURUSD,H1: loaded successfully
0       15:37:39.101    test EURUSD,H1 inputs: var1=1; 
0       15:37:39.130    test EURUSD,H1: Вызов OnInit(), var1=1
0       15:37:39.130    test EURUSD,H1: initialized
0       15:37:51.341    test EURUSD,H1: uninit reason 5
0       15:37:51.343    test EURUSD,H1: Вызов OnInit(), var1=34567
0       15:37:51.343    test EURUSD,H1: initialized
0       15:37:51.366    test EURUSD,H1 inputs: var1=34567; 
0       15:38:04.124    test EURUSD,H1: uninit reason 5
0       15:38:04.126    test EURUSD,H1: Вызов OnInit(), var1=-9999
0       15:38:04.126    test EURUSD,H1: initialized
0       15:38:04.149    test EURUSD,H1 inputs: var1=-9999; 

Voici le code où se trouvent les "bugs".

Vous pouvez appeler n'importe quelle fonction de n'importe où dans un programme MQL. La fonction d'initialisation d'un Expert Advisor est une fonction, et vous pouvez forcer l'appel de OnInit(), mais généralement vous n'en avez pas besoin.

События клиентского терминала - Программы MQL4 - Справочник MQL4
События клиентского терминала - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Сразу же после того, как клиентский терминал загрузит программу (эксперт или пользовательский индикатор) и запустит процесс инициализации глобальных переменных, будет послано событие Init, которое обрабатывается функцией OnInit(), если она есть. Это событие также генерируется после смены финансового инструмента и/или периода графика, после...
 
Igor Makanu:

il y a beaucoup d'erreurs dans le code, dans...

il est préférable de normaliser les prix, alors ils fonctionneront, puis le serveur donnera une erreur de "mauvais prix", il est souhaitable de normaliserStopLoss_SELL

et très probablement, vous devez vérifier si le StopLoss est égal à zéro, et il n'est pas souhaitable de comparer des nombres réels pour qu'ils soient égaux, vous devez essayer de comparer des nombres réels à > ou <.

S'il y a beaucoup d'erreurs, pourriez-vous les signaler ?

 
Igor Makanu:

Avez-vous regardé le code que je vous ai donné ? C'était MT4 et tout fonctionne comme vous le demandez.

alors lisez la documentationhttps://docs.mql4.com/ru/runtime/event_fire

J'ai exécuté le code que j'ai suggéré, j'ai changé la variable externe var deux fois, voici le journal de l'Expert Advisor :

Voici le code où se trouvent les "bugs".

Vous pouvez appeler n'importe quelle fonction de n'importe où dans un programme MQL, la fonction d'initialisation d'un Expert Advisor est également une fonction. Vous pouvez forcer l'appel de OnInit(), mais généralement vous n'en avez pas besoin - le terminal appelleOnInit() de lui-même.

Merci beaucoup grâce à votre code d'erreurs j'ai trouvé ! !!!!!!!!. BONNE CHANCE ! !!! ET MERCI POUR VOTRE AIDE ! !!!!!

 
Veuillez me conseiller. Comment puis-je faire en sorte que l'indicateur MA standard soit affiché non pas pour l'ensemble de l'historique, mais pour un nombre spécifié de bougies ? Je voudrais vous poser une question.
 
prom18:
Veuillez me conseiller. Comment puis-je faire en sorte que l'indicateur MA standard soit affiché non pas pour l'ensemble de l'historique, mais pour un nombre spécifié de bougies ? Merci.
Rédigez votre propre indicateur MA en définissant la profondeur de l'historique !
 

Comment puis-je définir manuellement des cotations pourtester un EA?

Il doit y avoir une solution, mais je ne l'ai pas trouvée.

 
Galim_V:

Quel est le problème avec F12 après une pause ?

Je voulais dire spécifiquement pour fixer le mouvement des prix

 
Andrey Sokolov:

Comment puis-je définir manuellement des cotations pourtester un EA?

Il existe sûrement une solution, mais je ne l'ai pas trouvée.

Rédigez vos propres tics et mettez-les dans le testeur de stratégie.

Raison: