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

 
Artyom Trishkin:

Ça ne marchera pas ici - il n'utilise pas les smartphones et autres nouveaux gadgets - il y a un téléphone de Smolny...

Il y a au moins une personne qui partage les mêmes idées ici. Moi aussi, j'ignore tous ces gadgets et les médias sociaux. Sauf qu'il n'y a pas de téléphone du Kremlin...

 

J'en ai marre des requotes.

//+------------------------------------------------------------------+
void OpenSell()
  {

   m_symbol.Name("EURUSD");
   RefreshRates();
   if(m_trade.Sell(InpLots,"EURUSD",m_symbol.Bid(),0.0,0.0))
     {
      if(m_trade.ResultDeal()==0)
        {
         Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
      else
        {
         Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }

     }

//---
  }
//+------------------------------------------------------------------+

Quel est le problème avec ce code ? Je n'obtiens même pas le résultat d'une vérification de l'exécution d'un ordre.

Je reçois juste une table avec une requote, c'est tout.


 
ilvic:

J'en ai marre des requotes.

Quel est le problème avec ce code ? Je n'obtiens même pas le résultat d'une vérification de l'exécution d'un ordre.

Je reçois juste une table avec une requote et c'est tout.


Vous devez coller le résultat dePrintResultTrade comme un code. Pas sous la forme d'une image mais sous la forme d'un code.

 

C'est l'écriture experte. Veuillez noter qu'il n'écrit pas le résultat du test.

2018.11.02 15:20:36.769 Above (EURUSD,M1)       CTrade::OrderSend: instant sell 1.00 EURUSD at 1.14299 [requote (1.14307/1.14317)]

Et voici ce que dit le journal.

2018.11.02 11:18:49.826 Network '13107230': scanning network for access points
2018.11.02 11:19:17.821 Network '13107230': scanning network finished
2018.11.02 15:20:35.846 Trades  '13107230': instant sell 1.00 EURUSD at 1.14299 (deviation: 100)
2018.11.02 15:20:36.769 Trades  '13107230': requote 1.14307 / 1.14317 (instant sell 1.00 EURUSD at 1.14299 (deviation: 100))

Démonstration du serveur de méthaquotes

 
ilvic:

Ceci est écrit par un expert. Veuillez noter qu'il n'écrit pas le résultat du test.

Et voici ce que dit le journal.

Démonstration du serveur methaqvotes

Insérez le résultat dePrintResultTrade comme un code. Pas comme une image, mais comme un code.


Ou vousn'arrivez pas du toutà PrintResultTrade et vous êtes rejeté en premier ?

 

C'est le cas ? Si non, dites-moi ce que vous voulez dire.

//+------------------------------------------------------------------+
//| Print CTrade result                                              |
//+------------------------------------------------------------------+
void PrintResultTrade(CTrade &trade,CSymbolInfo &symbol)
  {
   Print("File: ",__FILE__,", symbol: ",m_symbol.Name());
   Print("Code of request result: "+IntegerToString(trade.ResultRetcode()));
   Print("code of request result as a string: "+trade.ResultRetcodeDescription());
   Print("Deal ticket: "+IntegerToString(trade.ResultDeal()));
   Print("Order ticket: "+IntegerToString(trade.ResultOrder()));
   Print("Volume of deal or order: "+DoubleToString(trade.ResultVolume(),2));
   Print("Price, confirmed by broker: "+DoubleToString(trade.ResultPrice(),symbol.Digits()));
   Print("Current bid price: "+DoubleToString(symbol.Bid(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultBid(),symbol.Digits()));
   Print("Current ask price: "+DoubleToString(symbol.Ask(),symbol.Digits())+" (the requote): "+DoubleToString(trade.ResultAsk(),symbol.Digits()));
   Print("Broker comment: "+trade.ResultComment());
  }
//+------------------------------------------------------------------+
 
ilvic:

C'est l'écriture experte. Veuillez noter qu'il n'écrit pas le résultat du test.

Et voici ce que dit le journal.

Serveur methaquotes demo.

Pourquoi avez-vous dû couper le code ? Exemple de fonction d'ouverture dans un codeEA à SAR parabolique

//+------------------------------------------------------------------+
//| Open Sell position                                               |
//+------------------------------------------------------------------+
void OpenSell(double sl,double tp)
  {
   sl=m_symbol.NormalizePrice(sl);
   tp=m_symbol.NormalizePrice(tp);

   double short_lot=InpLots;
//--- check volume before OrderSend to avoid "not enough money" error (CTrade)
   double free_margin_check= m_account.FreeMarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   double margin_check     = m_account.MarginCheck(m_symbol.Name(),ORDER_TYPE_SELL,short_lot,m_symbol.Bid());
   if(free_margin_check>margin_check)
     {
      if(m_trade.Sell(short_lot,m_symbol.Name(),m_symbol.Bid(),sl,tp))
        {
         if(m_trade.ResultDeal()==0)
           {
            Print("#1 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
         else
           {
            Print("#2 Sell -> true. Result Retcode: ",m_trade.ResultRetcode(),
                  ", description of result: ",m_trade.ResultRetcodeDescription());
            PrintResultTrade(m_trade,m_symbol);
           }
        }
      else
        {
         Print("#3 Sell -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription());
         PrintResultTrade(m_trade,m_symbol);
        }
     }
   else
     {
      Print(__FUNCTION__,", ERROR: method CAccountInfo::FreeMarginCheck returned the value ",DoubleToString(free_margin_check,2));
      return;
     }
//---
  }
 
ilvic:

C'est le cas ? Si non, dites-moi ce que vous voulez dire.

Tu as supprimé l'étape de vérification n°3 du code.

 
Vladimir Karputov:

Insérez le résultat dePrintResultTrade comme code. Pas comme une image, mais comme un code.


Ou vousn'arrivez pas à PrintResultTrade et vous êtes rejeté plus tôt ?

Exactement, si l'ordre est exécuté, votre impression ressemblera à ceci

2018.11.02 10:09:12.648 Above (EURUSD,M1)       #2  Buy -> true. Result Retcode: 10009, description of result: done at 1.14387

S'il y a une requote, le conseiller expert reste silencieux.

Et je me retrouve avec une commande non remplie

 
ilvic:

Exactement, si la commande est exécutée, l'impression ressemblera à ceci

Si une requote, le Conseiller Expert sera silencieux comme un poisson.

Et je me retrouve avec une commande non remplie.

Dans mon message, j'ai donné un exemple de fonction. Je ne l'ai pas coupé. Il existe un exemple dans l'EASAR parabolique.

Raison: