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

 

Comment puis-je contrôler les ordres en attente dans MQL5 ?


Le problème est que j'ai besoin des fonctions suivantes : "Ne pas confondre les positions et les ordres en attente".


Alors comment puis-je obtenir des informations sur ces ordres en attente ?

 
Alexandr Sokolov:

Comment puis-je contrôler les ordres en attente dans MQL5 ?


Le problème est que j'ai besoin des fonctions suivantes : "Ne pas confondre les positions et les ordres en attente".


Alors comment puis-je obtenir des informations sur ces ordres en attente ?

J'ai juste besoin de lire les ordres en attente. Par exemple, cette fonction ne concerne que les ordres stop en attente :

//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
 
Vladimir Karputov:

Vous avez juste besoin de lire les ordres en attente. Par exemple, cette fonction ne concerne que les ordres stop en attente :

Merci beaucoup !


Je regardais juste l'exemple et c'est tout à travers Position...

 
Alexandr Sokolov:

Merci beaucoup !


C'est juste que j'ai regardé l'exemple et c'est tout à travers Position...

Voici un exemple qui se compile :

//+------------------------------------------------------------------+
//|                                    CalculateAllPendingOrders.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//---
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
COrderInfo     m_order;                      // object of COrderInfo class
//--- input parameters
input ulong    InpMagic             = 200;         // Magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   if(!m_symbol.Name(Symbol())) // sets symbol name
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name");
      return;
     }
//---
   int count_buy_stops=0,count_sell_stops=0;
   CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
  }
//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders(int &count_buy_stops,int &count_sell_stops)
  {
   count_buy_stops   = 0;
   count_sell_stops  = 0;

   for(int i=OrdersTotal()-1; i>=0; i--) // returns the number of current orders
      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if(m_order.Symbol()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
            if(m_order.OrderType()==ORDER_TYPE_BUY_STOP)
               count_buy_stops++;
            else
               if(m_order.OrderType()==ORDER_TYPE_SELL_STOP)
                  count_sell_stops++;
           }
  }
//+------------------------------------------------------------------+
Dossiers :
 
Alexandr Sokolov:

Comment puis-je contrôler les ordres en attente dans MQL5 ?


Le problème est que j'ai besoin des fonctions suivantes : "Ne pas confondre les positions et les ordres en attente".


Alors comment puis-je obtenir des informations sur ces ordres en attente ?

La différence est que dans mql4 la fonction OrdersTotal() renvoie le nombre total d'ordres au marché et en attente. Et dans mql5, il renvoie uniquement le nombre d'ordres en attente. Et pour obtenir le nombre de positions, en termes d'ordres de marché mql4, la fonction PositionsTotal()

 
Alexey Viktorov:

Je n'ai pas vu le fil de discussion sur le forum, mais après avoir regardé quelques instructions, je trouve celle-ci plus compréhensible. J'ai essayé, ça a marché, mais je ne vois pas la nécessité de l'appliquer pour le moment. Bien que je pense que ce serait une bonne idée de combiner l'historique de tous les terminaux dans un seul dossier.

J'ai lu l'article sur le lien. C'est brillant. Et c'est une super solution, pour ceux qui ont de nombreux terminaux. Il peut maintenant y avoir un seul dossier mql4 pour différents terminaux, sans avoir à copier constamment les fichiers dans les deux sens.

Merci beaucoup ! !!

 
Sergey Likho:

J'ai lu l'article sur le lien. C'est brillant. Et c'est une super solution, pour ceux qui ont de nombreux terminaux. Il peut maintenant y avoir un seul dossier mql4 pour différents terminaux, sans avoir à copier constamment les fichiers dans les deux sens.

Merci beaucoup ! !!

Ce n'est pas moi qu'il faut remercier. J'ai prêté attention aux posts de Sergei Tabolin et j'ai fait correspondre certains des mots qu'ils contiennent avec le souhait de Seric29, enfin j'ai cherché moi-même.

 

Bonjour.

S'il vous plaît, aidez-moi à résoudre ce code.

