Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 938

 
Konstantin Nikitin:

Ziehen Sie also die benötigte Funktionalität aus der Klasse und schreiben Sie sie selbst.

Ich danke Ihnen. Meine Frage ist viel einfacher - ich habe eine Bestellung über OrderSend(request,result) geöffnet und möchte sofort mit den Parametern arbeiten - z.B. sie ausdrucken. Zum Beispiel so:
 //============================================================
        //--- 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 + "; ")
Einige der Parameter wie Retcode, Bestellung und Volumen werden gedruckt, aber Geschäft und Preis werden nicht gedruckt.
Vor allem der Preis ist von Interesse. Alle Ergebnisse sind in MqlTradeResult enthalten. Ich drucke sie alle auf die gleiche Weise, aber einige von ihnen werden gedruckt, andere nicht. Die Frage ist, warum bestimmte Parameter gedruckt werden und andere nicht.
 

Wie kann ich Arrays zusammenführen?

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

Ich verstehe, dassArrayCopy nur eindimensionale Arrays kopiert?

 
Vitaly Muzichenko:

Wie kann ich Arrays zusammenführen?

Ich verstehe, dassArrayCopy nur eindimensionale Arrays kopiert?

Nein, ArrayCopy kopiert alle Arrays, die in mql5\4 erlaubt sind. Aber sie sollten identisch sein, um kopiert zu werden. Die zweite Dimension des ersten Arrays hat 50, das zweite Array hat nur 20. Das Gleiche gilt für die dritte Dimension.
 
Algotrader18:
Ich danke Ihnen. Meine Frage ist viel einfacher - ich habe eine Bestellung über OrderSend(request,result) geöffnet und möchte sofort mit den Parametern arbeiten - z.B. sie ausdrucken. Zum Beispiel so: Einige Parameter wie Retcode, Bestellung und Volumen werden gedruckt, aber Deal und Preis werden nicht gedruckt.
Vor allem der Preis ist von Interesse. Alle Ergebnisse sind in MqlTradeResult verfügbar. Ich drucke sie gleichermaßen, aber einige werden gedruckt, andere nicht. Die Frage ist, warum bestimmte Parameter gedruckt werden und andere nicht.
 //============================================================
        //--- 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:

So war es ursprünglich

Forum für Handel, automatisierte Handelssysteme und Strategietests

Fragen von Anfängern MQL5 MT5 MetaTrader 5

Algotrader18, 2018.10.25 07:39

Guten Tag!

Ich eröffne eine Position und möchte den Inhalt von MqlTradeResult wie folgt drucken:


   //--- 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, order und volume werden gedruckt, aber deal und price sind immer Nullen.
Können Sie mir bitte sagen, was ich falsch mache?

Warum im nächsten Code verloren gegangen.... Frage...

Ich denke, die Rendite ist inakzeptabel. Sie wird beim nächsten Häkchen gedruckt.

 
Alexey Viktorov:
Und ich denke, diese Rendite ist nicht akzeptabel. Schließlich wird sie beim nächsten Mal gedruckt.

Lernen AuftragSenden

Zurückgegebener Wert

Ist diePrüfung der Grundstruktur (Zeigerprüfung) erfolgreich, wird true zurückgegeben - dies bedeutetjedoch nicht, dass die Handelsoperation erfolgreich ausgeführt wurde. Um eine genauere Beschreibung des Ergebnisses der Funktion zu erhalten, sollten wir die Felder der Ergebnisstruktur analysieren .

Erst wenn die Grundprüfung bestanden ist, wird sie gedruckt. Alles auf einen Streich. Deshalb habe ich geschrieben
        if(!OrderSend(request,result))
          return;
 
Konstantin Nikitin:

OrderSend erforschen

Erst wenn er die grundlegende Prüfung bestanden hat, drucken Sie ihn aus. Alle auf die gleiche Art und Weise. Deshalb habe ich es geschrieben.
Aha. Das habe ich nicht gesehen. Es tut mir leid...
 
Alexey Viktorov:

Dies war ursprünglich der Fall.

warum ging sie im nächsten Code verloren... Frage...

Meiner Meinung nach ist dies jedoch inakzeptabel. Sie wird beim nächsten Häkchen gedruckt.

Ich habe verschiedene Varianten ausprobiert, darunter auch diese:

        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 + "; ");

Ich habe nicht aus Versehen alles in die Frage kopiert...

 
Algotrader18:

Ich habe verschiedene Optionen ausprobiert, darunter auch diese:

und versehentlich in die Frage kopiert...

Versuchen Sie zu suchen, fxsaber einmal auf dieses Problem gearbeitet. Ich weiß nicht, was er getan hat, es interessiert mich nicht. Es ist einfacher für mich, alle diese Parameter in OnTradeTransaction zu erhalten
 
Rustam Esedulaev:
Hallo zusammen!
In mql 4 gibt es eine solche Überprüfung als IsTradeContedtBusy
Gibt es etwas Ähnliches in mql 5?
Ich danke Ihnen!

Es gibt nichts Vergleichbares. MT5 ist multithreadingfähig.

Grund der Beschwerde: