|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
||||
Hartnäckiger OrderSend error 130 bei meinem EA - bitte um Hilfe
Hallo,
ich habe zu Übungszwecken einen kleinen Test-EA geschrieben, der jeden Morgen mit dem ersten Tick ab 9 Uhr einen Trade eröffnet. Der EA ist soweit debuggt. Der Backtest ist mir bislang allerdings noch nicht gelungen. Ich bekomme einen hartnäckigen OrderSend error 130 angezeigt, den ich bislang noch nicht lösen konnte. Mein ursprüngliches Set an Werten, mit denen ich den EA betreiben wollte, war: Zitat:
Ich will damit den DAX-CFD DE30DAX.CASH handeln. Mein Broker ist JFD. Bei JFD ist ein Punkt ein Euro. JFD lässt Mikrolots zu (d.h. 0.1 ist die Mindestgröße bei einem Trade, 1.000 die Maximalgröße), hier eine kleine Übersicht: https://www.jfdbank.com/de/online-tr...indicesSection Laut Google tritt der Error 130 dann auf, wenn mit den Werten von SL und TP was nicht stimmt. Ich habe daher verschiedene Einstellungen probiert, aber der Error 130 ist bei all den folgenden Einstellungen wieder aufgetreten: Zuerst habe ich den Abstand von SL und TP zum Kaufpreis vergrößert und weniger Dezimalstellen verwendet: Zitat:
Ich habe noch viel mehr Eingaben getestet, aber ich kann mich nicht mehr an alle erinnern. Überdies führte ohnehin keine davon zum Erfolg. Dann habe ich es auch mal mit ganz großen und ganz kleinen Werten probiert, jedoch führte keiner davon zum Erfolg, Error 130 blieb: Zitat:
Bei Lotgrößen unter 1 kommt seltsamerweise eine neue Fehlermeldung (Error 4051, Error 130 tritt dann nicht auf) obwohl JFD ja angibt, dass ein Trade eine Größe von 0.1 Lot handelbar ist. Hier ein Beispiel, das ich u.a. mit kleinen Werten unter 1 getestet habe: Zitat:
Als Slippage habe ich bei all meinen Versuchen immer einen Wert von 5 angegeben. --- Ich weiß jetzt nicht, was ich sonst noch ausprobieren könnte. Ich bitte um Eure Hilfe! --- Besten Dank und Grüße, LQK Geändert von LQK (24.06.20 um 19:34 Uhr) |
|
|||
Na, wo bleibt den der Code dazu?
Und was soll TP = 1.033, SL = 0.95 beim DAX-CFD DE30DAX.CASH?? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Hier der Code des kompletten EA. Die fraglichen Code-Teile habe ich rot markiert.
Code:
//+------------------------------------------------------------------+ //| Hausaufgabe v17 ab jetzt debuggen.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ // Deklaration und Initialisierung globale Konstanten input int global_BeginnDerHeissenStunde = 9; input double global_SL = 0.95 ; input double global_TP = 1.033; input int global_PositionGroesse = 1.0; input int global_Slippage = 5; // Deklaration globale Variablen int order_id; bool Flag_Variable; // OnInit() macht hier nichts außer Flag_Variable zu initialisieren und onTick() zu starten. void OnInit() { // Initialisierung Flag_Variable. Die Flaf_Variable signalisiert, ob an dem Tag ab 9 Uhr // bereits ein Trade geöffnet wurde. Flag_Variable = false; //OnTick(); Print("OnInit() Methodenrumpf wurde durchlaufen"); } void OnTick() // Der erste Tick ab neun Uhr führt zum öffnen eines Trades, sofern an diesem Tag noch // kein Trade ab neun Uhr geöffnet wurde. { //Print("OnTick() Methodenaufruf hat funktioniert und Kopf des Methodenrumpfs wurde erreicht!"); if ((TimeHour(TimeLocal()) == global_BeginnDerHeissenStunde)&& Flag_Variable == false) { Print("Erste IF-Anweisung Ausführunsteil wurde erreicht!"); order_id = OrderSend( Symbol(), OP_BUY, global_PositionGroesse, Bid, global_Slippage, global_SL, global_TP, NULL, 0, 0, clrNONE); Print("Soeben wurde ein Trade geöffnet!"); // Nachdem ein Trade eröffnet wurde, wird die Flag_Variable auf true gesetzt. Flag_Variable = true; Print("Flag-Variable wurde ein neuer Wert zugewiesen: " + Flag_Variable); Print("Ausführungsteil der ersten IF-Anweisung wurde jetzt vollständig durchlaufen!"); } // Nachdem die "heiße" Stunde vorüber ist, wird die Flag_Varaibel wieder auf false gesetzt. if ((TimeHour(TimeLocal()) > global_BeginnDerHeissenStunde) && Flag_Variable == true) { Print("Zweite IF-Anweisung Ausführunsteil wurde erreicht!"); Flag_Variable = false; Print("Flag-Variable wieder zurückgesetzt auf:" + Flag_Variable); } } Zitat:
(Womöglich weist die Antwort darauf, schon auf die Lösung meines Problems hin?) --- Besten Dank und Grüße! LQK |
|
|||
Zitat:
Sende eine Order für das Symbol (in Deinem Falle) Dax zum Kauf von 1.0 Lots zum gegenwärtigen Bidpreis bei einer Maximalabweichung von 5 und setze den Stopploss auf 0.95 und den Takeprofit auf 1.033 So, und dann siehst Du wohl sofort wo der Fehler liegt, oder? Wo steht der Dax grade? Und wo sind Deine SL und TP Marken? AVT |
|
|||
Kurz was mir aufgefallen ist:
Er kann die Order nicht abgeben, da bei TP und SL feste Werte benötigt werden oder 0. Zitat:
Eine Buy Order wird nicht mit dem Bid Preis eröffnet. |
|
|||
So und das ist es, was ich damit meinte.
Es kann keine Order geöffnet werden, wenn nicht die Werte für SL und TP stimmig sind. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|