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

 

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.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
danke für den Artikel.
 

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:4756
2011.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

[Gelöscht]  
Financialabs:

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:4756
2011.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?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений - Документация по MQL5
 
Alfff:

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.

 
senerzen:

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.

Vielen Dank, der Fehler ist behoben.
Get in touch with developers using Service Desk!
  • www.mql5.com
We therefore attach great importance to all user reports about issues in our programs and try to answer each one of them.
 
papaklass:
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 nach der Deklaration der Struktur erfolgen.
 
Automated-Trading:
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?

 
Yedelkin:

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:

   MqlTick my={0};