Caractéristiques du langage mql5, subtilités et techniques - page 12

 
Leo59:
Merci !
Si je comprends bien, l'expression "ordre actif" fait référence aux positions d'achat et/ou de vente ainsi qu'aux ordres en attente fixés (acceptés par le courtier).
Si j'ai : des positions longues et courtes ouvertes, et une limite d'achat et un arrêt de vente définis, alors OrdersTotal() renverra la valeur =4, n'est-ce pas ?

Il peut y avoir une position BUY ouverte et un ordre BUY actif. J'ai fourni un exemple de code ci-dessus, mais il est probablement plus facile d'utiliser les doigts. Comment se déclenche le TP d'une position ouverte?

  • Le prix atteint le TP de la position BUY.
  • Le serveur de négociation crée un ordre de VENTE actif correspondant.
  • Le terminal a alors simultanément une position d'ACHAT et un ordre de VENTE.
  • L'ordre de VENTE est exécuté en entrant dans l'historique et en y générant une transaction.
  • La position initiale BUY est fermée sur la base de cette transaction, qui n'est capturée nulle part - elle est indirectement présente dans l'historique des transactions.

 
Leo59:
Tout a été accepté depuis longtemps, et il n'est probablement pas déraisonnable de lire le tutoriel de Sergei Kovalev (il est intégré à MQL4) avant d'écrire la documentation :
Lisez le titre du fil de discussion. Tout le monde pensait que c'était à propos de MQL5. Il existe une section correspondante pour MQL4 et MT4 ici sur le forum. Si vous posiez votre question là-bas, la réponse serait différente.
 
Leo59:
Tout a été accepté depuis longtemps, et avant d'écrire de la documentation, il serait probablement utile de lire le tutoriel de Sergei Kovalev (il est intégré à MQL4) :


C'est ainsi que l'on peut construire un bloc dans lequel les ordres de marché et les ordres en attente sont analysés :

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

La valeur initiale i=1 est spécifiée dans l'en-tête de l'instruction de boucle, et la condition pour la fin de la boucle est l'expression i<=OrdersTotal(). La fonction OrdersTotal() renvoie le montant total des ordres au marché et en attente, c'est-à-dire les ordres qui sont affichés dans le terminal dans l'onglet Trade. Par conséquent, le nombre d'itérations dans la boucle sera égal au nombre d'ordres présents dans la transaction.

Veuillez insérer le code correctement :Insérez correctement le code dans le forum(j'ai déjà corrigé ce que vous avez inséré - et regardez : vous avez inséré juste du texte, et maintenant c'est du CODE, avec la coloration syntaxique).
 
Vitaly Muzichenko:

Il n'y a pas besoin de baratte)

Il s'agit d'un code MT4 et il n'y a pas de division des ordres et des positions - tout est mélangé.

La fonction OrdersTotal() est-elle différente dans MQL4 et MQL5 ? Le compilateur semble être le même .....
 
Leo59:
Tout a été accepté depuis longtemps, et avant d'écrire de la documentation, il serait probablement utile de lire le tutoriel de Sergei Kovalev (il est intégré à MQL4) :


C'est ainsi que l'on peut construire un bloc dans lequel les ordres de marché et les ordres en attente sont analysés :

   for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                    
         // Здесь должен выполняться ..
         // ..анализ характеристик ордеров
        }
     }                                        //Конец тела цикла

La valeur initiale i=1 est spécifiée dans l'en-tête de l'instruction de boucle, et la condition pour la fin de la boucle est l'expression i<=OrdersTotal(). La fonction OrdersTotal() renvoie le montant total des ordres au marché et en attente, c'est-à-dire les ordres qui sont affichés dans le terminal dans l'onglet Trade. Par conséquent, le nombre d'itérations dans la boucle sera égal au nombre d'ordres présents dans la transaction.

Non seulement vous parlez de mql4 et montrez du code de mql4 (et ce fil de discussion concerne les caractéristiques et les subtilités de la programmation dans mql5), mais vous avez également écrit la boucle de manière incorrecte - vous devez commencer à partir de zéro, sinon vous manquerez toujours un ordre.
 
Leo59:
Les fonctions OrdersTotal() sont-elles différentes dans MQL4 et MQL5 ? Le compilateur semble être le même .....
Oui, ils le sont.
 
Leo59:
Les fonctions OrdersTotal() sont-elles différentes dans MQL4 et MQL5 ? Le compilateur semble être le même .....

En ce qui concerne les fonctions commerciales, il existe des différences. Le MQL4 a déjà été mentionné ci-dessus :

Alors que dans MQL5, OrdersTotal() retournera le nombre d'ordres en attente. Ainsi, dans MQL5, tout est systématisé à un niveau supérieur : les escalopes sont séparées, les mouches sont séparées.
 
Artyom Trishkin:
Oui, différent.
Et quelle est la différence ?
 
Leo59:
Quelle est la différence ?

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

Particularités de mql5, trucs et astuces

Vladimir Karputov, 2017.02.28 19:44

Quant aux fonctions de négociation, il y a des différences. Vous avez déjà mentionné MQL4 :

alors que dans MQL5, OrdersTotal() retournera le nombre d'ordres en attente. Ainsi, dans MQL5, tout est systématisé à un niveau supérieur : les escalopes sont séparées, les mouches sont séparées.

 
Leo59:
Quelle est la différence ?

CommandesTotal()

Renvoie le nombre de commandes actives.

intOrdersTotal() ;

Valeur retournée

Valeur de type int.

Note

Les ordres en attente actifs ne doivent pas être confondus avec les positions, qui sont également affichées dans l'onglet "Trade" du panneau "Toolbox". Un ordre est une instruction d'exécuter une transaction, tandis qu'une position est le résultat d'une ou plusieurs transactions.

Avec le "netting" des positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING et ACCOUNT_MARGIN_MODE_EXCHANGE), une seule position peut être ouverte pour chaque symbole à tout moment et elle est le résultat d'une ou plusieurs transactions. Les positions ne doivent pas être confondues avec les ordres en attente actifs qui sont également affichés dans l'onglet "Trade" du panneau "Toolbox".

En cas de représentation indépendante des positions (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), plusieurs positions peuvent être ouvertes simultanément pour chaque symbole.


PositionsTotal()

Donne le nombre de postes ouverts.

intPositionsTotal() ;

Valeur retournée

Valeur de type int.

Note

Avec le "netting" des positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING et ACCOUNT_MARGIN_MODE_EXCHANGE), il n'est possible d'ouvrir qu'une seule position pour chaque symbole à tout moment qui résulte d'une ou plusieurs transactions. Les positions ne doivent pas être confondues avec les ordres en attente actifs qui sont également affichés dans l'onglet "Trade" du panneau "Toolbox".

En cas de représentation indépendante des positions (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), plusieurs positions peuvent être ouvertes simultanément pour chaque symbole.


Raison: