Questions des débutants MQL5 MT5 MetaTrader 5 - page 1454

 
Mikhail Toptunov #:

Messieurs les ministres !)

Vingt-cinq encore.

   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
        {
         long f= m_position.Magic();
         if(m_position.Comment()==comment)
            if(m_position.Type()==type)
               if(m_position.Magic()==magic)
                  return(true);
        }

Un mélange de chevaux, de personnes....

Qu'est-ce que c'est que ça ?

Nous demandons le nombre d'ordres ouverts, mais nous vérifions les positions. Ça ne va pas marcher.
 
JRandomTrader #:

Hélas, ce n'est pas tout à fait le cas. J'ai déjà montré ici comment j'ai reçu le code 10012, zéro ticket de commande, mais la commande a été exécutée. Le MQ ne dit rien à ce sujet.

J'ai écrit une béquille à ce sujet, mais il ne sera possible de la vérifier qu'après avoir reçu à nouveau le code 10012).

Il s'agit d'une exception aux règles, et une personne ne peut pas comprendre la différence entre les ordres, les transactions et les positions. Et vous le confondez également avec les exceptions))))))

Lorsqu'il aura compris comment cela fonctionne, il sera en mesure de faire un chèque pour ses propres besoins.

 
Aleksandr Slavskii #:

... et une personne ne peut pas comprendre la différence entre les ordres, les transactions et les positions . ..

Lorsqu'il aura compris comment cela fonctionne, il sera en mesure de faire un chèque pour ses propres besoins.

Tout est décrit en détail ici.

Cordialement, Vladimir.

 

Merci, il semble avoir trouvé la solution !!!!


//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction&    trans,     // структура торговой транзакции
                        const MqlTradeRequest&        request,   // структура запроса
                        const MqlTradeResult&         result)    // структура ответа
  {
//--- результат выполнения торгового запроса
 ulong            lastOrderID   =trans.order; 

//--- тип транзакции
   ENUM_TRADE_TRANSACTION_TYPE  trans_type=trans.type;
   switch(trans.type)
     {
      case  TRADE_TRANSACTION_POSITION:   // изменение позиции
        {

        }
      break;
      //---
      case TRADE_TRANSACTION_ORDER_ADD:    // добавление нового действующего ордера
        {
         fix_position_open(lastOrderID);
        }
      break;
      case TRADE_TRANSACTION_REQUEST:    // добавление нового действующего ордера
        {

        }
      break;
     }
//---
  }
//--- Фиксируем если позиция открыта --------------------------------+
void fix_position_open(ulong lastOrderID)
  {
//--- Фиксируем если позиция открыта
   for(int i=0; i<ArraySize(position_buff); i++)
      if(position_buff[i].timeOp==1)
         if(!match_open_orders(lastOrderID))
           {
            position_buff[i].timeOp= 0;     // Фиксировать время
            Print("Метод OnTrade() по рынку не выполнен. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
         else
           {
            position_buff[i].timeOp= TimeCurrent();
            Print("Метод OnTrade() по рынку выполнен успешно. Код возврата=",m_trade.ResultRetcode(),
                  " (",m_trade.ResultRetcodeDescription(),")"+position_buff[i].comment+" lot "+DoubleToString(position_buff[i].lot));//
           }
  }
//--- Соответствие открытых ордеров ---------------------------------+
bool match_open_orders(long lastOrderID)
  {
//---
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Identifier()==lastOrderID)
            return(true);
   for(int i=OrdersTotal()-1; i>=0; i--)
      if(m_order.SelectByIndex(i))
         if(m_order.Ticket()==lastOrderID)
            return(true);
   return(false);
  }
 
Mikhail Toptunov #:

Merci, il semble avoir trouvé la solution !!!!

Une position est ouverte lorsqu'un ordre est exécuté, c'est-à-dire qu'une transaction est effectuée et que l'ordre est enregistré dans l'historique.

 
Que faire si toutes les fonctions ne sont pas disponibles dans MQL5 ?
 
Baruandreas #:
Que faire si toutes les fonctions ne sont pas disponibles dans MQL5?

Oublier complètement mql4 et lire constamment la documentation de mql5.

 
Baruandreas #:
Que faire si toutes les fonctions ne sont pas disponibles dans MQL5?

Votre question n'est pas claire. Commencez par clarifier votre question :

  1. S'agit-il de fonctions déjà existantes dans M QL5 ?
  2. Existe-t-il une fonction dans l'ensemble des fonctions prêtes à l'emploi de MQL5, mais elle ne fonctionne pas ?
  3. Avez-vous besoin d'une certaine fonction, mais cette fonction n'existe pas dans l'ensemble des fonctions MQL5 prêtes à l'emploi ?
Cordialement, Vladimir.
 
MrBrooklin #:

Votre question n'est pas claire. Tout d'abord, clarifiez votre question :

  1. S'agit-il de fonctions déjà existantes dans MQL5?
  2. Existe-t-il une fonction dans l'ensemble de MQL5 prêt à l'emploi, mais elle ne fonctionne pas ?
  3. Avez-vous besoin d'une certaine fonction, mais cette fonction n'existe pas dans l'ensemble de MQL5 prêt à l'emploi ?
Cordialement, Vladimir.

Comme on l'a découvert plus tard, il s'agit de l'un de ceux qui polluent tout le forum avec leurs questions. Il a même créé un sujet séparé...

 
Alexey Viktorov #:

Comme on l'a constaté par la suite, il s'agit d'une de ces personnes qui encombre tout le forum avec sa question. Il a même créé un sujet séparé...

Bonjour Alexey, maintenant tout est clair.

Cordialement, Vladimir.

Raison: