Sunday, 5 February 2017

Mt5 Trading Strategien

Highlights von MT5 bei 4xp MT5 amp 4XP Vorteile Nehmen Sie Vorteile von MT5 - Sie haben jetzt die Möglichkeit, Transaktionen auf Forex, Aktienoptionen, Futures und Aktien - alles auf Ihrer One-Stop-Handelsplattform durchzuführen. Detaillierte Marktanalyse Erweiterte Charting-Fähigkeiten 4 Arten von Ausführung ndash Instant, Market, Request, Exchange Auto-Trading-Option Mehrere Arten von Pending Orders Zahlreiche technische und benutzerdefinierte Indikatoren Zeitrahmen Flexibilität Erstellen Sie Ihre eigene Trading-Strategie Die neue und verbesserte MT5 Premiere zuerst bei 4XP. Mit seinen unzähligen Vorteilen, wie Zugang zu verschiedenen Finanzmärkten, leichterer Erreichbarkeit, zusätzlichen Strukturen und erhöhter Ausführungsgeschwindigkeit. Awarding Winning Trading Platform - Vorteile von MT5 bei 4xp Die Antworten sind einfach: Bei 4XP bemühen wir uns, den Handelsprozess so einfach und zugänglich zu machen Wie möglich - 4XP39s Trading on-the-go mobile Anwendungen Jetzt Händler mit jedem mobilen Gerät können handeln, wo immer sie sind. Die Antworten sind einfach: Bei 4XP sind wir zuversichtlich, dass ein effektiver Handel nicht nur auf den Händler und den Handelsprozess, sondern auch auf die Software angewiesen ist, jedes Werkzeug anzubieten, das die Rentabilität und den Erfolg steigert. Die Antworten sind einfach: Bei 4XP arbeiten wir sehr hart, um jedem Bedarf unserer Händler gerecht zu werden. Wir glauben an Langlebigkeit, dauerhafte Beziehungen Kern-Kundendienst, den wir strikt zu unseren Kunden zu wahren. Wer wir sind MT5.net amp 4XP bieten die Kanäle für die fortgeschrittene MT5 Trading internationalen Trader aller Hintergründe gefunden haben, um die besten zu sein. Kontaktieren Sie uns Unser Team wird Sie durch den Prozess des Werdens ein White-Label führen. Rufen Sie 1-888-520-1890 ab Jetzt anmelden und in Sekunden werden Sie auf Ihrem Weg zur Erstellung Ihres MT5-Kontos. Starten Sie den Handel heute mt5.net Copyright-Kopie 2013 Alle Rechte vorbehalten Warnung: Trading ForexCFD-Produkte ist nicht für alle Anleger geeignet. Der Devisenmarkt trägt Risiken für Ihre Anlage, einschließlich des möglichen Verlustes eines Teils oder der gesamten Investition. Vor der Investition, ist es empfehlenswert, dass die Händler prüfen, ob der Forex-Markt eine angemessene Investition Avenue in Bezug auf Risiken, persönliche Erfahrung und finanzielle bedingte. Forum: Trading-Strategien Forex Forum mt5 ndash Einleitung. Forex-Markt ist hoch-Rendite und riskant Mittel der Gewinn aus der Operationen mit den Wechselkursen. Instrumente der Arbeit am Forex-Markt in vielerlei Hinsicht bestimmen das Ergebnis des Devisenhandels von Forex Marktteilnehmer ndash Broker Kunden gemacht. Jeder Forex Broker bietet seinen eigenen Terminal, aber der Großteil der Broker und Händler stimmen bei der Auswahl MetaTrader 4 und MetaTrader 5 Terminals. Dieses Forum ist für diejenigen, die das Terminal der MetaTrader-Serie im Handel auf Forex bevorzugen erstellt. Forex Forum mt5 ndash Handelsgespräch. Forex Marktprognosen, unabhängige Meinungen der Anfänger Händler und Experten der Devisenmarkt ndash all dies finden Sie auf dem Forex-Forum der Handel Diskussion. Solide Erfahrung der Arbeit auf Forex ist vorzuziehen, aber alle Ecken einschließlich Forex-Neulinge können kommen und teilen ihre Meinung auch. Gegenseitige Hilfe und Dialog ndash das Hauptziel der Kommunikation im Forex-Forum, gewidmet zum Handel. Forex Forum mt5 ndash Dialog mit Brokern und Händlern (über Broker). Wenn Sie negative oder positive Erfahrungen mit der Arbeit mit Forex Broker ndash teilen Sie es auf Forex Forum, im Zusammenhang mit den Fragen der Forex-Service-Qualität. Sie können einen Kommentar zu Ihrem Broker über Vor-oder Nachteile der Arbeit bei Forex mit ihm zu verlassen. Die aggregierten Händlerbewertungen von Brokern stellen eine Bewertung dar. In dieser Bewertung sehen Sie die Führer und Außenseiter des Marktes für Forex-Dienstleistungen. Kostenlose Diskussionen auf dem Forex Forum mt5 Sie sind ein Trader und wollen sich entspannen Dann Forex Forum für freie Diskussionen ist für Sie. Es gibt keine Zweifel, dass Konversation über Themen in der Nähe von Forex-Markt ist bevorzugt. Hier finden Sie Witze über Händler, Karikatur von Forex Broker und Full-Rate-Forex von oben. Boni für die Kommunikation bei Forex Forum mt5 Dieses Forum wird von Händlern für Händler geschaffen und ist für die Ableitung von Gewinn gemeint. Allerdings gibt jeder Post auf dem Forex-Forum seinem Autor einen Forex-Bonus. Die im Forex-Handel auf dem Konto mit einem der Foren-Sponsoren eröffnet werden kann. Dieses kleine Geschenk ist mit dem Ziel, professionelle Händler für verbrachte Zeit in unserem Forum zu belohnen präsentiert. Wir schätzen Ihre Wahl des Forex Forums mt5 als eine Plattform für Kommunikation. Alle Zeitangaben in WEZ +1. Powered by vBulletin® Version 4.1.2 (Deutsch) Copyright © 2000-2011 IMDb. com, Inc. Allgemeine Bedingungen und Datenschutzerklärung unter denen Ihnen dieser Service zur Verfügung gestellt wird. Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut eine Woche. Der Roboter wird nicht müde, zweifelhaft oder ängstlich, es ist völlig frei von jeglichen psychischen Problemen. Es genügt, die Handelsregeln klar zu formalisieren und in den Algorithmen umzusetzen, und der Roboter ist bereit, unermüdlich zu arbeiten. Aber zuerst müssen Sie sicherstellen, dass die folgenden zwei wichtigen Bedingungen erfüllt sind: Der Expert Advisor führt Handelstätigkeiten in Übereinstimmung mit den Regeln des Handelssystems Die Handelsstrategie, implementiert in der EA, zeigt einen Gewinn auf die Geschichte. Um Antworten auf diese Fragen zu erhalten, wenden wir uns an den Strategie-Tester. Die im MetaTrader 5 Client-Terminal enthalten ist. Dieser Abschnitt behandelt die Funktionen der Programmtests und - optimierung im Strategie-Tester: Funktionseinschränkungen im Strategie-Tester Bei einigen Funktionen im Client-Terminal39s-Strategie-Tester gibt es Betriebseinschränkungen. Die Funktionen Print () und PrintFormat () Um die Leistung zu erhöhen, werden die Funktionen Print () und PrintFormat () nicht bei der Optimierung der Handelsroboter-Parameter ausgeführt. Die Ausnahme ist die Verwendung dieser Funktionen innerhalb des OnInit () - Handlers. Dies ermöglicht Ihnen, die Ursache von Fehlern leicht zu finden, wenn sie auftreten. (), MessageBox (), PlaySound (), SendFTP, SendMail (), SendNotification (), WebRequest () - Funktionen Tick-Generierungsmodi Ein Expert Advisor ist ein Programm, geschrieben in MQL5, das jedes Mal als Reaktion auf einige ausgeführt wird Externe Ereignis. Der EA hat für jedes vordefinierte Ereignis eine entsprechende Funktion (Event-Handler). Das NewTick-Ereignis (Preisänderung) ist das wichtigste Ereignis für die EA und daher müssen wir eine Ticksequenz zum Testen der EA generieren. Im Strategie-Tester des MetaTrader 5-Client-Terminals sind drei Modi der Zeckenerzeugung implementiert: Alle Zeiger 1 Minute OHLC (OHLC-Preise mit Minutenbalken) Nur offene Preise Die grundlegenden und detailliertesten sind der "Ee-Tickquot-Modus" und die anderen beiden Modi Die Vereinfachungen der grundlegenden und werden im Vergleich zu dem "Ee-Tickquot-Modus" beschrieben. Betrachten Sie alle drei Modi, um die Unterschiede zwischen ihnen zu verstehen. QuotEvery Tickquot Die historischen Quotierungsdaten für Finanzinstrumente werden vom Handelsserver in Form von gepackten Minutenbalken an das MetaTrader 5-Client-Terminal übertragen. Detaillierte Informationen zum Auftreten von Anfragen und zur Erstellung der erforderlichen Zeitrahmen erhalten Sie im Kapitel Organisationsdatenzugriff des MQL5 Referenzhandbuchs. Der minimale Bestandteil der Preishistorie ist der Minutenbalken, aus dem Sie sich über die vier Werte des Preises informieren können: Open - der Preis, zu dem der Minutenbalken geöffnet wurde High - das Maximum, das in dieser Minute erreicht wurde Low - Das Minimum, das während dieser Minute bar erreicht wurde Schließen - der Schlusskurs der Bar. Der neue Minutenbalken wird nicht geöffnet, wenn die neue Minute beginnt (Anzahl der Sekunden gleich 0), aber wenn ein Häkchen auftritt - eine Preisänderung um mindestens einen Punkt. Die Figur zeigt den ersten Minutenbalken der neuen Handelswoche, der die Öffnungszeit von 2011.01.10 00:00 Uhr hat. Die Preislücke zwischen Freitag und Montag, die wir auf dem Chart sehen, ist üblich, da die Wechselkurse auch an den Wochenenden als Reaktion auf eingehende Nachrichten schwanken. Für diese Bar wissen wir nur, dass die Minute-Bar am 10. Januar 2011 um 00 Uhr 00 Minuten eröffnet wurde, aber wir wissen nichts über die Sekunden. Es könnte um 00:00:12 oder 00:00:36 (12 oder 36 Sekunden nach dem Beginn eines neuen Tages) oder irgendeine andere Zeit innerhalb dieser Minute geöffnet worden sein. Aber wir wissen, dass der offene Preis von EURUSD bei 1.28940 zur Öffnungszeit der neuen Minute bar war. Wir wissen auch nicht (genau in einer Sekunde), als wir das Häkchen erhielten, das dem Schlusskurs des betrachteten Minutenzeigers entspricht. Wir haben nur eins gekannt - der letzte Schlusskurs der Minutenzeile. Für diesen Moment war der Preis 1.28958. Die Zeit des Erscheinens der hohen und niedrigen Preise ist auch unbekannt, aber wir wissen, dass die Höchst - und Mindestpreise auf den Niveaus von 1.28958 beziehungsweise 1.28940 waren. Um die Trading-Strategie zu testen, benötigen wir eine Sequenz von Ticks, auf der die Arbeit des Expert Advisor simuliert wird. So kennen wir für jeden Minutenbalken die 4 Kontrollpunkte. Wo der Preis definitiv gewesen ist. Wenn eine Leiste nur 4 Zecken hat, reicht diese Information aus, um eine Prüfung durchzuführen. In der Regel ist das Zeckenvolumen jedoch größer als 4. Daher müssen zusätzliche Kontrollpunkte für Zecken generiert werden, Niedrig, und schließen Sie Preise. Das Prinzip des Tickquot-Tick-Generierungsmodus ist im The Algorithm of Ticks Generation im Strategy Tester des MetaTrader 5 Terminals beschrieben, der nachfolgend dargestellt wird. Beim Testen im Eye-Tickquot-Modus wird die OnTick () - Funktion des EA bei jedem Kontrollpunkt aufgerufen. Jeder Kontrollpunkt ist ein Haken aus einer generierten Sequenz. Die EA erhält die Zeit und den Preis der simulierten Zecke, genau wie bei der Online-Arbeit. Wichtig: Der Tickquot-Testmodus ist der genaueste, aber gleichzeitig der zeitraubendste. Für eine erste Prüfung der Mehrheit der Handelsstrategien ist es gewöhnlich ausreichend, einen der beiden anderen Testmodi zu verwenden. Quot1 Minute OHLCquot Der quotEvery-Tickquot-Modus ist der genaueste der drei Modi, aber gleichzeitig ist er der langsamste. Das Ausführen des OnTick () - Handlers tritt bei jedem Tick auf, während das Tick-Volume ziemlich groß sein kann. Für eine Strategie, in der die Tick-Sequenz der Preisbewegung über die Bar, spielt keine Rolle, gibt es einen schnelleren und raueren Simulationsmodus - quot1 Minute OHLCquot. In der OHLCquot-Betriebsart mit 1 Minute wird die Ticksequenz nur durch die OHLC-Preise der Minutenbalken aufgebaut. Wird die Anzahl der erzeugten Kontrollpunkte signifikant reduziert - also auch die Testzeit. Der Start der Funktion OnTick () wird an allen Kontrollpunkten durchgeführt, die aus den Preisen der OHLC-Minutenbalken aufgebaut sind. Die Weigerung, zwischen den offenen, hohen, niedrigen und engen Preisen zusätzliche Zwischenstiche zu erzeugen, führt zu einem starren Determinismus bei der Preisentwicklung, vom Zeitpunkt der Feststellung des offenen Preises. Dadurch ist es möglich, einen "Gradequot" zu erstellen, der ein schönes Aufwärtsdiagramm der Testwaage zeigt. Ein Beispiel für solche Grals ist in der Code Base - Grr-al. Die Abbildung zeigt eine sehr attraktive Grafik dieses EA-Tests. Wie wurde es erhalten Wir wissen 4 Preise für eine Minute Bar, und wir wissen auch, dass die erste ist der Open-Preis, und die letzte ist die Close-Preis. Wir haben die hohen und niedrigen Preise zwischen ihnen, und die Reihenfolge ihres Auftretens ist unbekannt, aber es ist bekannt, daß der hohe Preis größer oder gleich dem offenen Preis ist (und der niedrige Preis kleiner oder gleich dem offen ist Preis). Es genügt, den Zeitpunkt des Erhaltens des offenen Preises zu bestimmen, und analysiert dann den nächsten Tick, um festzustellen, welchen Preis wir derzeit haben - entweder Hoch oder Niedrig. Wenn der Preis unter dem offenen Preis liegt, dann haben wir einen niedrigen Preis und kaufen an diesem Häckchen, das folgende Häkchen entspricht dem hohen Preis, an dem wir den Kauf schließen und für Verkauf öffnen. Der nächste Tick ist der letzte, das ist der Close-Preis, und wir schließen den Verkauf darauf. Wenn nach dem Preis, erhalten wir ein Häkchen mit einem Preis größer als der Eröffnungskurs, dann ist die Reihenfolge der Angebote umgekehrt. Verarbeiten Sie in diesem Quotchequot-Modus einen Minutenbalken und warten Sie auf den nächsten. Beim Testen solcher EA auf die Geschichte, geht alles reibungslos, aber sobald wir es online starten, beginnt die Wahrheit zu offenbaren - die Balance bleibt stabil, aber die Köpfe nach unten. Um diesen Trick auszusetzen, müssen wir nur die EA in der quotEvery tickquot-Modus laufen. Anmerkung: Wenn die Testergebnisse der EA in den groben Testmodi (1 Minute OHLCquot und quotOpen Preise onlyquot) zu gut scheinen, stellen Sie sicher, dass Sie sie im "Truequick-Modus" testen. QuotOpen Preise Onlyquot In diesem Modus werden Ticks basierend auf den OHLC-Preisen des für die Prüfung ausgewählten Zeitrahmens generiert. Die OnTick () - Funktion des Expert Advisor läuft nur am Anfang der Leiste zum Open-Preis. Aufgrund dieses Merkmals können Stopplevel und Pending zu einem Preis ausgelöst werden, der sich von dem angegebenen unterscheidet (besonders beim Testen auf höheren Zeitrahmen). Stattdessen haben wir die Möglichkeit, schnell einen Evaluationstest des Expert Advisors durchzuführen. W1- und MN1-Perioden sind die Ausnahmen im "Open-Preis-Onlyquot-Ticks-Generierungsmodus: Für diese Zeitfenster werden für die OHLC-Preise für jeden Tag keine OHLC-Preise der Woche oder des Monats generiert. Angenommen wir testen einen Expert Advisor auf EURUSD H1 im quotOpen-Preis Onlyquot-Modus. In diesem Fall beträgt die Gesamtzahl der Zecken (Kontrollpunkte) nicht mehr als 4 Anzahl von einstündigen Stäben innerhalb des getesteten Intervalls. Der OnTick () - Handler wird jedoch nur beim Öffnen der einstündigen Leiste aufgerufen. Die Prüfungen, die für eine korrekte Prüfung erforderlich sind, treten auf den restlichen Zecken auf (die aus der EA hervorgehoben werden). Die Berechnung der Margin-Anforderungen Die Auslösung von Stop-Loss - und Take-Profit-Levels Auslösen von ausstehenden Aufträgen Das Entfernen von abgelaufenen ausstehenden Aufträgen. Wenn es keine offenen Positionen oder ausstehende Aufträge gibt, müssen wir diese Kontrollen auf versteckten Zecken nicht durchführen, und die Zunahme der Geschwindigkeit kann ziemlich erheblich sein. Dieser quotOpen-Preis nurquot-Modus eignet sich gut für die Prüfung von Strategien, die Prozesse nur an der Eröffnung der Bar und verwenden Sie keine ausstehenden Bestellungen, sowie StopLoss und TakeProfit Bestellungen. Für die Klasse solcher Strategien wird die notwendige Genauigkeit der Tests beibehalten. Let39s verwenden den Moving Average Expert Advisor aus dem Standardpaket als Beispiel für eine EA, die in jedem Modus getestet werden kann. Die Logik dieses EA ist so gebaut, dass alle Entscheidungen bei der Eröffnung der Bar getroffen werden, und Deals werden sofort durchgeführt, ohne die Verwendung von ausstehenden Bestellungen. Führen Sie eine Prüfung der EA auf EURUSD H1 in einem Intervall von 2010.09.01 bis 2010.12.31, und vergleichen Sie die Grafiken. Die Abbildung zeigt den Balance-Graph aus dem Testbericht für alle drei Modi. Wie Sie sehen können, sind die Graphen auf verschiedenen Testmodi genau die gleichen für den Moving Average EA aus dem Standardpaket. Es gibt einige Einschränkungen für den quotOpen-Preis Onlyquot-Modus: Sie können den Random Delay-Ausführungsmodus nicht verwenden. Im getesteten Expertenratgeber können Sie nicht auf Daten des Zeitrahmens zugreifen, die niedriger sind als die für die Testoptimierung verwendeten. Wenn Sie beispielsweise die Testoptimierung auf der H1-Periode ausführen, können Sie auf Daten von H2, H3, H4 usw. zugreifen, aber nicht auf M30, M20, M10 usw. Darüber hinaus müssen die höheren Zeitrahmen, auf die zugegriffen wird, ein Vielfaches des Testzeitrahmens sein. Wenn Sie beispielsweise M20 ausführen, können Sie nicht auf Daten von M30 zugreifen, aber es ist möglich, auf H1 zuzugreifen. Diese Einschränkungen sind mit der Unmöglichkeit verbunden, Daten aus niedrigeren oder nicht-multiplen Zeitrahmen aus den während der Testoptimierung erzeugten Balken zu gewinnen. Beschränkungen für den Zugriff auf Daten anderer Zeitrahmen gelten auch für andere Symbole, deren Daten vom Expert Advisor verwendet werden. In diesem Fall hängt die Begrenzung für jedes Symbol von dem ersten Zeitrahmen ab, auf den während der Testoptimierung zugegriffen wird. Angenommen, beim Testen an EURUSD H1 greift ein Expert Advisor auf Daten von GBPUSD M20 zu. In diesem Fall ist der Expert Advisor in der Lage, Daten von EURUSD H1, H2 etc. sowie GBPUSD M20, H1, H2 etc. weiter zu nutzen. Hinweis: Der nurOpen-Preis nurquot-Modus hat die schnellste Prüfzeit, ist aber nicht geeignet Für alle Handelsstrategien. Wählen Sie den gewünschten Testmodus basierend auf den Merkmalen des Handelssystems aus. Um den Abschnitt über die Zeckenerzeugungsmodi abzuschließen, betrachten wir einen visuellen Vergleich der verschiedenen Zeckenerzeugungsmodi für EURUSD für zwei M15-Balken in einem Intervall von 2011.01.11 21:00:00 - 2011.01.11 21:30:00. Die Ticks wurden in verschiedenen Dateien mit dem WriteTicksFromTester. mq5 EA gespeichert und das Ende dieser Dateien werden in den DateinamenEveryTick, filenameOHLC und filenameOpenPrice input-parameters angegeben. Um drei Dateien mit drei Ticksequenzen zu erhalten (für jede der folgenden Modi quotEvery tickquot, nur 1 Minute OHLCquot und quotOpen Preise), wurde die EA dreimal in den entsprechenden Modi in Einzelläufen gestartet. Dann wurden die Daten aus diesen drei Dateien auf dem Diagramm mit dem TicksFromTester. mq5-Indikator angezeigt. Der Indikatorcode ist diesem Artikel beigefügt. Standardmäßig werden alle Dateivorlagen in der MQL5-Sprache innerhalb des quotfile-Sandboxquots erstellt, und beim Testen hat der EA nur Zugriff auf sein eigenes quotfile-Sandboxquot. Damit der Indikator und die EA während des Tests mit Dateien aus einem Ordner arbeiten konnten, verwendeten wir das Flag FILECOMMON. Ein Beispiel für den Code aus dem EA: --- Öffnen Sie die Datei fileOpen (Dateiname, FILEWRITEFILECSVFILECOMMON, quotquot) --- prüfen Sie die Datei handle if (fileINVALIDHANDLE) PrintFormat (quotError beim Öffnen der Datei s zum Schreiben Fehler codedquot, Dateiname, GetLastError ()) Return else PrintFormat (Die Datei wird in s folderquot erstellt.) TerminalInfoString (TERMINALCOMMONDATAPATH) Zum Lesen der Daten im Indikator haben wir auch das Flag FILECOMMON verwendet. Dadurch konnten wir die manuelle Übertragung der benötigten Dateien von einem Ordner zum anderen vermeiden. (Dateiname, FILEREADFILECSVFILECOMMON, quotquot) --- Datei-Handle prüfen if (fileINVALIDHANDLE) PrintFormat (Error codedquot, fname, GetLastError ()) Rückgabewert PrintFormat () TerminalFunktion (TERMINALCOMMONDATAPATH)) Simulation der Spreads Die Preisdifferenz zwischen dem Bid und den Ask-Preisen wird als Spread bezeichnet. Während des Testens wird der Spread nicht modelliert, sondern aus historischen Daten entnommen. Wenn der Spread in den historischen Daten kleiner oder gleich Null ist, wird der letzte bekannte (im Moment der Erzeugung) Spread von einem Testmittel verwendet. Im Strategie-Tester wird die Ausbreitung immer als schwimmend betrachtet. Das heißt, SymbolInfoInteger (Symbol, SYMBOLSPREADFLOAT) gibt immer true zurück. Darüber hinaus enthalten die historischen Daten Tick-Werte und Handelsvolumen. Für die Speicherung und den Abruf von Daten verwenden wir eine spezielle MqlRates-Struktur: struct MqlRates datetime time Period start time double open Open Preis double high Der höchste Preis der Periode double low Der niedrigste Preis der Periode double close Schließen Preis long tickvolume Tick volume int Spread Spread long realvolume Handelsvolumen Die globalen Variablen des Client-Terminals Beim Testen werden auch die globalen Variablen des Client-Endgeräts emuliert, die jedoch nicht mit den aktuellen globalen Variablen des Terminals zusammenhängen. Die im Terminal über die F3-Taste zu sehen ist. Das bedeutet, dass alle Operationen mit den globalen Variablen des Terminals während des Testens außerhalb des Client-Terminals (im Testagent) stattfinden. Die Berechnung der Indikatoren während des Tests Im Echtzeit-Modus werden die Indikatorwerte bei jedem Tick berechnet. Der Strategie-Tester hat ein kostengünstiges Modell für die Berechnung von Indikatoren angenommen - Indikatoren werden erst unmittelbar vor dem Lauf der EA neu berechnet. Das bedeutet, dass die Neuberechnung der Indikatoren vor dem Aufruf der Funktionen OnTick (), OnTrade () und OnTimer () erfolgt. Es spielt keine Rolle, ob es einen Aufruf für das Kennzeichen in einem bestimmten Ereignishandler gibt oder nicht. Alle Indikatoren mit den von den Funktionen iCustom () oder IndicatorCreate () erstellten Handles werden vor dem Aufrufen des Ereignishandlers neu berechnet. Folglich erfolgt die Ermittlung der Indikatoren vor dem Aufruf der OnTick () - Funktion beim Testen im quotEvery-Tickquot-Modus. Wenn der Timer im EA unter Verwendung der Funktion EventSetTimer () aktiviert ist, werden die Indikatoren vor jedem Aufruf des OnTimer () - Handlers neu berechnet. Daher kann die Testzeit unter Verwendung von Indikatoren, die auf nicht optimale Weise geschrieben werden, stark erhöht werden. Ladeverlauf während des Testens Der Verlauf eines zu testenden Symbols wird vom Endgerät vor dem Starten des Testvorgangs synchronisiert und vom Terminal geladen. Beim ersten Laden lädt das Terminal den vorhandenen Verlauf eines Symbols, um es nicht später anzufordern. Weiter werden nur die neuen Daten geladen. Ein Testagent empfängt die Historie eines zu testenden Symbols vom Client-Terminal direkt nach dem Start des Tests. Wenn Daten von anderen Instrumenten im Testprozess verwendet werden (z. B. ein Multicurrency Expert Advisor), fordert der Testagent während des ersten Aufrufs dieser Daten die erforderliche Historie vom Client-Terminal an. Liegen historische Daten im Terminal vor, werden diese sofort an das Prüfmittel weitergegeben. Wenn keine Daten verfügbar sind, fordert das Terminal diese an und lädt sie vom Server herunter und übergibt sie an den Testagent. Daten für zusätzliche Instrumente sind auch für die Berechnung der Cross-Rates für den Handel erforderlich. Beim Testen einer Strategie auf EURCHF mit der Einzahlungswährung in USD, vor der Verarbeitung der ersten Handelsoperation, fordert der Testagent die Historiendaten von EURUSD und USDCHF vom Client-Terminal an, obwohl die Strategie keinen Direktbenutzungsaufruf enthält Diese Symbole. Vor dem Testen einer Multi-Währungs-Strategie wird empfohlen, alle notwendigen historischen Daten zum Client-Terminal herunterzuladen. Dies wird helfen, Verzögerungen bei der Testoptimierung zu vermeiden, die mit dem Herunterladen der erforderlichen Daten verbunden sind. Sie können den Verlauf zum Beispiel herunterladen, indem Sie die entsprechenden Diagramme öffnen und zum Anfang des Verlaufs scrollen. Ein Beispiel für das erzwungene Laden des Protokolls in das Terminal ist im Abschnitt Organisieren des Zugriffs auf Daten des MQL5-Verweises verfügbar. Prüfmittel, die wiederum erhalten Geschichte vom Terminal in der gepackten Form. Während des nächsten Tests führt das Tester keine Historie vom Terminal aus, da die erforderlichen Daten seit dem letzten Testlauf verfügbar sind. Das Terminal lädt die Historie von einem Handelsserver nur einmal, sobald der Agent die Historie eines zu testenden Symbols vom Terminal anfordert. Die Geschichte wird in einer gepackten Form geladen, um den Verkehr zu verringern. Ticks werden nicht über das Netzwerk gesendet, sie werden auf Testagenten generiert. Multi-Currency Testing Mit dem Strategy Tester können wir Strategien testen, die auf mehreren Symbolen handeln. Solche EAs werden herkömmlicherweise als Multi-Währungs-Expertenberater bezeichnet, da ursprünglich in den vorherigen Plattformen das Testen nur für ein einziges Symbol durchgeführt wurde. Im Strategie-Tester des MetaTrader 5 Terminals können wir den Handel für alle verfügbaren Symbole modellieren. Der Tester lädt die Historie der verwendeten Symbole vom Client-Terminal (nicht vom Handelsserver) automatisch beim ersten Aufruf der Symboldaten. Der Testagent lädt nur die fehlende Historie mit einer kleinen Marge herunter, um die notwendigen Daten zur Historie zur Berechnung der Indikatoren zum Startzeitpunkt des Tests bereitzustellen. Für die Zeitrahmen D1 und weniger beträgt das minimale Volumen des heruntergeladenen Verlaufs ein Jahr. So, wenn wir eine Prüfung auf ein Intervall 2010.11.01-2010.12.01 (Prüfung für ein Intervall von einem Monat) mit einem Zeitraum von M15 (jeder Balken ist gleich 15 Minuten), dann wird das Terminal wird die Geschichte für angefordert Das Instrument für das gesamte Jahr 2010. Für den wöchentlichen Zeitrahmen werden wir eine Geschichte von 100 Bar, die etwa zwei Jahre (ein Jahr hat 52 Wochen) zu beantragen. Für die Prüfung auf einem monatlichen Zeitrahmen wird der Agent die Geschichte von 8 Jahren (12 Monate x 8 Jahre 96 Monate) anfordern. Wenn es keine notwendigen Stäbe gibt, wird das Startdatum der Prüfung automatisch von Vergangenheit auf Gegenwart verschoben, um die notwendige Reserve von Stäben vor der Prüfung bereitzustellen. Während des Testens wird auch das quotMarket Watch-Quotum emuliert, aus dem man Informationen über Symbole erhalten kann. Standardmäßig ist zu Beginn der Prüfung nur noch ein Symbol in der QuoteMarket Watchquot des Strategie-Testers - das Symbol, dass die Prüfung ausgeführt wird. Sämtliche notwendigen Symbole werden, wenn auf sie verwiesen wird, automatisch mit dem QuoteMarket Watchquot des Strategy Tester (nicht Terminal) verbunden. Vor Beginn der Prüfung eines Multi-Währungs-Experten Advisor, ist es notwendig, Symbole für die Prüfung im quotMarket Watchquot des Terminals zu wählen und laden Sie die erforderlichen Daten. Während des ersten Aufrufs eines Quellzeichensymbols wird sein Verlauf automatisch zwischen dem Testagent und dem Client-Terminal synchronisiert. Ein Symbol für die Fremdquantifizierung ist das andere Symbol als das, auf dem die Prüfung läuft. In den folgenden Fällen erfolgt die Verweisung auf die Daten eines Quotienten-Symbols: Zum Zeitpunkt des ersten Aufrufs eines Quotienten-Symbols wird der Testvorgang gestoppt und die Historie für den Symbolzeitrahmen vom Terminal zum Testagenten heruntergeladen. Gleichzeitig wird die Erzeugung der Zei - chenfolge für dieses Symbol vorgenommen. Für jedes Symbol wird eine individuelle Tick-Sequenz entsprechend dem ausgewählten Tick-Generierungsmodus erzeugt. Sie können die Historie auch explizit für die gewünschten Symbole anfordern, indem Sie die SymbolSelect () im OnInit () - Handler aufrufen - das Herunterladen der Historie erfolgt unmittelbar vor dem Testen des Expertenberaters. Daher erfordert es keine zusätzlichen Anstrengungen, um Multi-Currency-Tests im MetaTrader 5-Client-Terminal durchzuführen. Öffnen Sie einfach die Diagramme der entsprechenden Symbole im Client-Terminal. Der Verlauf wird automatisch vom Handelsserver für alle erforderlichen Symbole hochgeladen, sofern er diese Daten enthält. Simulation der Zeit im Strategie-Tester Beim Testen ist die lokale Zeit TimeLocal () immer gleich der Server-Zeit TimeTradeServer (). Im Gegenzug ist die Serverzeit immer gleich der Zeit, die der GMT-Zeit entspricht - TimeGMT (). Auf diese Weise werden alle diese Funktionen während des Testens gleichzeitig angezeigt. Das Fehlen eines Unterschieds zwischen dem GMT, dem Local und der Serverzeit im Strategy Tester erfolgt bewusst, falls keine Verbindung zum Server besteht. Die Testergebnisse sollten immer gleich sein, unabhängig davon, ob eine Verbindung besteht oder nicht. Informationen über die Serverzeit werden nicht lokal gespeichert und vom Server übernommen. Grafische Objekte beim Testen Während der Testoptimierung werden grafische Objekte nicht gezeichnet. Wenn also auf die Eigenschaften eines erstellten Objekts während der Testoptimierung Bezug genommen wird, erhält ein Expert Advisor Nullwerte. Diese Einschränkung gilt nicht für Tests im visuellen Modus. Die OnTimer () - Funktion im Strategie-Tester MQL5 bietet die Möglichkeit, Timer-Ereignisse zu bearbeiten. Der Aufruf des OnTimer () - Handlers erfolgt unabhängig vom Testmodus. Dies bedeutet, dass ein OnTick () - Handler aufgerufen wird, wenn ein Test im Quotierungsmodus nur für den Zeitraum H4 läuft und der EA einen Timer auf einen Anruf pro Sekunde eingestellt hat Und der OnTimer () - Handler wird 14400 Mal (3600 Sekunden 4 Stunden) aufgerufen. Der Betrag, um den die Prüfzeit des EA erhöht wird, hängt von der Logik des EA ab. Um die Abhängigkeit der Testzeit von der vorgegebenen Frequenz des Timers zu überprüfen, haben wir eine einfache EA ohne Handelsoperationen erstellt. Testzeitmessungen wurden mit unterschiedlichen Werten des Timerparameters (Periodizität des Timer-Ereignisses) durchgeführt. Auf den erhaltenen Daten stellen wir eine Testzeit als Funktion der Zeitperiode dar. Je kleiner der Parameter-Timer ist, desto kleiner ist die Periode zwischen den Aufrufen des OnTimer-Handlers und je größer die Testzeit T ist, während der Initialisierung der Funktion EventSetTimer (Timer) kleiner ist , Unter den gleichen Bedingungen. Die Sleep () - Funktion im Strategie-Tester Die Sleep () - Funktion ermöglicht es dem EA oder Skript, die Ausführung des mql5-Programms für eine Weile zu unterbrechen, wenn an dem Diagramm gearbeitet wird. Dies kann nützlich sein, wenn Daten angefordert werden, die zum Zeitpunkt der Anforderung nicht bereit sind und warten müssen, bis sie bereit ist. Ein ausführliches Beispiel für die Verwendung der Sleep () - Funktion finden Sie im Abschnitt Organisieren von Datenzugriff. Der Testvorgang wird nicht durch die Sleep () - Aufrufe unterbrochen. Wenn Sie den Sleep () aufrufen, werden die erzeugten Ticks innerhalb einer festgelegten Verzögerung, die zum Auslösen ausstehender Aufträge, Wird die simulierte Zeit im Strategie-Tester um ein im Parameter der Sleep-Funktion spezifiziertes Intervall erhöht. Wenn als Ergebnis der Ausführung der Sleep () - Funktion die aktuelle Zeit im Strategy Tester die Testperiode überschritten hat, erhalten Sie während des Testsquotes einen Fehler "Unendliche Sleep-Schleife". Wenn Sie diesen Fehler erhalten, werden die Testergebnisse nicht zurückgewiesen, alle Berechnungen werden in vollem Umfang durchgeführt (Anzahl der Transaktionen, Senkungen usw.), und die Ergebnisse dieser Tests werden an das Terminal weitergegeben. Die Funktion Sleep () funktioniert nicht in OnDeinit (), da nach dem Aufruf die Testzeit den Bereich des Testintervalls übertrifft. Einsatz des Strategieprüfers für Optimierungsprobleme in mathematischen Berechnungen Der Tester im MetaTrader 5 Terminal kann nicht nur zum Testen von Handelsstrategien, sondern auch für mathematische Berechnungen eingesetzt werden. Um es zu verwenden, ist es notwendig, den Math-Berechnungsquotmodus zu wählen: In diesem Fall werden nur drei Funktionen aufgerufen: OnInit (), OnTester (), OnDeinit (). Im QuoteMath-Berechnungsquotmodus generiert der Strategie-Tester keine Ticks und lädt den Verlauf herunter. Der Strategie-Tester funktioniert auch im Modus "MATH-Berechnung", wenn Sie das Startdatum angeben, das größer als das Enddatum ist. Bei der Verwendung des Testers zur Lösung von mathematischen Problemen tritt das Hochladen der Historie und die Erzeugung von Zecken nicht auf. Ein typisches mathematisches Problem für die Lösung in der MetaTrader 5 Strategie Tester - Suche nach einem Extremum einer Funktion mit vielen Variablen. Um es zu lösen, müssen wir: Die Berechnung des Funktionswertes sollte in der OnTester () - Funktion liegen. Die Funktionsparameter müssen als Eingangsvariablen des Expert Advisor definiert werden. Kompilieren Sie die EA, öffnen Sie das Fenster "Strategy Testerquot ". Wählen Sie auf der Registerkarte "Eingabeparameter" die erforderlichen Eingabevariablen und definieren Sie den Satz von Parameterwerten, indem Sie die Start-, Stopp - und Schrittwerte für jede der Funktionsvariablen angeben. Wählen Sie den Optimierungstyp - "Vollständiger Algorithmus (Vollsuche von Parametern) oder FastFast genetisch basierter Algorithmus. Für eine einfache Suche nach dem Extremum der Funktion, ist es besser, eine schnelle Optimierung zu wählen, aber wenn Sie die Werte für die gesamte Menge von Variablen berechnen wollen, dann ist es am besten, die langsame Optimierung zu verwenden. Wählen Sie den QuotMat-Berechnungsquot-Modus aus und führen Sie mit der Schaltfläche "Startquot "das Optimierungsverfahren aus. Beachten Sie, dass der Strategie-Tester bei der Optimierung nach den Maximalwerten der OnTester-Funktion sucht. Um ein lokales Minimum zu finden, geben Sie die Inverse des berechneten Funktionswertes aus der OnTester-Funktion zurück: Es ist zu prüfen, ob der Funktionswert ungleich Null ist, da wir sonst einen kritischen Fehler der Division durch Null erhalten können. Es gibt einen anderen Weg, es ist bequemer und verzögert nicht die Ergebnisse der Optimierung, wurde es von den Lesern dieses Artikels vorgeschlagen: Diese Option erfordert nicht die Überprüfung des Funktionswertes für gleich Null und die Oberfläche der Optimierung Ergebnisse in einer 3D-Darstellung hat die gleiche Form. Der einzige Unterschied ist, dass es im Vergleich zum Original gespiegelt wird. Als Beispiel bieten wir die sink () - Funktion an: Der Code des EA zum Auffinden des Extremums dieser Funktion wird im OnTester () platziert: Führen Sie eine Optimierung durch und sehen Sie die Optimierungsergebnisse in Form eines 2D-Graphen. Je besser der Wert für ein gegebenes Paar von Parametern (x, y) ist, desto gesättigter ist die Farbe. Wie aus der Sicht der Form der Sink () - Formel zu erwarten war, bilden ihre Werte konzentrische Kreise mit einem Zentrum bei (0,0). Man kann in der 3D-Grafik sehen, dass die sink () - Funktion kein einziges globales Extremum hat: Die Synchronisation von Balken in den quotOpen-Preisen onlyquot-Modus Der Tester im MetaTrader 5-Client-Terminal ermöglicht es uns, das so genannte quotmulti-currencyquot zu überprüfen EAs. Eine Multi-Währung EA - ist eine EA, die auf zwei oder mehr Symbole handelt. The testing of strategies, that are trading on multiple symbols, imposes a few additional technical requirements on the tester: The generation of ticks for these symbols The calculation of indicator values for these symbols The calculation of margin requirements for these symbols Synchronization of generated tick sequences for all trading symbols. The Strategy Tester generates and plays a tick sequence for each instrument in accordance with the selected trading mode. At the same time, a new bar for each symbol is opened, regardless of how the bar opened on another symbol. This means that when testing a multi-currency EA, a situation may occur (and often does), when for one instrument a new bar has already opened, and for the other it has not. Thus, in testing, everything happens just like in reality. This authentic simulation of the history in the tester does not cause any problems as long as the quotEvery tickquot and quot1 minute OHLCquot testing modes are used. For these modes, enough ticks are generated for one candlestick, to be able to wait until the synchronization of bars from different symbols takes place. But how do we test multi-currency strategies in the quotOpen prices onlyquot mode, if the synchronization of bars on trading instruments is mandatory In this mode, the EA is called only on one tick, which corresponds to the time of the opening of the bars. We39ll illustrate it on an example: we are testing an EA on the EURUSD, and a new H1 candlestick has been opened on EURUSD. We can easily recognize this fact - while testing in the quotOpen prices onlyquot mode, the NewTick event corresponds to the moment of a bar opening on the tested period. But there is no guarantee that the new candlestick was opened on the USDJPY symbol, which is used in the EA. Under normal circumstances, it is sufficient enough to complete the work of the OnTick() function and to check for the emergence of a new bar on USDJPY at the next tick. But when testing in the quotOpen prices onlyquot mode, there will be no other tick, and so it may seem that this mode is not fit for testing multi-currency EAs. But this is not so - do not forget that the tester in MetaTrader 5 behaves just as it would in real life. You can wait until a new bar is opened on another symbols using the function Sleep() The code of the EA SynchronizeBarsUseSleep. mq5, which shows an example of the synchronization of bars in the quotOpen prices onlyquot mode: ------------------------------------------------------------------ SynchronizeBarsUseSleep. mq5 Copyright 2011, MetaQuotes Software Corp. mql5 ------------------------------------------------------------------ property copyright quotCopyright 2011, MetaQuotes Software Corp. quot property link quotmql5quot property version quot1.00quot --- input parameters input string othersymbol quotUSDJPYquot ------------------------------------------------------------------ Expert initialization function ------------------------------------------------------------------ int OnInit () --- check symbol if (Symbolothersymbol) PrintFormat ( quotYou have to specify the other symbol in input parameters or select other symbol in Strategy Testerquot ) --- forced stop testing return ( INITPARAMETERSINCORRECT ) --- return ( INITSUCCEEDED ) ------------------------------------------------------------------ Expert tick function ------------------------------------------------------------------ void OnTick () --- static variable, used for storage of last bar time static datetime lastbartime0 --- sync flag static bool synchonizedfalse --- if static variable isn39t initialized if (lastbartime0) --- it39s first call, save bar time and exit lastbartime( datetime ) SeriesInfoInteger (Symbol, Period (), SERIESLASTBARDATE ) PrintFormat ( quotThe lastbartime variable is initialized with value squot. TimeToString (lastbartime)) --- get open time of the last bar of chart symbol datetime currtime( datetime ) SeriesInfoInteger ( Symbol (), Period (), SERIESLASTBARDATE ) --- if times aren39t equal if (currtimelastbartime) --- save open bar time to the static variable lastbartimecurrtime --- not synchronized synchonizedfalse --- print message PrintFormat ( quotA new bar has appeared on symbol s at squot, Symbol, TimeToString ( TimeCurrent ())) --- open time of the other symbol39s bar datetime othertime --- loop until the open time of other symbol become equal to currtime while ((currtime(othertime( datetime ) SeriesInfoInteger (othersymbol, Period (), SERIESLASTBARDATE )) ampamp synchonized)) PrintFormat ( quotWaiting 5 seconds..quot ) --- wait 5 seconds and call SeriesInfoInteger(othersymbol, Period(),SERIESLASTBARDATE) Sleep (5000) --- bars are synchronized synchonizedtrue PrintFormat ( quotOpen bar time of the chart symbol s: is squot, Symbol, TimeToString (lastbartime)) PrintFormat ( quotOpen bar time of the symbol s: is squot, othersymbol, TimeToString (othertime)) --- TimeCurrent() is not useful, use TimeTradeServer() Print ( quotThe bars are synchronized at quot. TimeToString ( TimeTradeServer (),TIMESECONDS)) ------------------------------------------------------------------ Notice the last line in the EA, which displays the current time when the fact of synchronization was established: Library name with the extension, in double quotes. A library can have extension dll or ex5. Libraries that require testing are defined automatically. However, if any of libraries is used by a custom indicator, this property is required For each block of parameters, a digital fingerprint in the form of MD5-hash is created, which is sent to the agent. MD5-hash is unique for each set, its volume is many more times smaller than the amount of information on which it is calculated. The agent receives a hash of blocks and compares them with those that it already has. If the fingerprint of the given parameter block is not present in the agent, or the received hash is different from the existing one, the agent requests this block of parameters. This reduces the traffic between the terminal and the agent. After the testing, the agent returns to the terminal all of the results of the run, which are shown in the tabs quotTest Resultsquot and quotOptimization Resultsquot: the received profit, the number of deals, the Sharpe coefficient, the result of the OnTester() function, etc. During optimizing, the terminal hands out testing tasks to the agents in small packages, each package contains several tasks (each task means single testing with a set of input parameters). This reduces the exchange time between the terminal and the agent. The agents never record to the hard disk the EX5-files, obtained from the terminal (EA, indicators, libraries, etc.) for security reasons, so that a computer with a running agent could not use the sent data. All other files, including DLL, are recorded in the sandbox. In remote agents you can not test EAs using DLL. The testing results are added up by the terminal into a special cache of results (the result cache), for a quick access to them when they are needed. For each set of parameters, the terminal searches the result cache for already available results from the previous runs, in order to avoid re-runs. If the result with such a set of parameters is not found, the agent is given the task to conduct the testing. All traffic between the terminal and the agent is encrypted. Ticks are not sent over the network, they are generated on testing agents. Using the Shared Folder of All of the Client Terminals All testing agents are isolated from each other and from the client terminal: each agent has its own folder in which its logs are recorded. In addition, all file operations during the testing of the agent occur in the folder agentnameMQL5Files. However, we can implement the interaction between the local agents and the client terminal through a shared folder for all of the client terminals, if during the file opening you specify the flag FILECOMMON. ------------------------------------------------------------------ Expert initialization function ------------------------------------------------------------------ int OnInit () --- the shared folder for all of the client terminals commonfolder TerminalInfoString ( TERMINALCOMMONDATAPATH ) --- draw out the name of this folder PrintFormat ( quotOpen the file in the shared folder of the client terminals squot. commonfolder) --- open a file in the shared folder (indicated by FILECOMMON flag) handle FileOpen (filename, FILEWRITEFILEREADFILECOMMON) . further actions --- return ( INITSUCCEEDED ) Using DLLs To speed up the optimization we can use not only local, but also remote agents. In this case, there are some limitations for remote agents. First of all, remote agents do not display in their logs the results of the execution of the Print() function, messages about the opening and closing of positions. A minimum of information is displayed in the log to prevent incorrectly written EAs from trashing up the computer, on which the remote agent is working, with messages. A second limitation - the prohibition on the use of DLL when testing EAs. DLL calls are absolutely forbidden on remote agents for security reasons. On local agent, DLL calls in tested EAs are allowed only with the appropriate permission quotAllow import DLLquot. Note: When using 3rd party EAs (scripts, indicators) that require allowed DLL calls, you should be aware of the risks which you assume when allowing this option in the settings of the terminal. Regardless of how the EA will be used - for testing or for running on a chart.


No comments:

Post a Comment