Erreurs, bugs, questions - page 1739

 
SB sur tous les serveurs de trading
//+------------------------------------------------------------------+
//| Get the property value "ORDER_TYPE_FILLING"                      |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
  {
   return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
  }

Renvoie TOUJOURSENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN dans le testeur.

fxsaber:

La garniture n'est pas fixée.

Ainsi, si vous définissez le remplissage dans OrderModify via COrderInfo::TypeFilling(), RoboForexEU-MetaTrader 5 affichera une erreur logique [Unsupported filling mode]. Cependant, cette erreur ne se produit pas dans MetaQuotes-Demo - le serveur du développeur est mal configuré ?


 
fxsaber:

Ai-je bien compris que la modification des ordres par SB ne fonctionnera pas dans un échange ?

//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

Ce n'est pas le cas.

Ne paniquez pas !

class CTrade : public CObject
  {
protected:
   MqlTradeRequest   m_request;         // request data
   MqlTradeResult    m_result;          // result data
   MqlTradeCheckResult m_check_result;  // result check data
   bool              m_async_mode;      // trade mode
   ulong             m_magic;           // expert magic number
   ulong             m_deviation;       // deviation default
   ENUM_ORDER_TYPE_FILLING m_type_filling;
   ENUM_ACCOUNT_MARGIN_MODE m_margin_mode;
   //---
   ENUM_LOG_LEVELS   m_log_level;

public:
 
Alexey Kozitsyn:

Ne paniquez pas !

//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();

//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }
 
fxsaber:
//+------------------------------------------------------------------+
//| Modify specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderModify(const ulong ticket,const double price,const double sl,const double tp,
                         const ENUM_ORDER_TYPE_TIME type_time,const datetime expiration,const double stoplimit)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();

//--- setting request
   m_request.action      =TRADE_ACTION_MODIFY;
   m_request.magic       =m_magic;
   m_request.order       =ticket;
   m_request.price       =price;
   m_request.stoplimit   =stoplimit;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.type_time   =type_time;
   m_request.expiration  =expiration;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

Attendez, pourquoi spécifier le type de remplissage lors de la modification ?

Dans la documentation :

Ordre de transaction pour modifier les niveaux StopLoss et/ou TakeProfit. Il faut préciser 4 champs (jamb :)) :

  • action
  • symbole
  • sl
  • tp
  • position
 
Alexey Kozitsyn:

Attendez, pourquoi spécifier le type de remplissage lors de la modification ?

Dans la documentation :

Ne croyez pas tout ce qu'il dit. Il DOIT être spécifié. Sinon, cela ne fonctionnera pas.

Je ne peux pas utiliser SB. Mais vous pouvez essayer OrderModify sur l'échange pour vous assurer du bug.

 
fxsaber:

Ne croyez pas tout ce qui est écrit. Vous DEVEZ préciser. Sinon, cela ne fonctionnera pas.

Je suis totalement d'accord, mais...

Je ne sais pas comment utiliser SB. Mais vous pouvez essayer OrderModify sur l'échange pour vous assurer du bug.

Mais MQ a même ajouté un exemple dans la doc... Ce n'est pas indiqué là...

Il existe également un conseiller expert que j'ai écrit, qui fonctionne sur le marché boursier et utilise un tel morceau de code :

         //--- Модифицируем ордер
         trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );
 
Alexey Kozitsyn:

Mais MQ a même ajouté un exemple au document... Il ne précise pas...

Faux, les gens. Nous devons corriger à la fois le doc et le SB.

Alexey Kozitsyn:

De plus, il y a un EA que j'ai écrit qui fonctionne sur un échange et qui utilise un tel morceau de code :

         //--- Модифицируем ордер
         trade.OrderModify( order.Ticket(), order.PriceOpen(), newSl, newTp, order.TypeTime(), 0 );

Et dans le testeur ?

 
fxsaber:
Faux, les gens. Vous devez corriger à la fois le doc et le SB.
Essayez d'abord de modifier l'ordre sur l'échange et ensuite de parler.
 
fxsaber:

Faux, les gens. Vous devez corriger à la fois le doc et le SB.

Et dans le testeur ?

Fonctionne déjà avec les mandats installés. Il n'y avait pas de course dans le testeur.
 
C'est quoi ce bordel ?
2016.10.20 15:40:44     Tester  MQL5 Cloud Server "4.agents.mql5.com:443" not found
2016.10.20 15:40:41     Core 1  connection closed
2016.10.20 15:40:16     History nothing to analyze

2016.10.20 15:40:16     Core 1  common synchronization completed
2016.10.20 15:40:16     Tester  RTS-12.16,M1 (BCS-MetaTrader5): visual testing of Experts\fxsaber\Test9.ex5 from 2016.10.19 00:00 to 2016.10.20 00:00
2016.10.20 15:40:16     Core 1  authorized (agent build 1455)
2016.10.20 15:40:16     Core 1  connected
2016.10.20 15:40:16     Core 1  connecting to 127.0.0.1:3000

Eh bien, si soudainement il n'y a pas d'histoire, pourquoi y a-t-il une seule course pendant 28 (25 + 3) secondes ? Il s'agit également de parler du Cloud !

Cela s'est produit alors que la fenêtre de visualisation était ouverte, ce que j'avais complètement oublié. Ça n'a aucun sens.