J'ai essayé de mettre la grille sur le marché et ils ont commencé à m'injurier :2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1 : montant de lots invalide pour lafonction FreeMarginCheck

fichier Expert Advisor ci-joint.

Merci d'avance.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
Dossiers :
123.mq4  87 kb
 
Dmitriy Prigodich:

Bonjour.

S'il vous plaît, aidez-moi à résoudre ce code.

J'ai essayé de mettre la grille sur le marché et ils ont commencé à m'injurier :2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1 : montant de lots invalide pour la fonction FreeMarginCheck

fichier Expert Advisor ci-joint.

Merci d'avance.

Il est également indiqué : montant des lots invalides

La fonction FreeMarginCheck ne vérifie pas les arguments du conseiller-expert et n'ajoute pas une taille de lot normalisée.

PS - bien, ne mettez pas tout en rang sur le marché, d'autant plus qu'ils n'utilisent pas eux-mêmes. Besoin d'évaluation, remplir une meilleure codobase

 

Je voulais faire une vidéo, mais je n'ai pas de caméra, et j'ai un vieux téléphone de l'époque des Tsar Peas. J'ai donc créé un expert et l'ai appelé 111.mq4.

Voici son code primitif.

#property strict
#import "111б.ex4"//111б.mq4
int Funi(string Soob);
#import

int OnInit(){Funi(Symbol());return(INIT_SUCCEEDED);}
void OnDeinit(const int reason){}
void OnTick(){Funi(Symbol());}


et ensuite j'ai créé une bibliothèque et l'ai nommée 111b.mq4 avec le code primitif

#property library
#property strict
 string  st_mas[]; //export
 int Funi(string Soob)export
 {st_mas[(ArrayResize(st_mas,ArrayRange(st_mas,0)+1))-1]=Soob;
 Print("Размер массива = ",ArrayRange(st_mas,0));
 for(int i=0;i<ArrayRange(st_mas,0);++i)
 Print("Вывод массива ",st_mas[i]);
 return 2;}

. J'ai déclaré un tableau de chaînes dans la bibliothèque, mais il s'est avéré par la suite que les développeurs n'avaient pas prévu la possibilité d'exporter et d'importer des tableaux et des variables. Il s'avère qu'il n'y a aucun moyen d'obtenir un tableau global qui se souviendrait de l'information. Mais peu importe, j'ai pris un autre chemin. J'ai créé la fonctionFuni(). Puis j'ai créé des liens durs par clé H ; les terminaux sont configurés comme ceci

Les fichiers originaux sont dans Forex4you, et les liens dans Forex4you1 J'ai jeté le robot original et le lien vers le graphique, les premiers calculs ont été obtenus, mais quand les ticks sont allés seulement original Forex4you mis à jour les informations et le tableaust_mas augmenté en taille, mais quand les ticks sont allés à Forex4you1 rien ne se passe que lorsque le fichier manuellement arrive au graphique. Alors j'ai pris un autre chemin. J'ai créé un Conseiller Expert appelé 333.mq4 et l'ai installé dans MT4 Forex4you1 et y ai connecté la bibliothèque 111b.mq4 et lancé le programme sur un graphique. Le robot 333.mq4 a pu se connecter à la bibliothèque et a commencé à fonctionner en ligne, mais il s'est avéré par la suite que la bibliothèque était un prototype et que le tableau qui y est déclaré ne fonctionne que dans un seul graphique.

L'exemple montre que même si le robot est connecté à une bibliothèque avec un tableau global, ce tableau fonctionne comme une image et ne peut toujours pas assurer la communication, nous devons créer des variables partagées qui seront disponibles de tous les côtés. Qui sait s'il est possible d'exporter des tableaux et des variables. Je pense que la deuxième option est d'écrire les informations dans un fichier, car le fichier ne sera pas un proxy et sera lu des deux côtés et ainsi les terminaux et les robots pourront communiquer entre eux. Qui sait comment travailler avec des fichiers vérifie cette théorie car je n'ai pas encore cette expérience.

Savez-vous si vous pouvez exporter des tableaux et des variables ?

Raison: