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

 
Mickey Moose:


C'est vrai, c'est pour ça que je veux le faire sortir.

pour obtenir le code source de ce fichier est beaucoup plus difficile que de résoudre ce type de problème)

vous pouvez faire un truc sympa en général : un EA (ou ce que vous avez sans sources) enverra un mail à un graphique proche :-)

juste à mon aise a fait http://luxtrade.tk/atcl:start (fil du forum : https://www.mql5.com/ru/forum/224745)

et il y a dans les paquets un serveur SMTP(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

En d'autres termes, vous pouvez utiliser Eval("package require smtpd") dans l'indicateur, puis définir le callback pour la livraison et recevoir le courrier nécessaire en une seule fois, sans quitter MetaTrader, dans le même processus

ATcl
  • luxtrade.tk
Рад представить вам библиотеку ATcl v1 beta - интерпретатор Tcl для MT4. Расширяте возможности ваших программ MQL, используйте СУБД, дополняйте сетевыми средствами, интегрируйте их с любыми программами используя Tcl.
 
Maxim Kuznetsov:

vous pourriez faire une chose amusante en général : un EA (ou tout ce que vous avez sans code source) enverra un courrier à un graphique voisin :-)

je viens de faire http://luxtrade.tk/atcl:start (fil de discussion du forum : https://www.mql5.com/ru/forum/224745) à ma guise

et il y a un serveur SMTP dans les paquets(https://core.tcl.tk/tcllib/doc/tcllib-1-18/embedded/www/tcllib/files/modules/smtpd/smtpd.html)

En d'autres termes, vous pouvez utiliser Eval("package require smtpd") dans un indicateur, puis spécifier le callback pour la livraison et recevoir le courrier nécessaire en une seule fois, sans quitter MetaTrader, dans le même processus

Je vais essayer de trouver une solution et, le cas échéant, je pourrai partager les résultats.

 
Artyom Trishkin:

Celui-ci devrait simplement marquer l'historique complet sur la distance en barres que vous avez définie dans les paramètres.

Merci, mais j'essaie de trouver le numéro de la barre où se trouve la flèche et seulement ensuite le comparer à un 10 (par exemple), je ne peux pas le faire sans une boucle imbriquée.

J'ai besoin de savoir, à l'instant présent, sur quelle barre se trouve la flèche de l'indicateur appelé.

Je suppose que je ne suis pas très doué pour m'exprimer ). Avec un exemple, je pense, ce sera plus clair ce que je veux faire

Par exemple, par une condition if(Open[i+1]>Cloce[i+1]) je veux mettre le texte à High[i+1] avec le numéro de la barre où la flèche est située
 
Mickey Moose:

J'essaierai de trouver une solution, et si j'y arrive, je pourrai partager les résultats.

Si vous avez des questions, vous pouvez les poser en personne ou me contacter dans mon profil. Je visite souvent le site, mais je ne regarde pas l'ensemble du forum - il est difficile de s'y retrouver et je pourrais accidentellement manquer une question.
 

Pouvez-vous me dire comment implémenter dans MQL5 la fermeture de toutes les transactions sur toutes les paires de devises lorsqu'elles atteignent un certain profit pour toutes les transactions, qu'elles soient ouvertes par ce Conseiller Expert ou d'une autre manière ?

Je l'ai fait comme ça, c'est bien ?

   if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=0; i<OrdersTotal(); i++)
            trade.PositionClose(OrderGetTicket(i),40);
 

Artyom Trishkin, décidé. Les boucles imbriquées sont en effet inutiles. Merci.)

 
Roman Sharanov:

Pouvez-vous me dire comment implémenter dans MQL5 la fermeture de toutes les transactions sur toutes les paires de devises lorsqu'elles atteignent un certain profit pour toutes les transactions, qu'elles soient ouvertes par ce Conseiller Expert ou d'une autre manière ?

Je l'ai fait comme ça, c'est bien ?

Non, ce n'est pas le cas. Dans mql5, OrdersTotal() est le nombre d'ordres en attente, et les ordres actifs sont appelés positions. En conséquence, la boucle doit être construite par le nombre de positions, PositionsTotal()
 
Roman Sharanov:

J'ai fait ça, c'est bien ?

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(PositionGetTicket(i),40);

Quelque chose comme ça.

Vous utilisez une boucle à partir de zéro, alors que vous devez passer de plus à zéro, car vous fermez des ordres directement dans la boucle. Et la seconde, on vous a déjà dit d'utiliser PositionsTotal().

 
Je l'ai, merci pour l'aide !
 
Roman Sharanov:
Compris, merci pour votre aide !

N'oubliez pas de remplacer OrderGetTicket() par PositionGetTicket() dans la ligne mise en évidence.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toute question pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Konstantin Nikitin, 2018.02.03 08:38

if(AccountInfoDouble(ACCOUNT_PROFIT)>profit_close_all)
         for(int i=PositionsTotal()-1; i>=0; i--)
            trade.PositionClose(OrderGetTicket(i),40);

Quelque chose comme ça.

Vous utilisez le cycle de zéro et vice versa, de plus à zéro, car vous fermez les ordres en plein dans le cycle. Et la seconde, on vous a déjà dit d'utiliser PositionsTotal().