Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   Fehler nach Update in MT5 (http://www.expert-advisor.com/forum/showthread.php?t=7026)

Max2018 22.06.21 10:23

Fehler nach Update in MT5
 
Hallo,

ich habe in einem EA folgenden Code stehen
Code:

  MqlTradeRequest request={0};
das gesamte CodeFragment lautet
Code:

bool ordersendLive(string symbol, int ordertype, double lot, double sl, double tp, int dev, string comment, int magic, color col)
{
 
  //bool set=false;
  MqlTradeRequest request={0};
  MqlTradeResult  result={0};
   
//--- parameters of request
  request.action  =TRADE_ACTION_DEAL;                  // type of trade operation
  request.symbol  =symbol;                              // symbol
  request.volume  =lot;                                // volume of 0.1 lot
  request.deviation=dev;                                // allowed deviation from the price
  request.magic    =magic; 
  request.comment  =comment;                            // MagicNumber of the order
  request.sl      =sl;
  request.tp      =tp;
 
 
  if(ordertype==0)
          {
            request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
            request.type =ORDER_TYPE_BUY;
          }
        else
          {
            request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
            request.type =ORDER_TYPE_SELL;
          }

  bool res = OrderSend(request,result);
  Print("retcode: ",result.retcode);
  if(result.retcode!=1009){ PrintFormat("OrderSend error %d",GetLastError()); }
 
  return(res);
}

Nach dem neuesten Update von MT5 wird mir nun aber auf den Befehl
Code:

  MqlTradeRequest request={0};
eine Fehlermeldung generiert die da lautet:
"cannot convert 0 to enum ´ENUM_TRADE_REQUEST_ACTION´ "


Was kann man dagegen tun ?

Indikator-Trading 22.06.21 10:48

MqlTradeRequest ist ein Struct, dieses kannst du somit nicht einfach auf 0 setzten. Es reicht die Struct zu deklarieren und dann die einzelnen Teile zu definieren.

Code:


  MqlTradeRequest request;
  MqlTradeResult  result;
   
//--- parameters of request
  request.action  =TRADE_ACTION_DEAL;                  // type of trade operation
  request.symbol  =symbol;                              // symbol
  request.volume  =lot;                                // volume of 0.1 lot
  request.deviation=dev;                                // allowed deviation from the price
  request.magic    =magic; 
  request.comment  =comment;                            // MagicNumber of the order
  request.sl      =sl;
  request.tp      =tp;

Falls du beim definieren eines echten Enum Feldes einmal so einen Fehler kommen solltest, dann kannst du die entsprechende Enum einfach in Klammern davor setzten. Der Compiler weiß dann, dass es sich um eine Enum handelt.

Beispiel:

Code:

ENUM_ORDER_TYPE OrderType1 = 0;                    // ist Ordertype Buy, könnte aber evtl. jetzt einen Fehler oder eine Warnung rausgeben
ENUM_ORDER_TYPE OrderType2 = (ENUM_ORDER_TYPE) 0;  // Wir keinen Compilerfehler geben
ENUM_ORDER_TYPE OrderType3 = ORDER_TYPE_BUY;        // Beste und lesbarste Variante

Gruß Timo

Max2018 22.06.21 11:05

SUPER - Danke
Du hast wirklich ein unglaubliches Fachwissen .... sehr beeindruckend :)
DANKE


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:04 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum