Fehler, Irrtümer, Fragen - Seite 1739

 

Verstehe ich das richtig, dass die Änderung von Aufträgen durch SB bei einem Austausch nicht funktioniert?

//+------------------------------------------------------------------+
//| 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));
  }

Sie ist nicht festgelegt.

 
SB auf allen Handelsservern
//+------------------------------------------------------------------+
//| Get the property value "ORDER_TYPE_FILLING"                      |
//+------------------------------------------------------------------+
ENUM_ORDER_TYPE_FILLING COrderInfo::TypeFilling(void) const
  {
   return((ENUM_ORDER_TYPE_FILLING)OrderGetInteger(ORDER_TYPE_FILLING));
  }

Gibt im Tester IMMERENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN zurück.

fxsaber:

Die Füllung ist nicht fest.

Wenn Sie also die Füllung in OrderModify über COrderInfo::TypeFilling() einstellen, dann wird im RoboForexEU-MetaTrader 5 ein logischer Fehler [Unsupported filling mode] auftreten. Dieser Fehler tritt jedoch nicht in MetaQuotes-Demo auf - falsch konfigurierter Server des Entwicklers?


 
fxsaber:

Verstehe ich das richtig, dass die Änderung von Aufträgen durch SB bei einem Austausch nicht funktioniert?

//+------------------------------------------------------------------+
//| 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));
  }

Das ist nicht der Fall.

Keine Panik!

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:

Keine Panik!

//+------------------------------------------------------------------+
//| 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));
  }

Moment, warum sollte man beim Ändern überhaupt den Fülltyp angeben?

Aus der Dokumentation:

Handelsauftrag zur Änderung der StopLoss- und/oder TakeProfit-Ebenen. Erfordert die Angabe von 4 (jamb:)) Feldern:

  • Aktion
  • Symbol
  • sl
  • tp
  • Position
 
Alexey Kozitsyn:

Moment, warum sollte man beim Ändern überhaupt den Fülltyp angeben?

Aus der Dokumentation:

Glauben Sie nicht alles, was dort steht. Sie MUSS angegeben werden. Andernfalls wird es nicht funktionieren.

Ich kann SB nicht verwenden. Aber Sie können OrderModify auf der Börse ausprobieren, um sicherzugehen, dass der Fehler vorliegt.

 
fxsaber:

Glauben Sie nicht alles, was geschrieben wird. Sie MÜSSEN angeben. Sonst wird es nicht funktionieren.

Ich stimme dem völlig zu, aber...

Ich weiß nicht, wie man SB benutzt. Sie können jedoch OrderModify an der Börse ausprobieren, um sich des Fehlers zu vergewissern.

Aber MQ hat sogar ein Beispiel in das Dokument eingefügt... Es ist dort nicht angegeben...

Es gibt auch einen Expert Advisor, den ich geschrieben habe, der an der Börse funktioniert und einen solchen Code verwendet:

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

Aber MQ hat dem Dokument sogar ein Beispiel beigefügt... Es wird nicht spezifiziert...

Falsch, Leute. Wir müssen sowohl Doc als auch SB korrigieren.

Alexey Kozitsyn:

Es gibt auch einen EA, den ich geschrieben habe, der an einer Börse arbeitet und einen solchen Code verwendet:

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

Und im Testgerät?

 
fxsaber:
Falsch, Leute. Sie müssen sowohl den Doc als auch den SB korrigieren.
Versuchen Sie zunächst, den Auftrag an der Börse zu ändern und dann zu sprechen.
 
fxsaber:

Falsch, Leute. Sie müssen sowohl den Doc als auch den SB korrigieren.

Und im Testgerät?

Funktioniert bereits mit installierten Haftbefehlen. Ist im Tester nicht gelaufen.