Diskussion zum Artikel "Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5" - Seite 21

 

Hallo zusammen,

Brandneu in MQL5 (und FOREX für diese Angelegenheit) aber, lange Zeit Programmierer. Ich habe die Datei My_First_EA.mq5 geöffnet und kompiliert, aber ich erhalte die Debug-Funktionen nicht. Wenn ich eine der Beispielskriptdateien öffne, erhalte ich die Debug-Option. Ich habe auch eine Warnung erhalten, dass der Rückgabewert von 'OrderSend' überprüft werden sollte. Was muss ich tun, um die Debug-Funktionalität zu erhalten?

Louis

 
louisd:

Hallo zusammen,

Brandneu in MQL5 (und FOREX für diese Angelegenheit) aber, lange Zeit Programmierer. Ich habe die Datei My_First_EA.mq5 geöffnet und kompiliert, aber ich erhalte die Debug-Funktionen nicht. Wenn ich eine der Beispielskriptdateien öffne, erhalte ich die Debug-Option. Ich habe auch eine Warnung erhalten, dass der Rückgabewert von 'OrderSend' überprüft werden sollte. Was muss ich tun, um die Debug-Funktionalität zu erhalten?

Louis

Hallo zusammen,

ich habe mein eigenes Problem gefunden. Ich habe ein neues Projekt mit dem Expert Advisor Wizard erstellt und dann einfach die Datei My_First_EA.mq5 reinkopiert und schon habe ich die Debug-Funktionalität.

Louis

 
louisd:

Hallo zusammen,

Ich habe mein eigenes Problem herausgefunden. Ich habe ein neues Projekt mit dem Expert Advisor Wizard erstellt und dann einfach in der My_First_EA.mq5 Datei kopiert und ich bekomme Debug-Funktionalität.

Louis

Aber haben Sie die Warnung "OrderSend should be checked" behoben?
 
Boobwood:

Ich habe 4756 Fehler, ich sah die Lösung auf Seite 2, und ich überprüfte orginal Code, gab es ZeroMemory(mrequest); in Zeile 218 selbst. aber ich habe noch den Fehler 4756.


Ich habe auch immer noch diesen Fehler, nachdem ich beide vorgeschlagenen Korrekturen vorgenommen habe:

ZeroMemory(mrequest);

und auch

if(Kauf_geöffnet || Verkauf_geöffnet)

Kann mir bitte jemand bei dem Fehler 4756 helfen? Es scheint einfach nicht möglich zu sein, einen Kaufauftrag zu platzieren.

 
Tchuso:

Hallo, ich erhalte eine Fehlermeldung:

Rückgabewert von 'OrderSend'sollte geprüft werden Zeilen 213 und 259.


Haben Sie das Problem gelöst?

Guten Morgen Tchuso,

Das Gleiche ist mir auch passiert. Ich habe es behoben, indem ich diese Zeilen in beiden Vorgängen durch diese ersetzt habe.

if(!OrderSend(mrequest,mresult))
PrintFormat("OrderSend error %d",GetLastError());

Sagen Sie mir, wenn Sie Hilfe brauchen, ich bin auch neu.

Beste Grüße!

 

Der Beispielcode gefällt mir sehr gut, ich bin auch neu in diesem Bereich, ich habe den Code so korrigiert, wie er in den Kommentaren steht, und er gibt keine Fehler mehr.

Das Problem ist, dass der Roboter nicht öffnen Trades, es nicht einmal einen Handel öffnen.

Hat jemand dieses Problem lösen können?


Ich verwende die Option "Unico" des Strategietesters: Ist das mein Fehler?


Vielen Dank für Ihre Zeit und Unterstützung
 


Ich habe festgestellt, dass der Robot versucht, die Aufträge zu öffnen, aber immer einen Fehler ausgibt:


Beenden:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


Ich habe mehrere Dinge im Code geändert, aber es funktioniert nicht, ich füge den Code, den ich habe:


Original: mrequest.type_filling = "Ich habe es in den 3 Möglichkeiten, die in der Dokumentation sind" gesetzt.

 mrequest.action = TRADE_ACTION_DEAL;                                  // sofortige Auftragsausführung
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           // Letzter Briefkurs
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Gewinnmitnahme
         mrequest.symbol = _Symbol;                                            // Währungspaar
         mrequest.volume = Lot;                                                 // Anzahl der zu handelnden Lose
         mrequest.magic = EA_Magic;                                             // Magische Zahl bestellen
         mrequest.type = ORDER_TYPE_BUY;                                        // Bestellung kaufen
         mrequest.type_filling = ORDER_FILLING_RETURN;                             // Art der Auftragsausführung
         mrequest.deviation=100;                      
        



Tambien he probado este codigo:

 //--- Deklaration und Initialisierung der Anfrage und des Ergebnisses
               MqlTradeRequest request={0};
               MqlTradeResult  result={0};
            //--- Anwendungsparameter
               request.action   =TRADE_ACTION_DEAL;                     // Art des Geschäftsbetriebs
               request.symbol   =Symbol();                              // Symbol
               request.volume   =0.1;                                   // Volumen von 0,1 Lot
               request.type     =ORDER_TYPE_BUY;                        // Auftragsart
               request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // Eröffnungspreis
               request.deviation=5;                                     // zulässige Preisabweichung
               request.magic    =EA_Magic;                          // Magische Nummer der Bestellung

               //--- Senden der Anwendung
               if(!OrderSend(request,result))
               PrintFormat("OrderSend error %d",GetLastError());     // wenn die Anfrage nicht gesendet werden konnte, geben Sie den Fehlercode ein
               //--- Informationen über den Vorgang
               PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
 
Libni Colina:


Ich habe festgestellt, dass der Roboter versucht, die Aufträge zu öffnen, aber immer einen Fehler ausgibt:


Beenden:

2020.05.06 20:35:16.141 Core 1 2020.04.20 20:25:00 failed market sell 0.10 EURUSD sl: 1.08965 tp: 1.07665 [Invalid request].


Ich habe mehrere Dinge im Code geändert, aber es funktioniert nicht, ich füge den Code, den ich habe:


Original: mrequest.type_filling = "Ich habe es in den 3 Möglichkeiten, die in der Dokumentation sind".


Fügen Sie dies am Anfang des Codes ein:

#include <Trade\Trade.mqh>

Und um einen Vorgang zu öffnen, geben Sie einfach dies ein:

double volumen= 0.01; // Oder die gewünschte Lautstärke

CTrade m_trade;

m_trade.Buy(volumen); // Kauf

m_trade.Sell(volumen); // Verkauft
 
Hallo, Vielen Dank für das Tutorial, es war sehr hilfreich. Aber ich habe ein Missverständnis, die New_Time-Variablen deklariert und mit der CopyTimes-Funktion initialisiert, aber Old_Time wurde deklariert, aber nicht zuerst initialisiert und dann wurde es mit der New_Time-Variable verglichen, um zu überprüfen, ob es einen neuen Takt gibt. Old_Time sollte eigentlich leer sein. Ich weiß nicht, ob ich es gut beschrieben habe, aber danke fürs Lesen.
 

Hallo,


Auch ich habe den Fehlercode 4756, wenn ich Tests durchführe, und er besagt, dass die Anfrage für den Verkaufsauftrag nicht abgeschlossen werden konnte.

Bitte informieren Sie mich, wie ich das Problem lösen kann.


Vielen Dank