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
Jacques, ich schätze Ihr anhaltendes Interesse an diesem Thema. Ich bin immer noch Debugging mein EA für seine erste Währung, aber beabsichtigen, es auf mehrere, wenn für geeignet befunden zu verwenden. Unter dieser Prämisse habe ich über eine Strategie nachgedacht, wie ich diese Idee umsetzen kann. Daher mein Interesse an diesem Thread.
Auf Ihre Anfrage hin habe ich Diagramme für drei weitere Paare erstellt und dabei festgestellt, dass zwei der Paare mehr als 32.000 Ticks in einem 24-Stunden-Zeitraum hatten (das Datenlimit für Diagramme in Excel). Daher musste ich das Diagramm in zwei Perioden unterteilen (1. 12 Stunden und 2. 12 Stunden). Um relativ konsistent zu bleiben, habe ich alle drei Paare in 12-Stunden-Perioden unterteilt.
Die vertikale Skala dieser Diagramme ist proportional zu den horizontalen Linien, aber die horizontale Skala ist NICHT zeitproportional (d. h. man kann nicht davon ausgehen, dass 1/12 der Ticks eine Stunde darstellt).
Ich denke, die wichtigste Erkenntnis aus diesen Diagrammen ist, dass es bei allen Paaren innerhalb eines 24-Stunden-Zeitraums erhebliche Zeitabstände zwischen den Ticks gibt. Wenn Sie daher mehrere Paare in einem EA kombinieren, wäre es meiner Meinung nach ratsam, eine "While"-Schleife zu verwenden. Der Verweis von StraightTrader auf https://book.mql4.com/special/index mit dem Titel "General Characteristics of Complex Programs" enthält eine gute Diskussion dieser Technik und eine Grafik im ersten Abschnitt dieses Artikels.
GBPJPY 44.834 Ticks in 24 Stunden
EURJPY 37.140 Ticks in 24 Stunden
GBPUSD 29.313 Ticks innerhalb von 24 Stunden
EURUSD 22.627 Ticks in 24 Stunden
Prost!
Wenn Sie also mehrere Paare in einem EA kombinieren, wäre es meiner Meinung nach ratsam, eine "While"-Schleife zu verwenden. StraightTrader's Verweis auf https://book.mql4.com/special/index mit dem Titel "General Characteristics of Complex Programs" enthält eine gute Diskussion dieser Technik und eine Grafik im ersten Abschnitt dieses Artikels.
Das ist genau der Fall. Mehrere Paare in einem EA -> verwenden Sie den Ansatz der while-Schleife, anstatt die Aktivierung der Funktion durch eintreffende Ticks zu starten.
Ich würde gerne gegen ein Währungspaar für einen EA sein.
Mein langfristiger Ansatz ist EIN MULTICURRENCY MULTISTRATEGY EA. Ich habe vor einiger Zeit Universal Expert Advisor Schema, das einige dieser Ideen implementiert vorbereitet.
Später, nicht in meinem Beitrag enthalten, folgte ich durch die Entwicklung dieses Codes und startete Google-Code-Projekt namens Universaltrader. Dieses Projekt könnte Ihre Erwartungen erfüllen. Das einzige, was dort nicht implementiert ist, ist der While Cycle Ansatz (einfach zu implementieren).
Einige der Vorteile von MULTICURRENCY MULTISTRATEGY EA:
Nachteile:
Dieses Projekt muss noch verbessert werden, wenn also jemand Interesse hat, kann ich ihn in dieses Google-Code-Projekt einladen
Aktuelles Skript hier angehängt:
Jacques, ich schätze Ihr anhaltendes Interesse an diesem Thema. Ich bin immer noch Debugging mein EA für seine erste Währung, aber beabsichtigen, es auf mehrere, wenn für geeignet befunden zu verwenden. Unter dieser Prämisse habe ich über eine Strategie nachgedacht, wie ich diese Idee umsetzen kann. Daher mein Interesse an diesem Thread.
Auf Ihre Anfrage hin habe ich Diagramme für drei weitere Paare erstellt und dabei festgestellt, dass zwei der Paare mehr als 32.000 Ticks in einem 24-Stunden-Zeitraum hatten (das Datenlimit für Diagramme in Excel). Daher musste ich das Diagramm in zwei Perioden unterteilen (1. 12 Stunden und 2. 12 Stunden). Um relativ konsistent zu bleiben, habe ich alle drei Paare in 12-Stunden-Perioden unterteilt.
Die vertikale Skala in diesen Diagrammen ist proportional zu den horizontalen Linien, aber die horizontale Skala ist NICHT zeitproportional (d. h. man kann nicht davon ausgehen, dass 1/12 der Ticks eine Stunde darstellt).
Ich denke, die wichtigste Erkenntnis aus diesen Diagrammen ist, dass es bei allen Paaren innerhalb eines 24-Stunden-Zeitraums erhebliche Zeitabstände zwischen den Ticks gibt. Wenn Sie daher mehrere Paare in einem EA kombinieren, wäre es meiner Meinung nach ratsam, eine "While"-Schleife zu verwenden. Der Verweis von StraightTrader auf https://book.mql4.com/special/index mit dem Titel "General Characteristics of Complex Programs" enthält eine gute Diskussion dieser Technik und eine Grafik im ersten Abschnitt dieses Artikels.
GBPJPY 44.834 Ticks in 24 Stunden
EURJPY 37.140 Ticks in 24 Stunden
GBPUSD 29.313 Ticks innerhalb von 24 Stunden
EURUSD 22.627 Ticks in 24 Stunden
Prost!
Vielen Dank für Ihre Charts.
Entscheiden Sie sich für eine Schleife anstelle einer Tick-Run-Aktivierung, das ist wissenschaftlicher für diejenigen, die Minutengenauigkeit benötigen, und es ist keine große Sache zu implementieren. Ein weiterer Vorteil ist, dass Sie den EA an jedes beliebige Währungspaar anhängen können (es ist nützlich, wenn er ein Objekt auf dem Chart zeichnet).
Prost
Außerdem können Sie mit der Funktion MarketInfo() die jüngsten Geld- und Briefkurse für Symbole außerhalb des aktuellen Charts abrufen.
Sie haben also folgende Möglichkeiten.
- Ein und derselbe EA ist an viele Charts angehängt und wird für das native Symbol jedes Charts ausgeführt (unter Verwendung der integrierten Variablen Ask und Bid)
- Sie haben einen EA, der an einen bestimmten Chart angehängt ist und für alle ausgewählten Symbole ausgeführt wird (mit der Funktion MarketInfo() für nicht-native Symbole) - wobei nur die Ticks des nativen Symbols als Auslöser verwendet werden
- Master- und Slave-EAs, die an verschiedene Charts angehängt sind, wobei der eine durch den anderen ausgelöst wird (z. B. schreibt der eine einen Wert in eine Datei, der andere liest die Datei ständig, bis er diese Daten findet und handelt dann)
Im Moment verwende ich die einfachste dieser Strategien - ich habe einen EA für drei Zeitrahmen und vier Währungen, also insgesamt zwölf. Sie alle sind so eingestellt, dass sie beim ersten Tick des Zeitrahmens ausgeführt werden. Ich habe jedoch das Problem, dass MT4 nicht immer alle EAs ausführt. Ich habe eine Druckanweisung direkt nach der Startfunktion, nur um zu sehen, was passiert, und es war nur immer auf drei der vier EA's von H1 zum Beispiel, aber es fehlte verschiedene Paare verschiedene Zeiten, und die EA war identisch, außer für die Einstellungen von Optimierungen für jedes Paar.
Frage - Führt MT4 immer nur einen EA gleichzeitig aus, wenn mehrere EAs gleichzeitig laufen sollen? Ist die Ausführung eines EA in irgendeiner Weise von der eines anderen abhängig (abgesehen davon, dass der Handelskontext belegt ist), oder sind sie völlig unabhängig?
Wenn ja, könnte ich die zweite Option verwenden, ich versuche nur, den EA so einfach wie möglich zu halten, denn je mehr Komplexität ich hineinschreibe, desto mehr Fehler mache ich, zumindest für mich.
Im Moment verwende ich die einfachste dieser Strategien - ich habe einen EA auf drei Zeitrahmen von vier Währungen, also insgesamt zwölf. Sie alle sind so eingestellt, dass sie beim ersten Tick des Zeitrahmens ausgeführt werden. Ich habe jedoch das Problem, dass MT4 nicht immer alle EAs ausführt. Ich habe eine Druckanweisung direkt nach der Startfunktion, nur um zu sehen, was passiert, und es war nur immer auf drei der vier EA's von H1 zum Beispiel, aber es fehlte verschiedene Paare verschiedene Zeiten, und die EA war identisch, außer für die Einstellungen von Optimierungen für jedes Paar.
Frage - Führt MT4 immer nur einen EA gleichzeitig aus, wenn mehrere EAs gleichzeitig laufen sollen? Ist die Ausführung eines EA in irgendeiner Weise von der eines anderen abhängig (abgesehen davon, dass der Handelskontext belegt ist), oder sind sie völlig unabhängig?
Wenn ja, könnte ich die zweite Option verwenden, ich versuche nur, den EA so einfach wie möglich zu halten, denn je mehr Komplexität ich hineinschreibe, desto mehr Fehler mache ich.
Ich habe mehrere EAs auf Charts laufen, ohne dass solche Probleme auftreten. Soweit ich das beurteilen kann, laufen sie gleichzeitig. Sie bemerken einander nur dann, wenn der Handelskontext von einem von ihnen verwendet wird. Was den EA selbst angeht, so ist er völlig unabhängig - jeder hat seine eigene Kopie der Variablen usw. Lassen Sie mich das klarstellen - Sie lassen 12 EAs laufen, die an 12 Charts angehängt sind? Vielleicht haben Sie Speicherprobleme?
Ich habe mehrere EAs auf Charts laufen, ohne dass solche Probleme auftreten. Soweit ich das beurteilen kann, laufen sie gleichzeitig. Sie bemerken einander nur dann, wenn der Handelskontext von einem von ihnen verwendet wird. Was den EA selbst angeht, so ist er völlig unabhängig - jeder hat seine eigene Kopie der Variablen usw. Lassen Sie mich das klarstellen - Sie lassen 12 EAs laufen, die an 12 Charts angehängt sind? Vielleicht haben Sie Speicherprobleme?
Richtig! 12 EA's auf 12 Charts. Ich habe einen ziemlich neuen Computer mit 6 GB Arbeitsspeicher, also würde ich nicht denken, dass es am Arbeitsspeicher liegt, aber es ist eine Überlegung wert, und ich werde es nicht ausschließen. Aber Sie haben meine Frage beantwortet: Wenn die EAs gleichzeitig laufen können sollen, dann mache ich vielleicht einfach etwas falsch. Das ist nicht das erste Mal! Ich werde den Code überprüfen und noch mehr studieren. Vielen Dank für Ihre Hilfe.
Führen Sie die Charts in separaten Instanzen des MT4-Clients aus? Wenn Sie alle Charts in einer Instanz öffnen, teilen sie sich einen einzigen Handelskontext, und Sie müssen die Logik für die gemeinsame Nutzung dieses Kontexts codieren - wenn das Verhalten Ihrer EAs bedeutet, dass wahrscheinlich mehr als einer gleichzeitig eine Handelsoperation durchführt. CB
Ja - ich führe sie auf demselben MT4-Client aus. Aber ich verwende eine der Handelskontext beschäftigt Lösungen aus diesem Artikel https://www.mql5.com/en/articles/1412 und ich nicht erhalten alle Handelskontext beschäftigt Fehler.
Es scheint nicht einmal zu dem Punkt zu kommen, an dem es versucht, eine Position zu eröffnen. Es scheint nicht den EA überhaupt für einige zu starten. Ich sage das, weil ich eine Druckanweisung an den Anfang meiner Startfunktion gesetzt habe.
Hier ist meine Startfunktion:
void start()
{
//---- nur für die ersten Ticks des neuen Balkens handeln
if(Volume[0]>1) return;
Print("Tick Check");
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose();
}
Ich handle mit CADJPY,EURCHF,GBPUSD, & USDJPY
Und ich erhalte dies:
2010.01.22 8:59:45 [EAName]USDJPY,H1: Tick Check
2010.01.22 8:59:45 [EAName]CADJPY,H1: Tick-Check
2010.01.22 8:59:45 [EAName]GBPUSD,H1: Tick-Check
2010.01.22 9:59:45 [EAName]EURCHF,H1: Tick-Check
2010.01.22 9:59:46 [EAName]GBPUSD,H1: Häkchenprüfung
2010.01.22 9:59:46 [EAName]CADJPY,H1: Tick Check
In manchen Stunden werden alle vier gehandelt, in manchen nur drei. Wenn es eine Stunde dauert, bis die H4 gehandelt werden, können drei von ihnen handeln, aber normalerweise nicht alle vier zusammen mit drei oder vier der H1.
Ich habe einen Workaround entwickelt, bei dem ich das Volumen auf 3 oder 4 Ticks erhöhe, nur um sicherzugehen, dass alles gehandelt wird, aber ich versuche, MetaTrader besser zu verstehen, damit ich das Grundproblem beheben kann.
Meine Frage ist also - da mein EA nur einen Tick laufen kann, würde er jeden EA gleichzeitig laufen lassen, und vielleicht ist das der Grund, warum sie nicht alle laufen? Ich habe eine Schleife in meinem EA, die bis zu 1500 der vergangenen Fraktale vergleicht, um einen Stoploss zu finden, also könnte das einige Zeit dauern.
Auch hier kann es nur ein Problem in meinem Code irgendwo sein.
Hier ist ein einfacher Code zum Öffnen von EURUSD und USDCHF in einem Chart. Auch ea ist auf einem anderen Chart hinzugefügt, so dass es EURUSD und USDCHF öffnen wird.
Funktioniert nicht?
für Backtesting
bekam ordersend Fehler 4106
Unbekannter Symbolname für USDCHF für die Funktion Ordersend
Ordersend funktioniert für EURUSD, wenn ich das Symbol EURUSD für die Einstellung oder den EURUSD-Chart wähle.
Wenn ich zu einem anderen Chart wechsle, erhalte ich sowohl für EURUSD als auch für USDCHF ein unbekanntes Symbol.
Vielen Dank im Voraus!