bin seit kurzem hier und beschäftige mich seit ca. 4 Wochen mit MQ4- habe auch schon ein relativ stabiles Handelssystem - nach einigen Anlaufschwierigkeiten- programmiert. Die Hinweise im Web zu MQ4 bzw. der Programmcode zu einzelnen Themen ist sehr vielfältig- zu meinem Problem habe ich zwar einiges gefunden, was passen könnte, aber eben im DEMO-Konto- und auch im Backtest- so einfach nicht funktioniert.
Das Problem mit nur einer Order pro Balken kommt dem zwar nahe- aber eben nur teilweise, da sich dann das ganze immer auf den jeweiligen Zeitrahmen beschränken würde
Mein System handelt wiegesagt relativ zuverlässig- bei der Auswertung habe ich aber festgestellt, das in Zeiten, in denen die Inidkatoren zwar richtig anzeigen- aber der Markt trotzdem weiter fällt oder steigt- nach einer Verlustorder (z.B. SELL) der Stop ausgelöst wird. Nun eröffnet mein System aber sofort eine neue Order, in diesem Falle wieder eine SELL-Order, welche im schlimmsten Fall nach erneutem SL mit Verlust geschlossen wird. Das ganze passiert schon mal 3-4 mal in Folge- was ich verhindern will.
Der EA soll also maximal 2 Verlustorder in EINE Richtung akzeptieren -also 2x BUY oder 2x SELL Verlust. Dann soll er eine vordefinierte Zeit (OrderStop) warten.
Ich habe einen Zähler, welche die BUY- oder SELL Order zählt und wenn die Anzahl größer wie vorgegeben ist UND die letzte Order mit Verlust geschlossen wurde, erhalte ich das Signal ORDERPAUSEBUY oder ORDERPAUSESELL= TRUE
Der folgende Code liest die Variable aus und übergibt sie an die Bedingungen vor erneuter Orderausführung (CheckOrderPause...), OrderStop ist dabei die vordfinierte Zeit der OrderPause (bei mir 60 Minuten = 3600 s)
bool CheckOrderPauseBuy()
{
static datetime WaitTimeBuy=0; // initialisierung Wartezeit
if (OrderPauseBuy == true)
WaitTimeBuy = TimeLocal() + (OrderStop); // Wartezeit = Aktuelle Zeit + OrderStop (3600 s)
while (TimeLocal() < WaitTimeBuy) // solange aktuelle Zeit kleiner wie Wartezeit
{
return (true); // CheckOrderPauseBuy = TRUE--> keine neuen BUY Order werden geöffnet- SELL Order möglich
}
return (false); // nach Ablauf der Wartezeit --> CheckOrderpauseBuy = FALSE, neue BUY Order erlaubt.
}
Und hierher wird die Bedingung übergeben- vor Orderausführung:
if ((Signal == 1) && (EnableNewBuy) && !CheckOrderPauseBuy())// Wenn Signal =1, Enable New BUY = true und OrderPause FALSE!
...nun erfolgt die Orderausführung, wenn alle Bedingungen richtig sind.........................
Der Code funktioniert, die Variablen schalten von FALSE auf TRUE und umgekehrt- aber die Orderpause wird nicht ausgeführt.
Frage: Weiß jemand einen Rat- was mache ich falsch oder wie kann man sonst eine solche Orderpause einfach realisieren ?
Grüße und Dank im Voraus von Freecode
P.S. Sollte ich nicht immer gleich antworten- sorry- bin viel unterwegs, deswegen auch die Idee mit dem EA;-)
Hallo Tradingfreunde,
bin seit kurzem hier und beschäftige mich seit ca. 4 Wochen mit MQ4- habe auch schon ein relativ stabiles Handelssystem - nach einigen Anlaufschwierigkeiten- programmiert. Die Hinweise im Web zu MQ4 bzw. der Programmcode zu einzelnen Themen ist sehr vielfältig- zu meinem Problem habe ich zwar einiges gefunden, was passen könnte, aber eben im DEMO-Konto- und auch im Backtest- so einfach nicht funktioniert.
Das Problem mit nur einer Order pro Balken kommt dem zwar nahe- aber eben nur teilweise, da sich dann das ganze immer auf den jeweiligen Zeitrahmen beschränken würde
Mein System handelt wiegesagt relativ zuverlässig- bei der Auswertung habe ich aber festgestellt, das in Zeiten, in denen die Inidkatoren zwar richtig anzeigen- aber der Markt trotzdem weiter fällt oder steigt- nach einer Verlustorder (z.B. SELL) der Stop ausgelöst wird. Nun eröffnet mein System aber sofort eine neue Order, in diesem Falle wieder eine SELL-Order, welche im schlimmsten Fall nach erneutem SL mit Verlust geschlossen wird. Das ganze passiert schon mal 3-4 mal in Folge- was ich verhindern will.
Der EA soll also maximal 2 Verlustorder in EINE Richtung akzeptieren -also 2x BUY oder 2x SELL Verlust. Dann soll er eine vordefinierte Zeit (OrderStop) warten.
Ich habe einen Zähler, welche die BUY- oder SELL Order zählt und wenn die Anzahl größer wie vorgegeben ist UND die letzte Order mit Verlust geschlossen wurde, erhalte ich das Signal ORDERPAUSEBUY oder ORDERPAUSESELL= TRUE
Der folgende Code liest die Variable aus und übergibt sie an die Bedingungen vor erneuter Orderausführung (CheckOrderPause...), OrderStop ist dabei die vordfinierte Zeit der OrderPause (bei mir 60 Minuten = 3600 s)
bool CheckOrderPauseBuy() { static datetime WaitTimeBuy=0; // initialisierung Wartezeit if (OrderPauseBuy == true) WaitTimeBuy = TimeLocal() + (OrderStop); // Wartezeit = Aktuelle Zeit + OrderStop (3600 s) while (TimeLocal() < WaitTimeBuy) // solange aktuelle Zeit kleiner wie Wartezeit { return (true); // CheckOrderPauseBuy = TRUE--> keine neuen BUY Order werden geöffnet- SELL Order möglich } return (false); // nach Ablauf der Wartezeit --> CheckOrderpauseBuy = FALSE, neue BUY Order erlaubt. }Und hierher wird die Bedingung übergeben- vor Orderausführung:
...nun erfolgt die Orderausführung, wenn alle Bedingungen richtig sind.........................
Der Code funktioniert, die Variablen schalten von FALSE auf TRUE und umgekehrt- aber die Orderpause wird nicht ausgeführt.
Frage: Weiß jemand einen Rat- was mache ich falsch oder wie kann man sonst eine solche Orderpause einfach realisieren ?
Grüße und Dank im Voraus von Freecode
P.S. Sollte ich nicht immer gleich antworten- sorry- bin viel unterwegs, deswegen auch die Idee mit dem EA;-)