Diskussion zum Artikel "Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL5" - Seite 6
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Guten Tag!
Ich lerne gerade, wie man Expert Advisors nach dem Beispiel dieses Artikels schreibt und bin auf folgendes Problem gestoßen - beim Versuch, eine Anfrage für einen Handel zu senden, erhalte ich den Fehler 10014 - falsches Volumen. Ich habe das maximal zulässige Volumen für die Transaktion SYMBOL_VOLUME_MAX überprüft - ich erhalte 0 zurück. Aber zur gleichen Zeit werden manuelle Geschäfte normal geöffnet.
Können Sie mir sagen, was ich falsch mache oder wo ich nachschauen kann? Ich verwende den Code des Expert Advisors, der im Artikel angehängt ist.
Ich danke Ihnen.
Hallo,
Code sieht gut aus, aber wenn ich es versuche, bekomme ich diesen Fehler
2011.11.13 23:39:58 2011.11.01 14:20:00 Alert: The Sell order request could not be completed -error:47562011.11.13 23:39:58 2011.11.01 14:20:00 fehlgeschlagener Sofortverkauf 1.00 EURUSD zu 1.36833 sl: 1.37133 tp: 1.35833 [Ungültige Anfrage]
Es werden keine Trades ausgeführt.
Kann mir jemand bei der Behebung helfen?
Danke
F
Hallo,
Code sieht gut aus, aber wenn ich es versuche, bekomme ich diesen Fehler
2011.11.13 23:39:58 2011.11.01 14:20:00 Alert: The Sell order request could not be completed -error:47562011.11.13 23:39:58 2011.11.01 14:20:00 fehlgeschlagener Sofortverkauf 1.00 EURUSD zu 1.36833 sl: 1.37133 tp: 1.35833 [Ungültige Anfrage]
Es werden keine Trades ausgeführt.
Könnte jemand bei der Behebung helfen?
Danke
F
Ich habe die gleiche Frage gestellt, aber niemand hat mir geantwortet.
Ich habe es gefunden.
Es ist ein Fehler. Sie müssen eine Code-Zeile hinzufügen
ZeroMemory(mrequest);
Diese Zeile sollte vor den Zeilen mrequest.action=... mrequest.price=... usw. stehen.
Hallo.
Vielen Dank für die ausführliche und klare Anleitung.
Ich habe ein Problem. Das Programm kompiliert, aber beim ersten Versuch, eine Anfrage zu erstellen, erscheint folgender Fehler: "Request to set Sell order failed - error code:4756"
Ich konnte in der Dokumentation nichts finden. Können Sie mir sagen, was ich dagegen tun kann oder wo ich Informationen finden kann?
Ich habe ein Problem. Das Programm kompiliert, aber beim ersten Versuch, eine Anfrage zu erstellen, erscheint folgende Fehlermeldung: "Request to set Sell order failed - error code:4756"
Ich konnte in der Dokumentation nichts finden. Können Sie mir sagen, was man in diesem Fall tun kann oder wo ich Informationen finden kann?
Behoben, laden Sie die aktualisierte Version des Expert Advisors herunter.
Das Problem lag in der mrequest-Struktur, sie sollte vorher mit der Funktion ZeroMemory auf Null gesetzt werden. Vor den Zeilen mit "mrequest.action=TRADE_ACTION_DEAL;" (S. 199 und 245) sollten Sie "ZeroMemory(mrequest);" einfügen.
Ich habe die gleiche Frage gestellt, aber niemand hat geantwortet.
Ich habe sie gefunden.
Es ist ein Fehler. Sie müssen eine Code-Zeile hinzufügen
ZeroMemory(mrequest);
Diese Zeile sollte vor den Zeilen mrequest.action=... mrequest.price=... usw. stehen.
Ist es immer notwendig, dies zu tun, d.h. die Anforderungsstruktur vor der Anforderung zu nullen?
Vor dem Senden einer Anfrage müssen alle Felder der Struktur initialisiert werden (in diesem Fall geschieht dies mit der Funktion ZeroMemory, obwohl man es auch Element für Element tun kann), die Initialisierung muss erfolgen, nachdem die Struktur deklariert wurde.
Steht das so im Referenzhandbuch? (Ich habe jetzt keine Gelegenheit, es zu überprüfen).
Es stellt sich heraus, dass es ausreicht, eine Variable vom Typ Struktur einmal auf der globalen Ebene des Programms zu deklarieren, sie einmal zu initialisieren und nicht noch einmal auf die Frage der Verwendung der ZeroMemory-Funktion zurückzukommen?
Sagt das Handbuch etwas darüber aus? (Ich habe jetzt keine Gelegenheit, es zu überprüfen)
Eine Variable muss nicht zwangsläufig auf Null gesetzt werden, wenn sie deklariert wird. Der Programmierer muss alle Variablen selbst bereinigen/zuweisen, bevor er sie verwendet.
Die Verwendung von nicht initialisierten (oder unvollständigen) Variablen (insbesondere Strukturen) ist ein sehr häufiger Fehler in der Programmierung.
Es stellt sich heraus, dass es ausreicht, eine Variable vom Typ Struktur einmal auf der globalen Ebene des Programms zu deklarieren, sie einmal zu initialisieren und nicht noch einmal auf die Frage der Verwendung der ZeroMemory-Funktion zurückzukommen?
Es ist besser, die Variablen richtig zu initialisieren, als mit der Initialisierung zu kämpfen, indem man sie auf die globale Ebene verlagert (was nutzlos und gefährlicher ist).
Es ist so einfach, sich die Frage zu stellen: "Warum denke ich, dass jemand Variablen und insbesondere komplexe Strukturen für mich initialisiert"?
Es ist sehr bequem, Strukturen ohne das lästige ZeroMemory bei der Deklaration auf Null zu setzen: