Es ist der Klassiker - Außenstab und seine Range vom Hoch zum Tief.
Ich wollte und habe den Code selber geschrieben und mein Vorhaben nahezu komplett gelöst. Nun ist aber doch noch ein kleines, aber entscheidendes Problem aufgetaucht:
Wenn die Range vom Außenstab verlassen wird, soll der EA dies mit einem Print ausweisen und ab da an auch wieder Trades erlauben. Ich habe hierzu einen Array erstellt und fülle diesen Array mit Kursinformationen vom aktuellen Chart an.
Mit open der aktuellen Bar[0] wird der Außenstab Bar[2] ausgewiesen (Bar[1] entsprechend als Innenstab). Das klappt soweit alles.
Nun soll der EA wie oben erwähnt bei verlassen der Range vom Außenstab dies mitteilen und den Handel wieder erlauben. Das funktioniert ebenfalls, aber nur, wenn die Range mit der Bar[0], die den Außenstab deklariert hat, geschieht. Erfolgt der Range-Ausbruch ein oder mehrere Kerzen später, passiert nichts.
Ich vermute, dass der Fehler darin liegt, dass ich zwar die Bar[2] auslese und die Werte eine Variablen zuordne, doch beim öffnen der nächsten Bar passen die werte nicht mehr. Anders ausgedrückt: die Werte werden nur verwendet, solange es keine neue Bar gibt.
Kann man die Werte aus dem Array irgendwie fixieren, dass sie dauerhaft bleiben - zumindest bis sie getriggert werden?
Hier der Code dazu (der Code dient lediglich zu Lernzwecken und stellt keine Strategie dar):
--> es geht vermutlich hauptsächlich um die Bereiche
calcSetup()
calcOutsideBarRange()
da ich noch totaler Anfänger bin, habe ich einen "Übungs-EA" geschrieben, um mit diesem das eine oder andere zu lernen. Daher ist der unten anhängende Code keine Strategie, sondern dient in der Tat nur zu lernzwecken.
Durch den EA sollen lediglich bei höherem Hoch / tieferem Tief Buy- oder Sell-Stopp-Orders mit SL und TP in den Markt gesetzt werden. Das klappt schon mal fehlerfrei.
Dann soll, wenn die Order getriggert wurde, die Position mit erreichen des SL oder TP geschlossen werden. Auch das klappt fehlerfrei. Dass das fast nur Verluste bringt, soll hier keine Rolle spielen.
Orders, die im Markt sind und deren eigentlicher SL bereits vor dem Entry erreicht werden, sollen gelöscht werden. Dies klappt - aber nur teilweise.
Somit kommen wir zu meinem Problem:
Ich habe den SL mit der variablen "buyOrderDelete" und "sellOrderDelete" besetzt und wenn der Bid-Kurs <= buy/sellOrderDelete ist, soll die Order gelöscht werden. Macht der EA auch, doch wenn ich nun zwei (oder mehrere) offene Orders (in eine Richtung) habe, löscht er nur die erste Order - die anderen Order, deren SL ebenfalls erreicht wurde, bleiben im Markt.
Wie kann den jeweiligen SL der richtigen Order zuordnen - damit jede Order gelöscht wird, deren SL erreicht ist (nicht aber die Orders, deren SL noch nicht erreicht ist).
Den Ansatz mit einer Schleife habe ich probiert - bin aber ehrlich gesagt noch "zu blöd" es hinzubekommen. Außerdem bin ich auch der Meinung, dass mit einer Schleife alle Order gelöscht werden - was wiederum ebenfalls nicht gewünscht ist.
Dennoch möchte ich euch zeigen, was ich hierzu geschrieben habe. In OnTick habe ich abgefragt (nur mal für die Buy-Variante):
Mit dieser Variante löscht er gar keine Buy-Orders.
Wie gesagt, so lange ich nur eine Order in jede Richtung habe, klappt die Löschung, sofern notwendig, problemlos ... aber halt nicht mit mehr als einer Order in eine Richtung.
Bin neu hier aber beschäftige mich schon einige Zeit mit Expert Advisior (hauptsächlich automatisches Traden im Forex). Ich bin auf der Suche nach gut funktionierenden EA´s (Forex,Gold, DAX, US30), kann mir jemand gute EA´s empfehlen, wie Ihr sicher alle wisst gibt es hier ja viel Betrug und es ist schwierig die richtigen zu finden....
ich habe meinen ersten EA (ja, bin Anfänger) soweit fertig und diesen auch im Strategietester eingesetzt. Bisherige Tests (Zeitraum zwei Jahre ab 01.01.2022) problemlos und vor allem ohne jegliche Fehlermeldungen erfolgreich durchgeführt. Nun möchte ich, um die Tests aussagekräftiger werden zu lassen, nochmals zwei Jahre zurück (Strategie basiert auf D1) und erhalte mit Startdatum 01.01.2020 folgende Fehlermeldung:
"array out of range" (siehe Screen)
Es herrscht hier eine Datenlücke, die auch im Chart so angezeigt wird (letzter Balken davor 23.20.2020, erster Balken danach 18.05.2021). Gebe ich jedoch ein beliebiges Startdatum nach der Datenlücke ein, erfolgt der Test reibungslos.
Nun meine (naive) Frage: kann man diesen Fehler irgendwie beheben oder ist ein Datenfehler ein Datenfehler und man kann hier nichts machen?
Vorab schon mal vielen Dank für die Antworten,
murkel
ich bekomme beim Markt von MQL5 bei der Validation meines EA´s eine Fehlermeldung, das wäre diese:
invalid lots amount for OrderSend function
OrderSend error 4051
Der EA läuft aber einwandfrei. An was kann das liegen?
ich habe meinen ersten EA geschrieben, bzw. bin dabei und komme bei folgendem Problem nicht weiter:
Der EA soll zum Beginn eines neuen Tages den Vortag, also die Kerze vom Vortag, nach bestimmten Kriterien untersuchen und das Ergebnis zunächst mal als Printausgabe im Journal darstellen. Das hat soweit zur vollsten Zufriedenheit geklappt. Ergebnis war stets um 00:05:00 entweder kein Signal oder Long oder Short oder warum kein Signal. Soweit so gut.
Nun möchte ich aber einen weitere Aktion zu einer anderen Zeit mir ausgeben - im Beispiel soll um 12:00 Uhr nur dann was im Journal ausgegeben werden, wenn am Vortag auch nur ein Signal vorhanden war. Hier liegt nun mein Problem:
Der EA läuft bis zum ersten Signal korrekt - sprich, wenn kein Signal, auch keine Ausgabe "12:00 Uhr". Ab dem ersten Signal kommt diese Ausgabe dann komplett durcheinander. Mal korrekt, mal nicht, und mal doppelt. Wo liegt der Fehler?
Hier der Code, der hoffentlich korrekt angezeigt wird und im Anhang ein Bild vom Journal-Ergebnis.
ich kann das neue Registrierungs-Verfahren von www.mql5.com nicht abschließen. Dafür habe ich ein Galaxy S9, das nicht an das Netz angeschlossen ist, und einen PC, der mit dem Internet verbunden ist, verwendet. Mir gelingt es nicht, ddas Selfie-Video von meinem Handy zum PC zu leiten.
Könnte mir bitte jemand eine ausführliche Anleitung für das neue Registrierungs-Verfahren gegeben?
Kennt jemand ein alternatives Registrierungs-Verfahren?
Hat jemand Erfahrungen mit anderen Anbietern von VPS und Signal-Dokumentation?
Hat vielleicht hier wer eine Erfahrung wie man das Autotrading beim MT4 deaktivieren kann und nach einer Zeit wieder Aktivieren kann. Ich würde das gerne in meinen Quellcode brauchen.
Danke
ich habe einen Code geschrieben. Es soll jeden Tag um 17.30 ein trade eröffnet werden buy. Dieser soll am nächsten Tag um 8.50 Uhr geschlossen werden.
Im Backtest wird mir jedoch nur ein Trade eröffnet in nem Zeitraum von 2 Monaten und nicht geschlossen am nächsten Tag
Kann da mal wer über den Code schauen?
Code:
// Handelszeiten
input int openHour = 17;
input int openMinute = 30;
input int closeHour = 8;
input int closeMinute = 50;
// Globale Variable für die Handelsaktivität
bool canOpenTrade = true;
int start() {
// Überprüfe, ob es Zeit ist, einen Trade zu eröffnen
if (canOpenTrade && Hour() == openHour && Minute() == openMinute) {
// Eröffne einen Kauf-Trade
int ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 3, 0, 0, "Buy Order", 0, 0, Green);
if (ticket > 0) {
canOpenTrade = false; // Setze die Variable auf false, um weitere Trades zu verhindern
Print("Kauf-Trade erfolgreich eröffnet. Ticket: ", ticket);
} else {
Print("Fehler beim Öffnen des Kauf-Trades. Fehlercode: ", GetLastError());
}
}
// Überprüfe, ob es Zeit ist, den Trade zu schließen
if (!canOpenTrade && Hour() == closeHour && Minute() == closeMinute) {
// Schließe alle offenen Trades
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol() == Symbol() && OrderMagicNumber() == 0) {
bool closed = OrderClose(OrderTicket(), OrderLots(), Bid, 3, Red);
if (closed) {
canOpenTrade = true; // Setze die Variable auf true, um am nächsten Tag einen neuen Trade zu ermöglichen
Print("Trade erfolgreich geschlossen.");
} else {
Print("Fehler beim Schließen des Trades. Fehlercode: ", GetLastError());
}
}
}
}
return 0;
}
Hallo. Ich bin doof und bekomme es einfach nicht hin. Wie kann ich in dem Indikator: QQE averages filtered histo + alerts + arrows.mq4 hinzufügen, dass der Alarm nur außerhalb der Bereiche des Upper/LowerBounds kommen?!
Wer mir hilft, ist ein guter Mann. Danke.
P.S.: Indikator ist for free und überall downloadbar. Nicht, dass hier die Mods gleich hibbelig werden! 😵
wie streng sind eigentlich die Nomenklaturregeln wenn man EAs in MQL4 schreibt, ich meine konkret wie das mit Abständen zwischen Zeichen, Wörtern usw. generell ist - sieht man sich den screenshot hier im Anhang an, erkennt man Leerzeichen zwischen signal und Istgleich Zeichen, weiter unten ohne Leerzeichen usw. was ist wenn ich am Zeilenende ein Lerzeichen zwischen letzten Wort und ; Zeichen habe usw.
Ist das egal und stört das kompilieren nicht, oder gibt es da Sachen auf die man aufpassen sollte?
es werden ja oft in den EAs Nebenbedingungen eingebaut, dass zum Beispiel ein Kauf/Verkaufsignal nur dann ausgelöst wird, wenn ein andere Indikator (RSI, Stoch K usw.) einen Mindestwert hat (if StochK oder ADX < 30) usw.
Jetzt macht es aber einen merklichen Unterschied, ( in diesem Beispiel Stock K) ob der Stoch K unterhalb dieser 30er Schwelle während der vorigen bars gerade, fallend oder steigend ist.
Nehmen wir an ich möchte die Stochastik Nebenbedingung nur dann verwenden,wenn Stock K unter 30 ist UND während der letzten 3 M1 bars (zum close der M1 bars hin) eine positive Steigung hat.
Ganz simpel würde ich das so machen, dass ich eine einfache if Bedingung einbaue, in der ich angebe, dass: Stoch K 0>Stoch K 1 und Stoch K1 >Stoch K 2 und Stoch K2 > Stock K3 ist - womit logischerweise eine steigende Linie beschrieben ist, da der folgende immer höher sein muss als der vorige.
Da brauche ich kein lineares Programmieren oder sonstige komplizierte Anweisungen um eine positive Steigung zu definieren (vermute ich mal).
Ich habe das noch nicht getestet, bin nur neugierig ob das vom Gedankengang her stimmen würde...
kann man einen EA simultan auf mehreren Underlyings laufen lassen?
Das heisst ich starte den EA und er gibt Signale auf EUR/USD, DAX40, XTI, USD/YEN, AUD/USD usw. , bzw. was wäre die maximale Anzahl von Underlyings die man in MT damit fahren könnte? Fals in Metatrader nicht möglich, was bräuchte man für Equipment um so ein Projekt zu starten?
Oder müsste ich für jedes Währungspaar, das ich traden möchte einen eigenen EA im Strategietester aktivieren? Kann man überhaupt im MT (4oder 5) mehrere EAs auf einmal laufen lassen?
Wie versendet Ihr E-Mail's direkt aus MT4? Die Einstellungen sind richtig, aber es erscheint die Fehlermeldung: "Mail: login to smtp.ionos.de:465 failed". Gleiches bei den Ports 25 und 587.
Hallo,
kennt jemand eine Möglichkeit, ein Plugin idealerweise welches Account Daten auf der Homepage darstellen lässt. Ähnlich wie fxbooks ( Grafik, Profit, offene Trades, Historie usw. )