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

 
Bonjour à tous. Je ne suis pas un très bon programmeur, donc je ne comprends pas certaines choses simples. J'ai ce problème : je dois choisir parmi les ordres fermés dans mon EA le dernier fermé par SL.
 
Igor Makanu:

il ne faut pas compliquer les tâches simples ! ... a dit Me, qui a oisivement enveloppé la nouvelle fonction de définition des barres dans une classe )))).

à l'essentiel :


l'idée est claire, mais il est plus correct >= selon toute vraisemblance

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

l'idée est claire, seulement plus correcte >= selon toute vraisemblance

n'a pas vérifié, désimprime les variables immédiatement voir si par 1 erreur, alors soit votre version, soit ne pas mettre à zéro, et attribuer des valeurs =1 aux compteurs timer1 et timer2

en option, vous pouvez également l'essayer de cette façon :


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

n'a pas vérifié, débrocher les variables immédiatement voir si par 1 erreur, alors soit votre version ou ne pas mettre à zéro, et attribuer des valeurs =1 aux compteurs timer1 et timer2

Cependant, la méthode ne garantit certainement pas une périodicité donnée. L'exécution du code dans une minuterie peut dépasser le temps de l'autre minuterie.

 
leonerd:

Cependant, la méthode ne garantit certainement pas une périodicité donnée. L'exécution du code dans une minuterie peut dépasser le temps d'une autre minuterie.

Où peut-on obtenir une minuterie en temps réel garantie sur les systèmes Windows ? - Si le système est surchargé, il y aura des retards.

en MQL - si vous avez surchargé OnTick() avec des calculs complexes, l'événement OnTimer() ne se produira pas tant qu'il ne sera pas exécuté.

Par exemple, même MT4 est suffisant pour les calculs complexes, sinon MT5 - il fonctionne vraiment au niveau du C++, mais le manque de performance est généralement lié à un mauvais algorithme de calcul - utilisez le profileur, ne faites pas de calculs à chaque tick où il n'y a rien à calculer jusqu'à ce qu'une nouvelle barre apparaisse, ne calculez pas tout l'historique, si vous utilisez des signaux sur les 1 à 3 dernières barres - calculez seulement 100 barres ... il existe de nombreuses variantes

HH : travailler avec des objets graphiques ralentit tout, travailler avec des chaînes de caractères réduit également les performances - en théorie, mais dernièrement je n'ai pas remarqué cela, comme travailler avec des fonctions de conversion de temps - c'est vu sans ambiguïté dans le profileur, où beaucoup de temps est passé - nous essayons d'utiliser ce fragment de code moins souvent

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

et où peut-on être sûr d'obtenir un minuteur en temps réel sur les systèmes Windows ? - si le système est surchargé, il y aura des retards

C'est la même chose en MQL - si vous avez chargé des calculs complexes avec OnTick(), l'événement OnTimer() ne se produira pas tant qu'il ne sera pas exécuté.

Par exemple, même MT4 est suffisant pour les calculs complexes, sinon MT5 - il fonctionne vraiment au niveau du C++, mais le manque de performance est généralement lié à un mauvais algorithme de calcul - utilisez le profileur, ne faites pas de calculs à chaque tick où il n'y a rien à calculer jusqu'à ce qu'une nouvelle barre apparaisse, ne calculez pas tout l'historique, si vous utilisez des signaux sur les 1 à 3 dernières barres - calculez seulement 100 barres ... il existe de nombreuses variantes

HH : travailler avec des objets graphiques ralentit tout, travailler avec des chaînes de caractères réduit aussi les performances - en théorie, mais dernièrement je n'ai pas remarqué cela, comme travailler avec des fonctions de conversion de temps est aussi une douleur - clairement tout est visible dans le profiler, où beaucoup de temps est passé - nous essayons d'utiliser cette partie du code moins souvent

Je suis d'accord, la minuterie standard ne garantit rien non plus. Merci, on va essayer.

 

Bonjour, chers amis !

Pouvez-vous me dire s'il est possible dans MKL4 de définir l'ouverture d'une position pour un symbole au moment de l'ouverture d'une position pour un autre symbole ? Si une telle question a déjà été abordée, donnez-moi un lien.

Merci.

 
novichok2018:

Bonjour, chers amis !

Pouvez-vous me dire s'il est possible dans MKL4 de définir l'ouverture d'une position pour un symbole au moment de l'ouverture d'une position pour un autre symbole ? Peut-être que cette question a déjà été abordée, alors donnez-moi un lien.

Merci.

La question n'est pas entièrement formulée.
Mais en général - vous pouvez. Mais pas simultanément, mais séquentiellement dans l'un ou l'autre des deux cas.
 
Artyom Trishkin:
La question n'est pas formulée complètement.
Mais en général, vous pouvez. Mais pas en même temps, mais consécutivement dans les deux cas.

C'est bien. Comment le décrire dans le code ? Par exemple, si les conditions sont correctes et que j'ouvre une position d'achat en GBP à 9h00, j'ouvre également une position d'achat en EUR (à 9h00).

 
novichok2018:

Super. Comment décrire cela dans le code ? Par exemple, si les conditions se sont développées à 9:00 et qu'un BUY sur la livre est ouvert, alors un BUY sur l'euro est également ouvert (à 9:00).

Ouvert comment ? Quelle est la raison de l'ouverture ?
Raison: