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

 
Konstantin Nikitin:

Il faut donc extraire la fonctionnalité requise de la classe et l'écrire pour soi-même.

Merci. Ma question est beaucoup plus simple - j'ai ouvert un ordre via OrderSend(request,result) et je veux opérer immédiatement avec ses paramètres - par exemple, les imprimer. Comme ça :
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))
                
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ")
Certains des paramètres, tels que le retcode, l'ordre et le volume, sont imprimés, mais pas le deal et le prix.
Le prix est particulièrement intéressant. Tous les résultats sont dans MqlTradeResult. Je les imprime tous de la même façon, mais certains sont imprimés et d'autres non. La question est de savoir pourquoi certains paramètres sont imprimés et d'autres non.
 

Comment fusionner des tableaux ?

string eData[][50][3];
string bData[][20][5];
 ArrayCopy(eData,bData,ArraySize(eData)); // error: incompatible 3 arrays ranges for ArrayCopy function (50 and 20)

Je comprends queArrayCopy ne copie que des tableaux unidimensionnels ?

 
Vitaly Muzichenko:

Comment fusionner des tableaux ?

Je comprends queArrayCopy ne copie que des tableaux unidimensionnels ?

Non, ArrayCopy copie tous les tableaux qui sont autorisés dans mql5\4. Mais ils doivent être identiques pour être copiés. La deuxième dimension du premier tableau est de 50, et le deuxième tableau n'en a que 20. Il en va de même pour la troisième dimension.
 
Algotrader18:
Merci. Ma question est beaucoup plus simple - j'ai ouvert un ordre via OrderSend(request,result) et je veux opérer immédiatement avec ses paramètres - par exemple, les imprimer. Par exemple, certains paramètres comme le retcode, la commande et le volume sont imprimés, mais pas le deal et le prix.
Le prix est particulièrement intéressant. Tous les résultats sont disponibles dans MqlTradeResult. Je les imprime de la même manière, mais certains d'entre eux sont imprimés et d'autres non. La question est de savoir pourquoi certains paramètres sont imprimés et d'autres non.
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(!OrderSend(request,result))
          return;
                
        Print ("retcode = " + result. retcode + "; ");        
        Print ("deal = " + result. deal + "; ");
        Print ("order = " + result. order + "; "); 
        Print ("volume = " + result. volume + "; ");  
        Print ("price = " + result. price + "; ");
 
Konstantin Nikitin:

C'est comme ça que c'était à l'origine

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

Questions des débutants MQL5 MT5 MetaTrader 5

Algotrader18, 2018.10.25 07:39

Bonjour !

J'ouvre une position et je veux imprimer le contenu de MqlTradeResult comme ceci :


   //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
 //============================================================     
        if(OrderSend(request,result))       
        Print ("result.retcode = " + result.retcode + "; ");        
        Print ("deal = " + result.deal + "; ");
        Print ("order = " + result.order + "; "); 
        Print ("volume = " + result.volume + "; ");  
        Print ("price = " + result.price + "; ");

result.retcode, l'ordre et le volume sont imprimés mais deal et price sont toujours des zéros.
S'il vous plaît, pouvez-vous me dire ce que je fais mal ?

Pourquoi s'être perdu dans le code suivant.... Question...

Je pense que ce retour est inacceptable. Il sera imprimé sur le prochain tic-tac.

 
Alexey Viktorov:
Et je pense que ce retour est inacceptable. Après tout, il sera imprimé sur le prochain tic-tac.

Apprendre CommanderEnvoyer

Valeur retournée

Sile contrôle de la structure de base (contrôle du pointeur) est réussi, true est renvoyé - cela n'indique pas que l'opération commerciale a été exécutée avec succès. Pour obtenir une description plus détaillée du résultat de la fonction, nous devons analyser les champs de la structure du résultat.

Si le contrôle de base est passé, alors seulement nous l'imprimons. Tout cela sur une seule tique. C'est pourquoi j'ai écrit
        if(!OrderSend(request,result))
          return;
 
Konstantin Nikitin:

Exploration de OrderSend

S'il passe le contrôle de base, alors seulement l'imprimer. Tous sur le même tic. C'est pour ça que je l'ai écrit.
Aha. Mais je n'avais pas vu ça ! Je suis désolé...
 
Alexey Viktorov:

C'était le cas à l'origine.

pourquoi était-il perdu dans le code suivant... question...

Mais à mon avis, celle-ci est inacceptable. Il sera imprimé sur le prochain tic-tac.

J'ai essayé plusieurs variantes, dont celle-ci :

        ulong  deal;
        ulong  order;
        double volume;
        double price;    
          
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))

        retcode = result.retcode;
        deal = result.deal;
        order = result.order;
        volume = result.volume;
        price = result.price;
       
      
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ");

Je n'ai pas tout copié dans la question par erreur...

 
Algotrader18:

J'ai essayé différentes options, dont celle-ci :

et copié dans la question par erreur...

Essayez de chercher, fxsaber a déjà travaillé sur ce problème. Je ne sais pas ce qu'il a fait, ça ne m'intéresse pas. Il est plus facile pour moi d'obtenir tous ces paramètres dans OnTradeTransaction.
 
Rustam Esedulaev:
Bonjour à tous !
Dans la mql 4, il existe une vérification telle que IsTradeContedtBusy.
Y a-t-il quelque chose de similaire dans mql 5 ?
Merci !

Il n'y a rien de semblable. MT5 est multithread.