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

 
Artyom Trishkin #:
Pause

Quelle est la question ?)

 
Alexey Viktorov #:

Quelle est la question ?)))

Apparemment, vous et Andrei devriez arrêter de troller...

L'atmosphère est vraiment antipathique (comme indiqué ci-dessus). Je suis venu ici pour discuter des problèmes de MQLQL. Mais j'ai lu quelque chose qui ne concerne pas MQL. De quoi parlez-vous ?

Laissez un nouveau venu poser une question ou quelque chose... Ou peut-être qu'il a peur de... ? Se perdre dans la mêlée entre toi et Andrei... :)
 

Bonjour à tous.

Veuillez m'indiquer comment écrire le code correctement.
Je ferme plusieurs ordres à la fois dans différentes directions, différentes paires de devises, selon certaines conditions. Mais parfois la commande n'est pas exécutée à cause de la société de courtage et une partie des commandes reste ouverte. Je peux prescrire le sommeil pour chaque commande. Mais je veux quelque chose de plus court.

if ( NormalizeDouble((MaxOpenSell(2) + MaxOpenBuy(2) + MinOpenSell(2))*Point,Digits) >= Profit1 && FindLastSell() >= Block 
         && FindLastBuy() >= 1 && MaxOpenSell(2) > 0 && MA1 < MA2)
      {
         LockTicket = 0;
         CalProfHis = 0;
         bool close =  OrderClose((int)MaxOpenSell(5),MaxOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MinOpenSell(5),MinOpenSell(3), Ask, Slippage, clrPink);
              close =  OrderClose((int)MaxOpenBuy(5),MaxOpenBuy(3), Bid, Slippage, clrBlue);

      }
 
makssub sommeil pour chaque commande. J'aimerais utiliser quelque chose de plus court.

https://book.mql4.com/ru/trading/orderclose

Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
  • book.mql4.com
Закрытие и удаление ордеров - Торговые операции - Учебник по MQL4
 
makssub sommeil pour chaque commande. J'aimerais avoir quelque chose de plus court.

Lorsque la condition de sortie/fermeture se produit, nous devons ajouter le ticket au tableau. Ensuite, si le tableau n'est pas vide, le programme le parcourt en boucle, en appelant OrderClose pour chaque ticket. Vérifiez ensuite l'existence de chaque ticket, et supprimez-le de la liste. Répétez ces actions à des intervalles de 1 à 3 secondes jusqu'à ce que la liste soit vide.

 

Bonjour.

Je dois calculer le bénéfice net du conseiller expert à la fin du travail. Je démarre une boucle par OrdersHistoryTotal() dans OnDeinit et j'ajoute OrderProfit().

Profit=Profit+OrderProfit() ;

Mais au final, le bénéfice est différent de celui rapporté dans le testeur. J'ai découvert que la valeur des points diffère sur une partie des commandes.

Quelle en est la raison ? L'écart est réglé manuellement dans le testeur.

 
AlexandrVV #:

Bonjour.

Je dois calculer le bénéfice net du conseiller expert à la fin du travail. Je démarre une boucle par OrdersHistoryTotal() dans OnDeinit et j'ajoute OrderProfit().

Profit=Profit+OrderProfit() ;

Mais au final, le bénéfice est différent de celui rapporté dans le testeur. J'ai découvert que la valeur des points diffère sur une partie des commandes.

Quelle en est la raison ? L 'écart est réglé manuellement dans le testeur.

Le swap et la commission ont été oubliés pour être ajoutés ! Le spread est déjà pris en compte puisqu'il se situe toujours entre les prix d'entrée et de sortie.

 
Mihail Matkovskij #:

Le swap et la commission ont été oubliés pour être ajoutés ! Le spread est déjà pris en compte car il est toujours compris entre le prix d'entrée et le prix de sortie.

Oh, c'est vrai ! Merci beaucoup ! !! )

 
Bonjour à tous. S'il vous plaît dites-moi où je peux trouver un script ou un indicateur qui envoie une notification à mon téléphone, lorsque le prix atteint un certain niveau spécifié par moi.
 

Pouvez-vous me dire quel est le problème, le code devrait fermer les ordres et s'ils sont manquants il devrait en ouvrir un nouveau.

Mais pour une raison quelconque, il ne ferme qu'un seul ordre et s'arrête jusqu'au prochain signal.

2022.01.17 16:22:08.389 2022.01.04 08:00:00 e : Signal 1.1322 < clos 1.1304 ExistPosSell 0
2022.01.17 16:22:08.389 2022.01.04 08:00:00 e : Signal 1.1322 > clos 1.1304 ExistPosBuy 1
2022.01.17 16:22:08.366 2022.01.04 08:00:00 e : Signal 1.1325 < clos 1.1306 ExistPosSell 0
2022.01.17 16:22:08.366 2022.01.04 04:00:00 e : Signal 1.1325 > clos 1.1306 ExistPosBuy 1
2022.01.17 16:22:08.327 2022.01.04 2022.01.04 00:00:00 e : Signal 1.1326 < clos 1.1296 ExistPosSell 0
2022.01.17 16:22:08.327 2022.01.04 00:00:00 e : Signal 1.1326 > clos 1.1296 ExistPosBuy 1
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e : Signal 1.1328 < clos 1.1283 ExistPosSell 0
2022.01.17 16:22:08.298 2022.01.03 20:00:00 e : close #1 acheter 0.01 EURUSD à 1.13598 au prix 1.12831

2022.01.17 16:22:08.298 2022.01.03 20:00:00 e : Signal 1.1328 > clos 1.1283 ExistPosBuy 1
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e : ouvert #4 acheter 0.01 EURUSD à 1.13512 ok
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e : Signal 1.134 < fermeture 1.135 ExistPosSell 0
2022.01.17 16:22:08.190 2022.01.03 16:00:00 e : Signal 1.134 > fermeture 1.135 ExistPosBuy 1

if(isNewBar()==true) {  
if(Signal > clos ) {  //--------------------- МА выше цены закрытия предыдущего бара.
     if(ExistPositions( NULL, OP_BUY, Magic) == true) //---------------- Если есть позиция BUY то
ClosePosWithMaxProfitInCurrency(); //--------  закрытие одной позиции с максимальным профитом в валюте депозита.
         if(ExistPositions( NULL, OP_BUY, Magic) == False) //----------- если позиции BUY отсутствуют то
   ticket=OpenPosition(NULL,OP_SELL, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию SELL

if(Signal < clos ) { //--------------------- МА ниже цены закрытия предыдущего бара.
    if(ExistPositions( NULL, OP_SELL, Magic) == true) //---------------- Если есть позиция SELL то
 ClosePosWithMaxProfitInCurrency(); //---------------------закрытие одной позиции с максимальным профитом в валюте депозита.
        if(ExistPositions( NULL, OP_SELL, Magic) == False)  //----------- если позиции SELL отсутствуют то
  ticket=OpenPosition(NULL,OP_BUY, NDLot(Lot),0,0, Magic, Com);} //------------ открываем позицию BUY

} return;