So formulieren Sie das Pflichtenheft eines Auftrages für einen Handelsroboter

23 August 2018, 10:08
MetaQuotes Software Corp.
0
252

Inhaltsverzeichnis

Voraussetzungen, um einen Handelsroboter in Auftrag zugeben

Voraussetzungen für das Inauftraggeben eines Handelsroboters Ein Algorithmus ist eine Abfolge von Aktionen, die als Reaktion auf bestimmte Ereignisse ausgeführt werden müssen. Zum Beispiel ist die häufigste Aufgabe im Algo-Handel die Identifikation des Ereignisses "NewBar" (neuer Balken). Wenn das Ereignis eintritt, überprüft der Roboter die Entstehung von Handelssignalen und reagiert entsprechend.

Bevor Sie sich entscheiden, einen Handelsroboter selber zu programmieren oder in Auftrag zu geben, müssen Sie ein Handelssystem mit klaren Regeln formulieren, auf deren Grundlage günstige Momente für die Durchführung von Handelsoperationen definiert werden. Die Entwicklung eines jeden Handelssystems, auch des komplexesten, beginnt mit den grundlegenden Dingen, wie der Definition von Handelssignalen für Kauf und Verkauf. Außerdem können Sie verschiedene Optionen für das Verwalten und dem Schließen von Positionen hinzufügen.

Sie brauchen keine langjährige Erfahrung in der Arbeit mit dem Handelsterminal, um eine Handelsstrategie zu entwickeln. Sie können unter Hunderten von bewährten Ideen wählen, die im Internet verfügbar sind. Auch wenn Sie sich über Ihre Programmierkenntnisse nicht sicher sind, ist dies kein Hindernis. Der Freelance-Dienst hilft Ihnen, einen geeigneten Entwickler zu finden.

Nachfolgend finden Sie empfohlene Artikel, die Sie lesen sollten, bevor Sie mit den Algo-Handelstechniken fortfahren:

Warum ist es wichtig, ein gut vorbereitetes Pflichtenheft zu haben?

Wenn Sie einen Handelsroboter bestellen oder entwickeln, müssen Sie seine Anforderungen formulieren: Aufgaben, die der Roboter ausführen soll, Bedingungen, unter denen er arbeiten soll, Reaktion auf Vorfälle und Notsituationen, die erforderlichen Kontrollmethoden etc. Handelsroboter sind Programme, die strikt der zugrunde liegenden Logik folgen sollten. Um den Algorithmus der Aktionen zu programmieren, sollten Sie seine detaillierte Beschreibung vorbereiten.

Die Beschreibung einer Handelsstrategie erfolgt in Form eines sogenannten Pflichtenheftes. Je mehr Details Sie angeben, desto weniger Missverständnisse entstehen zwischen Ihnen (dem Kunden) und dem Programmierer (dem Auftragsentwickler).

Der wichtige Teil des Pflichtenhefts für einen Expert Advisor ist die Darstellung klarer, formaler Handelsregeln. Auch wenn Sie keinen EA bestellen, sondern selbst einen entwickeln wollen, sollten Sie mit der Definition dieser Regeln beginnen. Erstellen Sie das Pflichtenheft und vergessen Sie nicht, auch die Tests und die Optimierung des EA zu erwähnen. Fügen Sie Hypothesen hinzu, mit denen Sie die Qualität und Stabilität Ihrer Handelsstrategie überprüfen, Kriterien für die Auswahl der optimalen Parameter beschreiben und erklären, warum Sie diese für wichtig halten.

Tragen Sie alle EA-Entwicklungsstufen in das Pflichtenheft ein - das macht die Algorithmus-Idee für den Entwickler klar und hilft Ihnen, die Details Wochen, Monate oder sogar Jahre später abzurufen. Der Algo-Handel ist kein Hobby, sondern ein gründlicher Forschungspfad, der in allen Phasen dokumentiert werden muss. Ein Tagebuch zur Entwicklung eines Handelssystems ist sehr nützlich, wenn Sie eine neue Idee testen wollen.

Das Beispiel eines Pflichtenhefts

Hier ist das Beispiel eines Pflichtenhefts für die Entwicklung des Expert Advisors MACD Sample, der im MetaTrader 5 Standardpaket enthalten ist.

1. Die Idee des Handelssystems ist wie folgt : Positionen werden eröffnet, wenn sich die Haupt- und Signallinie des MACD in der aktuellen Trendrichtung schneiden.

2. Der Trend wird aus dem Exponentiellen Gleitenden Durchschnitt mit der angegebenen Periode (InpMATrendPeriod) ermittelt. Ist der aktuelle EMA-Wert größer als der vorherige, wird ein Aufwärtstrend angenommen (ema_current > ema_previous), ist er kleiner als der vorherige, ein Abwärtstrend (ema_current < ema_previous).

3. Handelssignale:

  • Kaufsignal: Die Hauptlinie des MACD kreuzt die Signalleitung nach oben (macd_current>signal_current && macd_previous<signal_previous).
  • Verkaufssignal: Die Hauptlinie des MACD kreuzt die Signalleitung nach unten (macd_current<signal_current && macd_previous>signal_previous). Die folgende Abbildung zeigt die Fälle für Kaufen und Verkaufen.


4. Positionen werden bei entgegengesetzten Signalen geschlossen: Kaufpositionen werden bei einem Verkaufssignal geschlossen, und Verkaufspositionen bei einem Kaufsignal.

5. Positionen werden zum Marktpreis eröffnet, wenn ein neuer Balken erscheint. Der Expert Advisor soll mit Eröffnungspreisen getestet werden, so dass es nicht notwendig ist, Funktionen zum Deaktivieren von Operationen innerhalb des Balkens hinzuzufügen.

6. Zusätzliche Filter zum Öffnen einer Position:

Der Absolutwert der Hauptlinie des MACD wird verwendet, um schwache Signale herauszufiltern: das Signal wird nur bestätigt, wenn dieser Wert größer ist als open_level (in Points). Die Bedingungen für die Bestätigung des Signals sind wie folgt:

  • Bestätigung eines Kaufsignals: Abs(macd_current)>open_level
  • Bestätigung eines Verkaufssignals: macd_current>open_level

7. Zusätzliche Filter zum Schließen einer Position:

Der Absolutwert der Hauptlinie des MACD wird auch zur Bestätigung der Positionsschließung verwendet: das Signal wird bestätigt, wenn dieser Wert größer ist als close_level (in Points). Die Bedingungen für das Schließen des Signals sind wie folgt:

  • Bestätigung zum Schließen von Kaufpositionen - macd_current>close_level
  • Bestätigung zum Schließen von Verkaufspositionen - Abs(macd_current)>close_level

8. Schließen durch Take-Profit - während der Positionseröffnung wird ein Take-Profit in einem festen Abstand zum Eröffnungspreis, angegeben in Points, gesetzt. Der Wert wird im Eingabeparameter InpTakeProfit festgelegt.

9. Positionsverwaltung

TrailngStop wird zum Schutz des Gewinns verwendet. Stop-Loss wird gesetzt, wenn der Gewinn in Points den im Parameter InpTrailingStop angegebenen Wert überschreitet. Wenn sich der Kurs weiter in Gewinnrichtung bewegt, sollte der Stop-Loss im angegebenen Abstand nachgezogen werden. Stop-Loss kann nicht in die Verlustrichtung bewegt werden, d.h. der Stop-Loss Wert kann nicht erhöht werden. Wenn keine der Schutzaufträge (Take-Profit oder Stop-Loss) ausgelöst wird, sollte die Position durch ein entgegengesetztes Signal geschlossen werden. Es gibt keine weiteren Methoden Positionen zu schließen.


Was steht in einem Pflichtenheft?

Handelsidee

Beschreiben Sie den allgemeinen Grundgedanken im ersten Teil des Pflichtenheftes. Beispiel: "Nähert sich der Preis zweimal dem Widerstandsniveau und prallt von diesem zurück, ist es wahrscheinlich, dass er das nächste Mal den Widerstand bricht." Hier können Sie ein Chart mit den Widerstands-/Unterstützungslinien, Indikatoren und Erläuterungen hinzufügen. Genaue Zahlen oder Berechnungsalgorithmen sind in der Ideenbeschreibung nicht erforderlich. In diesem Beispiel brauchen Sie also nicht zu erklären, wie Sie später bestimmen wollen:

  • die Widerstandsebene,
  • den Level-Ausbruch,
  • den Begriff "ist wahrscheinlich".

Eine gewisse Abstraktion in der Anfangsphase hilft, sich auf die Idee und nicht auf technische Details zu konzentrieren. Auf diese Weise können Sie mehrere Modifikationen Ihrer Handelsstrategie generieren, indem Sie Teile der Strategie, Indikatoren und Filter ersetzen oder kombinieren. Mit der gemeinsamen Grundidee verwenden Sie verschiedene Eingabeparameter für Ihren Handelsroboter.

Als nächstes müssen Sie alle in der Ideenbeschreibung enthaltenen Begriffe und Konzepte beschreiben. Wenn der Trend für Ihre Strategie wichtig ist, definieren Sie klar, welcher Indikator zur Bestimmung der Trendrichtung und -stärke verwendet werden soll. Die numerischen Eigenschaften dieser Definitionen bilden die Grundlage der Eingabeparameter des Expert Advisors, die im Strategy Tester optimiert werden können. Der erste Teil des Pflichtenheftes ist also "Die Handelsidee".

Begriffe und Definitionen

Es wird empfohlen, in das Pflichtenheft einen eigenen Abschnitt zur Erläuterung verwendeter Begriffe und Definitionen anzulegen. Erklären Sie die Begriffe in separaten Abschnitten. Verwenden Sie Fettschrift, um die Schlüsselkonzepte Ihrer Handelsstrategie hervorzuheben. Gegebenenfalls können Sie ein Bild hinzufügen. Eingabeparameter des gewünschten EA können kursiv geschrieben werden.

Handelssignale

Dies ist der wichtigste Abschnitt eins Pflichtenhefts. Es liefert die Beschreibung der Konditionen, Marktzustände und Indikatorwerte, unter denen ein Kaufgeschäft durchgeführt werden soll. Um jede Bedingung zu beschreiben, die für die Erzeugung eines Kaufsignals erforderlich ist, wählen Sie den numerischen Parameter, der die Entstehung eines Signals beeinflusst. Dies kann z.B. das Glättungsverfahren und die Periodenlänge eines gleitenden Durchschnitts sein. Diese wichtigen Parameter werden als Eingabeparameter Ihres Expert Advisors verwendet.

Geben Sie eine separate Beschreibung der Verkaufsbedingungen an, auch wenn diese dem Kauf entgegengesetzt sind. Dies könnten bestimmte Eigenschaften sein, die der Programmierer falsch interpretieren könnte. Beispielsweise kann Ihre Kaufbedingung auf "Wert > 0" gesetzt werden. Achten Sie darauf, eine genaue Bedingung für den Verkauf anzugeben, z.B. "Wert < 0" oder "Wert <= 0".

Zusätzliche Bedingungen und Filter werden häufig zur Bestätigung oder Aufhebung von Handelssignalen verwendet. Verwenden Sie Screenshots für verschiedene Marktsituationen und einer visuellen Erklärung von Indikatoren und Einstellungen. In Zukunft kann eine solche Visualisierung Ihnen helfen, Situationen zu analysieren, in denen Ihr EA ein scheinbar offensichtliches Signal ignoriert oder einen Auftrag zu einem ungünstigen Zeitpunkt durchführt.

Screenshots und Flussdiagramme

Sie können jedes freie Programm zur Erstellung von Screenshots und Flussdiagrammen verwenden. Tipps zur Auswahl und Verwendung von Programmen finden Sie im Artikel Wie man eine Anforderungsspezifikation bei der Bestellung eines Indikators erstellt. Außerdem gibt der Artikel Empfehlungen, wie man einen Indikator mit Pfeilen in Auftrag gibt, der so Kauf- und Verkaufssignale erzeugt. Ein solcher Indikator, der getrennt vom Expert Advisor läuft, erleichtert die Überprüfung und Überwachung Ihres Handelsroboters sowohl im Echtzeitbetrieb als auch bei visuellen Tests.

Die Lebensdauer von Signale/Aufträge/Positionen

Der zweite wichtige Teil einer Handelsstrategie ist das Verlassen einer offenen Position und das Löschen von Pending-Orders. Handelssignale können auch nach einiger Zeit oder unter bestimmten Umständen gelöscht werden. Daher müssen Sie Bedingungen beschreiben, um eine Kauf-/Verkaufsposition zu schließen, eine Pending-Order zu löschen oder ein Signal zu stornieren.

Verwaltung von offenen Positionen und Pending-Orders

Wenn Ihre Handelsstrategie das Schließen durch Stop-Loss und Take-Profit beinhaltet, beschreiben Sie den Berechnungsalgorithmus. Optional können Sie den Mechanismus eines Trailing-Stops für eine flexible Anpassung dieser Preise fordern. In diesem Fall müssen Sie die Bedingungen und Algorithmen für den Trailing-Stop beschreiben. Die SL/TP-Modifikation kann bei der Eröffnung eines neuen Balkens oder bei jedem Tick durchgeführt werden. Geben Sie im Pflichtenheft die gewünschte Option an. Auch die Optionen von 'NewTick' (jeder Tick) oder 'NewBar' (nur Eröffnung eines Balkens) beeinflussen das Testen der Strategie. Stellen Sie sicher, dass Sie den Artikel Testen von Strategien mit echten Ticks gelesen haben.

Wie komme ich zu einem Pflichtenheft, wenn ich es nicht formulieren kann?

Ein schlecht ausgearbeitetes Pflichtenheft oder dessen Fehlen deutet oft darauf hin, dass die Regeln des Handelssystems nicht formuliert wurden. Also, was der Kunde ein Handelssystem nennt, ist eigentlich nur eine ungefähre Idee. Alle Nuancen und das Fehlen notwendiger logischer Beschreibungen werden während des Entwicklungsprozesses aufgedeckt. Der Entwickler muss sich über mögliche Optionen Gedanken machen, die vom Kunden nicht zur Verfügung gestellt wurden.

Der Entwickler könnte in diesem Fall einen Handelsroboter auf eigenes Risiko programmieren. Aber Sie werden wahrscheinlich viel Zeit verlieren, um alle möglichen Themen zu diskutieren. Weicht das Verhalten des Roboters aufgrund fehlender Beschreibung von den Erwartungen des Kunden ab, kann ein solcher Auftrag zur Schlichtungsstelle geschickt werden. Kunden werfen dem Entwickler oft eine falsche Programmierung des Roboters vor. Eine Schlichtung basiert jedoch immer auf dem Pflichtenheft. Gemäß den Regeln für Freelance wird jegliche andere Korrespondenz bei Streitigkeiten nicht berücksichtigt:

Während des Schlichtungsverfahrens ist die Grundlage für die Entscheidungsfindung ausschließlich das Pflichtenheft.

Manchmal kann es vorkommen, dass ein Kunde klare Handelsregeln hat, aber aus bestimmten Gründen nicht in der Lage ist, ein Pflichtenheft zu formulieren. Probleme können mit der korrekten Beschreibung, mathematischen Formeln, neuronalen Netzwerken oder Maschinenprogrammierung und anderen Aspekten auftreten. In diesem Fall kann die Erstellung des Pflichtenheftes gefordert werden. Dies kann in den Bereichen "Programmierberatung" oder "Sonstiges" des Freelance-Dienstes erfolgen.

Wählen Sie eine dieser Kategorien, erstellen Sie einen Auftrag mit dem Namen "Erstellen einer Anforderungsspezifikation für einen Handelsroboterauftrag" und geben Sie die Anfangskosten der Arbeit an. Ein erfahrener Entwickler von Handelssystemen wird Ihnen helfen, Ihre Strategie-Regeln in einer klaren und leicht verständlichen Form zu beschreiben. Verwenden Sie Screenshots, um die Einstellungen Ihrer Handelssignale basierend auf den von Ihnen verwendeten Charts, Indikatoren und grafischen Objekten anzuzeigen.

Der Programmierer wird versuchen, Ihr Handelssystem zu verstehen und Ihnen helfen, eine Beschreibung des Handelsalgorithmus zu erstellen. Wenn Sie keine Konzepte formulieren können (z.B. "Momentum" oder "Abprallen vom Preis"), kann der Programmierer aufgrund seiner Erfahrung fertige Ideen vorschlagen. In der Regel kann jede Marktsituation logisch (und dann programmierbar) durch ein einfaches Modell mit variablen Parametern beschrieben werden. Eine solche Variation kann durch einen bestimmten Parameter ausgedrückt werden, den Sie später in Ihrem Expert Advisor optimieren können.

Perfekte Muster gibt es nicht, denn der Markt wiederholt sich nie. Ähnliche Situationen finden sich jedoch immer wieder in der Geschichte. Gemeinsam sollten Sie ein fertiges Pflichtenheft schreiben können, mit dem Sie dann einen Handelsroboter in Auftrag geben können.

Nutzungsbedingungen

Häufig enthalten Handelssysteme eine Reihe von Schlüsselbegriffen oder Begriffen, die den Marktzustand oder das Preisverhalten beschreiben. Auch wenn Sie der Meinung sind, dass Sie in dem Pflichtenheft allgemein anerkannte und einfache Konzepte verwenden, sollten Sie diese besser klar beschreiben. Fügen Sie pro Begriff einen Beschreibungsabsatz hinzu.

Zum Beispiel existiert, nach Bill Williams, ein Aufwärtstrend dann, wenn alle drei Linien des Alligators in der folgenden Reihenfolge von unten nach oben erscheinen: Blau, Rot, Grün.


Eine weitere klassische Definition eines Aufwärtstrends wurde von Larry Williams vorgeschlagen: jeder neue Spitze ist höher als die vorherige und jedes neue Tief ist nicht niedriger als das vorherige.


Sie können zusätzlich Screenshots des Charts in Begriffsbeschreibungen verwenden. Verwenden Sie fette Schriftarten für die Begriffe im Pflichtenheft, um dem Programmierer zu helfen, sie im Text zu finden, wann immer es nötig ist.

Verwenden Sie keine Links zu anderen Ressourcen (wie Websites, Publikationen, Forenthemen usw.) anstelle von Erklärungen. Eine vollständige und detaillierte Erläuterung aller Punkte sollte direkt im Pflichtenheft stehen. Nehmen Sie sich Zeit, alle verwendeten Begriffe zu beschreiben - das spart Zeit bei der Roboterentwicklung.

Wie schreibt man eine Auftragsbeschreibung für den Freelance-Dienst?

Wenn Sie einen Auftrag erteilen wollen, beschreiben Sie das allgemeine Wesen Ihrer Handelsidee, damit potentielle Entwickler verstehen, was Sie brauchen. Geben Sie die Regeln Ihres Handelssystems oder Details zu den Indikatoren in der Auftragsbeschreibung noch nicht preis.

Die Beschreibung könnte so aussehen:

Entwickeln Sie einen Expert Advisor, der Trendwenden handelt. Umkehrsignale werden auf der Grundlage von Mustern von Preisaktionen generiert. Der Trend wird auf Basis von ADX, Alligator und MACD bestimmt, während die Auswahl der Indikatoren in den Eingabeparametern des EA verfügbar sein sollte.

Die allgemeine Idee einer Handelsstrategie

Die allgemeine Idee einer Handelsstrategie Für trendfolgende EAs geben Sie Eröffnungsmethoden an - während eines Rücksetzers, bei einem Ausbruch oder anderen Methoden.

Generell gibt es zwei grundsätzliche Arten von Finanzhandelsstrategien: die Erwartung einer Fortsetzung des Trends oder die wiederkehrende Rückkehr zum Durchschnittswert. Ihre Handelsidee sollte sich auf eine dieser beiden Arten beziehen. Erklären Sie, wie Positionen eröffnet werden sollen: Marktpreis, nach Bestätigung eines Ausbruch/Rücksetzung oder zu einem errechneten Preis.

Beschreibung der Einstellungen vor dem Signal

Einfache Signale können leicht mit Hilfe von Algorithmen beschrieben werden. Beliebte, einfache Muster sind zum Beispiel "Engulfing" und "Pin-Bar". Es ist jedoch praktisch unmöglich, eine profitable Strategie auf der Grundlage dieser einfachen Formationen zu entwickeln. Solche Muster werden zur Bestimmung von Trendwendepunkten verwendet. Die Situation für das Warten auf das Abwärtsmuster des Engulfing ist das Vorhandensein eines Aufwärtstrends.

Daher sollten Sie neben der Beschreibung des Handelssignals auch eine entsprechende Situation im Pflichtenheft beschreiben.

Signalbeschreibung

Ein Kauf- oder Verkaufssignal entsteht, wenn bestimmte Bedingungen erfüllt sind. Beispielsweise erscheint ein klassisches Kaufsignal, wenn der Kurs den gleitenden Durchschnitt nach oben kreuzt. In dieser Signalbeschreibung sollten Sie die folgenden Parameter angeben:

  • Typ des gleitenden Durchschnitts - SMA, EMA, VIDYA etc.
  • Periodenlänge des gleitenden Durchschnitts
  • Zusätzliche Parameter, die machen gleitende Durchschnitte benötigen, wie zum Beispiel der AMA.

Auch der Satz "der Preis kreuzt den gleitenden Durchschnitt nach oben" ist erklärungsbedürftig, weil er nicht so einfach ist, wie es scheint. Ein Signal kann im Moment des Kreuzens entstehen. Alternativ könnten Sie auch warten, bis die Kerze den MA durchbricht und darüber schließt. Dies betrifft sowohl den Code Ihres Expert Advisors als auch den Modus generierte Ticks, der beim Testen verwendet werden soll.

Daher müssen Sie die Begriffe Trend, Level, Breakout, Crossover und ähnliches klar erläutern, d.h. zwischen Operationen mit Ticks, Balken und Schlusskursen wählen. Geben Sie formale Beschreibungen und die numerische Parameter an, die Sie im Strategietester optimieren wollen. Beispielsweise kann die Trendstärke mit dem Indikator ADX gemessen werden, während Ichimoku Kinko Hyo dafür nicht geeignet ist.

Je mehr Bedingungen und Filter Ihr Handelssystem benötigt, desto komplexer wird der Roboter. Komplexe Strategien haben in der Regel auch eine große Anzahl von Eingabeparametern, die bei der Optimierung viele Durchläufe erfordern könnten. Obwohl der Strategietester des MetaTrader 5 eine Beschleunigung der Optimierungszeit durch den Einsatz des genetischen Algorithmus und der MQL5 Cloud Network ermöglicht, wird das Volumen der resultierenden Daten ebenfalls enorm sein.

Daher empfehlen wir, einige Regeln für die Entwicklung und dem Debugging eines EAs zu befolgen.

  • Um das visuelle Testen und Debuggen von Signalen zu ermöglichen, sollte der EA auftauchende Signale als Text oder Objekte auf dem Chart anzeigen. Zusätzlich zum Debuggen mit historischen Daten, können Sie das Entstehen von Signalen auf dem Chart sehen. Manchmal kann es schwierig sein, komplexe Algorithmen zu verstehen. Die visuelle Darstellung von Signalen bietet eine komfortable Möglichkeit, die Eröffnung von Positionen zu überwachen.
  • Eine weitere komfortable Lösung besteht darin, mit der Erstellung eines Indikators zu beginnen, der Kauf-/Verkaufssignale als Pfeile auf dem Chart anzeigt. Dies ist eine komfortablere Lösung, die es Ihnen ermöglicht, beiden Anwendungen einzeln zu debuggen. Lassen Sie den Roboter handeln und den Indikator zeichnen. In diesem Fall enthält der Code des Expert Advisors nur die erforderliche Funktionalität. Außerdem kann es mehr Signale geben als die ausgeführten Geschäfte. Beispielsweise erhält der EA ein Kaufsignal und steigt in den Markt ein. Nach dem Algorithmus werden andere Kaufsignale nicht mehr geprüft. Wenn Sie einen separaten Indikator verwenden, werden alle Kaufsignale angezeigt, unabhängig vom Vorhandensein einer offenen Position.
  • Zusätzlich zu den separaten Beschreibungen der Kauf- und Verkaufssignale wird empfohlen, im Pflichtenheft zu verlangen, diese separat debuggen zu können. Kauf- und Verkaufssignale sind oft miteinander verknüpft, d.h. wenn es eine Kaufposition gibt, werden alle Verkaufssignale ignoriert (es sei denn, Verkaufssignale werden zum Schließen von Kaufpositionen verwendet). Die getrennte Prüfung von Kauf- und Verkaufssignalen ermöglicht es Ihnen, die Richtigkeit der zugrunde liegenden Logik in ihrer reinen Form zu überprüfen.

Außerdem können Sie die Parameter der Strategie getrennt für Kauf und Verkauf optimieren und dann die Algorithmen in einem einzigen Handelsroboter kombinieren. Auf diese Weise wird die Suche nach optimalen Parametern schneller und mit weniger Fehlern durchgeführt. In diesem Fall müssen Sie jedoch zusätzlich für das Erstellen von Indikatoren und Expert Advisors bezahlen. Aber eine gute Handelsidee ist es doch wert, nicht wahr?

Gültigkeitsdauer des Signals

In einigen Handelssystemen wird eine Position nicht sofort nach dem Auftreten eines Signals eröffnet. Ein solches System kann eine Bestätigung durch zusätzliche Signale erfordern. Zum Beispiel, nach dem Ausbruch des Widerstandsniveaus, können Sie warten, bis der Kurs wieder auf das Ausbruchsniveau zurückkehrt, um unter besseren Bedingungen in den Markt einzutreten. Hier sollten Sie den Zeitparameter definieren: wie lange das Signal des Ausbruchsniveau gültig ist. Systeme könnten 5 Balken oder bis zum Ende der Handelssitzung warten, bis das Signal gelöscht wird.

Fügen Sie einen Parameter für die Gültigkeitsdauer hinzu, um zusätzliche Filter zu verwenden, die die Qualität des Handelssystems verbessern können.

Erteilen eines Handelsauftrags und die Positionseröffnung

Sie können zusätzliche Funktionen im Voraus bereitstellen, wenn Sie Funktionen zum Versenden von Handelsaufträgen entwickeln. Zum Beispiel können Sie verschiedene MagicNumbers und Kommentare für weitere Analysen von Handels- und Optimierungsergebnissen verwenden. Sie können eine MagicNumber auf der Basis von Eintrittsstunde und -tag, einer Handelsmusternummer oder anderen Details verwenden, die eine zusätzliche Analyse ermöglichen. So können Sie mehrere Handelsstrategien in einem Expert Advisor implementieren und alle optimieren, um die besten Parameter für Ihren Handelsroboter zu finden. Wenn Sie eine solche Funktionalität anfordern möchten, beschreiben Sie den Berechnungsalgorithmus der MagicNumber für jedes Muster/Einstellung/Signal.

Ein Handelsauftrag wird nicht immer erfolgreich ausgeführt. Es ist notwendig, auf Situationen vorbereitet zu sein, in denen die Position beim ersten Versuch nicht geöffnet oder geschlossen werden kann. Wie sollte der EA mit einer solchen Situation umgehen: Soll er eine Pause machen oder auf einen neuen Tick warten? Wie viele Versuche sind erlaubt? Welche Informationen sollen in die Log-Dateien geschrieben werden? In welchem Format sollen Informationen geschrieben werden? Soll eine Benachrichtigung an einen Händler gesendet werden? Wie oft sollten Nachrichten gesendet werden, um DDoS-ähnliche Angriffe zu vermeiden?

Verwenden Sie Kommentare zu Handelsaufträgen für eine schnelle Analyse der Handelshistorie. Manchmal schreiben Handelsserver spezifische Kommentare zu diesem Feld. Daher kann Ihr Roboter zusätzlich ein eigenes tägliches Protokoll der Handelsvorgänge schreiben.

Wenn Ihre Handelsstrategie schützende Stop-Loss- und Take-Profit verwendet, beschreiben Sie einen Algorithmus für deren Berechnungs- und Platzierungsmethoden. Beispielsweise kann Stop-Loss nur gesetzt werden, nachdem sich der Kurs um eine bestimmte Anzahl von Points in Gewinnrichtung bewegt hat. Wenn SL und TP nach einer erfolgreichen Positionseröffnung gesetzt werden sollen, beschreiben Sie die Vorgehensweise zur Überprüfung der Positionseröffnung - unmittelbar nach dem Senden eines Handelsauftrags oder beim nächsten Tick.

Verwalten von Positionen/Aufträgen

Eine Grundregel des Handels: Gewinne laufen lassen und Verluste begrenzen. In algorithmischer Hinsicht bedeutet dies, dass Sie für jede Position einen schützenden Stop-Loss setzen sollten, ohne potenzielle Gewinne durch Take-Profits zu begrenzen.

Die Größe der Stop-Order kann das Handelsergebnis stark beeinflussen. Häufig versuchen Händler, optimale SL/TP-Distanzen zu finden, um ihre Gewinne zu maximieren. Versuchen Sie, Algorithmen zur Bestimmung der Abstände zu finden, die Marktvolatilität, Trendrichtung und Unterstützungs-/Widerstandsniveaus berücksichtigen.

Sie können bestehende Handelssysteme studieren, um eine geeignete Idee für die SL/TP zu finden. Viele Programmierer haben fertige Bibliotheken, die bei der Erstellung eines Handelsroboters nach Ihrer Idee verwendet werden können.

Beachten und beschreiben Sie die folgenden Punkte im Pflichtenheft:

  • Verwendung von Stop-Loss- und Take-Profit, Berechnung der jeweiligen Abstände;
  • Verwendung von Trailing-Stop, Triggerbedingungen, Berechnung der Schrittweite;
  • Wenn Pending-Orders für Positionseröffnungen verwendet werden, geben Sie an, ob sie nachgezogen werden sollen und beschreiben Sie den entsprechenden Algorithmus;
  • Die Notwendigkeit, den variablen Gewinn/Verlust einer offenen Position zu überwachen, um eine Position bei Erreichen des festgelegten Gewinn/Verlustlevels zu schließen;
  • usw.

Stornierung von Aufträgen und Schließung von Positionen

Eine weitere Methode der Positions- und Auftragsverwaltung basiert auf Zeitdauer und Signalen in Gegenrichtung. Sie können zusätzliche Optionen zum Schließen und Löschen beschreiben, wie z.B.:

  • Basierend auf dem sich ändernden Gewinn bzw. Verlust;
  • Wenn sich der Kurs in der angegebenen Entfernung vom aktuellen Eröffnungslevel der Pending-Order bewegt (was bedeuten kann, dass die Gelegenheit verpasst wurde);
  • Zur angegebenen Zeit;
  • Nach der angegebenen Anzahl von Balken;
  • Nach dem angegebenen Zeitintervall;
  • Bei einem entgegengesetzten Signal;
  • Wenn die günstige Situation bzw. das Muster verschwindet.

Berechnen der Losgröße eines Auftrags

Einige Händler verwenden bereits in der ersten Phase der Robotererstellung Algorithmen zur Berechnung von Losgröße (lot size). Es wird jedoch nicht empfohlen, die Geldmanagement-Algorithmen zur Berechnung der Losgröße in diesem Stadium einzubeziehen, da zusätzliche Eingabeparameter bei der EA-Optimierung zu einer historienbasierten Überanpassung führen können.

Testen Sie besser Ihre erste EA-Version mit einem konstanten Losgröße. Nur mit Hilfe von Historiendaten und mehrmonatigem Realhandel können Sie die Schwächen und Stärken Ihres Algorithmus aufdecken und anschließend Geldmanagementmethoden hinzufügen.

Hier sind einige Ansätze zur Berechnung der Losgröße von Positionen:

  • Konstantes Volumen unabhängig von Gewinn oder Verlust;
  • Volumen in Abhängigkeit von der Größe des Saldos oder des Eigenkapitals;
  • Basierend auf dem erzielten Gewinn/Verlust;
  • Basierend auf den letzten N Positionen (verschiedene Martingal- und Anti-Martingal-Techniken);
  • Abhängig vom Risiko % mit dem angegebenen Stop-Loss;
  • Andere risikobasierte Berechnungen, wie die Methode Vince.

Stellen Sie in jedem Fall sicher, dass Ihr Handelssystem einen Vorteil gegenüber dem Zufallshandel hat, bevor Sie Ihrem Expert Advisor einen Algorithmus für eine dynamische Losgröße hinzufügen. Sonst werden Sie sich nur selber täuschen. Ein verlierendes System kann nicht durch Geldmanagementmethoden in ein profitables verwandelt werden.

Verarbeitung von Handelsfehlern und Umgebungsumständen

Ein Handelsroboter ist ein autonomes Programm, das 24 Stunden am Tag arbeitet. Stellen Sie daher einen Mechanismus zur Verfügung, um seinen Betrieb zu kontrollieren. Ihre Expert Advisor-Aktionen können mit der Funktion Print() in das Expertenjournal geschrieben werden. Generell wird empfohlen, das Entstehen von Signalen, Mustern und Situationen, den aktuellen Marktpreisen und den Parametern einer Handelsanfragen vor dem Senden eines Auftrags zur Ausführung aufzuzeichnen.

Wenn die Ausführung einer Handelsanfrage fehlschlägt, sollten ihre Ergebnisse ebenfalls in die Log-Datei geschrieben werden. Analysieren Sie die Rückgabewerte des Handelsservers, um den Grund für den Fehler zu verstehen und ihn zu beheben. Beschreiben Sie das Folgende im Pflichtenheft:

  • Die Situationen, in denen der EA Nachrichten an das Journal schreiben soll;
  • Welche Parameter in der Nachricht enthalten sein sollen;
  • Gewünschtes Eingabeformat, wie z.B. Angabe von Zeit, Zahlen, Trennzeichen etc.

Detaillierte Protokolle von Handelsaufträgen und Ausführungsergebnissen ermöglichen es Ihnen, Handelsfehler schnell zu erkennen und Ihr Geld zu sparen.

Ein wichtiger Punkt, der von beginnenden Algo-Händlern oft vergessen wird, ist der Neustart des Terminals und der Verlust der Internet- oder Serververbindung. In solchen Fällen können Sie die Möglichkeit der Benachrichtigung über Nachrichten-Funktionen oder E-Mails fordern.

Unterschied zwischen dem Handel nur zu Beginn oder jederzeit während eines Balkens

Jede Preisänderung erzeugt das Ereignis NewTick, wodurch die Funktion OnTick() aufgerufen wird, um den neuen Preis abzuarbeiten. Während der Lebensdauer eines Balkens kommen viele Ticks herein, und das bedeutet, dass der Expert Advisor jedes Mal seine gesamten Berechnungen durchführen wird. Wenn Ihre Strategie nur bei der Eröffnung des Balkens Handelssignale entwickelt, dann müssen Sie zwei Fragen beantworten:

  1. Wie sollen die Handelssignale berechnet werden, sollen die Indikatorwerte und den Zustand der Handelsumgebung nur beim ersten Tick ermittelt werden und die folgenden Ticks werden übersprungen;
  2. Was zu tun ist, wenn die notwendigen Aktionen beim ersten Tick nicht durchgeführt werden konnten.

Lassen Sie uns ein einfaches Beispiel analysieren: ein Signal entsteht durch das Kreuzen zweier gleitender Durchschnitte. Wenn Ihr EA bei jedem Tick ein Signal überprüft, kann es sein, dass das Signal erscheint und dann wieder verschwindet. Dadurch öffnet und schließt der EA die Position mehrmals während eines Balkens. Dies kann zu Problemen beim Online-Handel führen.

Um solche Probleme zu vermeiden, testen Sie den Expert Advisor im Modus "Jeder Tick" oder "Jeder Tick anhand echter Ticks". Wenn viele ähnliche Operationen innerhalb eines Balkens passieren, dann überarbeiten Sie den Code Ihres Roboters. Vergewissern Sie sich, dass ein visueller Test des Expert Advisors und der verwendeten Indikatoren durchgeführt wird, um deren Funktion in verschiedenen Zeitspannen der Historie direkt auf dem Chart zu überprüfen.

Tick/Skalping-Strategien

Wenn Sie ein Anfänger sind, wählen Sie Systeme, die bei der Eröffnung eines neuen Balkens arbeiten. Solche Strategien sind einfacher zu entwickeln und zu debuggen, während Sie nur eine korrekte Behandlung des Ereignisses NewBar bereitstellen müssen. Sie können die Korrektheit des Handels des Expert Advisors bei der Eröffnung des Balkens überprüfen: Testergebnisse im Modus "Nur Eröffnungspreise" müssen mit den Ergebnissen im Modus "Jeder Tick"/"Jeder Tick anhand realer Ticks" übereinstimmen.

Handelssysteme, die innerhalb eines Balkens funktionieren, sind schwieriger. Wir empfehlen den Artikel Wie man eine Handelsstrategie in MetaTrader 5 schnell entwickeln und debuggen kann, der die Beschreibung aller Schritte enthält, die erforderlich sind, um den Code einer Strategie basierend auf der Analyse des kontinuierlichen Tickflusses zu erstellen, zu debuggen und zu optimieren.

Bei der Entwicklung eines Scalping-Roboters ist zu beachten, dass solche Strategien extrem empfindlich auf die Spreizung (spread), Inbetriebnahme, Netzwerkverzögerungen, Historienqualität und Bearbeitungsgeschwindigkeit reagieren. Jede Verschlechterung der Handelsbedingungen kann eine solche Strategie "töten".

Verwechseln Sie nicht Scalping-Strategien, die versuchen, schnell in den Markt einzusteigen und kleine garantierte Gewinne zu erzielen, mit so genannten Pipsing-Strategien. Eine Pipsing-Strategie kann auf ein paar Pips abzielen aber einen Drawdown von Dutzenden und Hunderten von Pips erlauben. Entwickler solcher Systeme glauben, dass sich der Preis eher mehrere Points in Richtung der offenen Position statt 50, 100 oder 300 in die falsche Richtung bewegt. Als Ergebnis der Optimierung können sie beeindruckende Ergebnisse in der Historie erzielen, wobei 90-99% der Positionen gewinnen. Wenn Sie diesen Roboter auf einem realen Konto laufen lassen, kann die Strategie für einige Zeit die erwartete Gewinne zeigen. Aber der Markt kann irgendwann einmal eine scharfe Bewegung machen, und das bisher Verdiente geht komplett verloren, wenn nicht mehr.

Grid, Martingal, Mittelung und die dunkle Seite dieser Techniken

Manchmal versuchen Algo-Händler, die Ergebnisse zu verbessern, indem sie die Anzahl der Aufträge/Positionen in eine Richtung erhöhen und den Losgröße je nach Preisniveau/Drawdown/Verlust manipulieren (technische Lösungen), anstatt die Qualität der Signale zu verbessern (strategische Lösungen).

Ergänzungen in Form von Auftragsraster, Martingal-/Anti-Martingale-Elementen und Verlustpositionsmittelwertbildung erschweren den Code und erhöhen die Möglichkeit eines Programmfehlers. Außerdem erhöhen solche zusätzlichen Parameter das Risiko einer Überpassung. Der Einsatz solcher Methoden erhöht nicht die Stabilität oder Rentabilität eines Handelssystems, sondern kann nur den Zusammenbruch verzögern.

Anstatt solche Tricks zu verwenden, empfehlen wir, einen anderen Weg zu wählen:

  • Erstellen Sie zunächst ein Portfolio verschiedener unkorrelierter Handelssysteme für ein Symbol;
  • dann können Sie nach und nach eine Reihe von Portfolios auf verschiedene Handelsinstrument übertragen.

Ein Portfolio einfacher Handelssysteme wird resistenter gegen Marktveränderungen sein als ein komplexes System mit sehr vielen, optimierbaren Eingabeparametern.

Wichtige Aspekte bei der Auswahl eines Entwicklers

Sie haben sich also entschlossen Ihr Handelssystem in Form eines Expert Advisors zu realisieren: Sie haben einen Auftrag im Bereich Freelance veröffentlicht und Bewerbungen von verschiedenen Entwicklern erhalten. Wie wählt man den optimalen Entwickler in Bezug auf Kosten und Qualität aus?

Ein erfahrener Entwickler wird Ihnen nicht über die Komplexität bereits entwickelter Systeme oder Handelssystemvarianten berichten, sondern Fragen zu Ihrem Pflichtenheft stellen. Mit anderen Worten, er wird nicht versuchen, Sie zu beeindrucken. Profis schätzen die Zeit, deshalb verschwenden sie sie in der Regel nicht mit philosophischen Diskussionen über die Art des Handels oder Schwierigkeiten bei der Programmierung.

Der Entwickler kann neben der Kurzbeschreibung weitere Details anfordern. Ist der Auftrag generell eindeutig, gibt der Programmierer Auskunft über die Auftragskosten und -dauer.

Ein verantwortlicher Entwickler wird Sie auf unklare Punkte in Ihrem Pflichtenheft hinweisen. Wenn Ihr Auftrag nicht detailliert ist, können Sie diese später mit dem Programmierer klären, sowie Beratungsleistungen bezahlen, was den Zeit- und Kostenaufwand des Auftrags erhöht.

Ein guter Programmierer schätzt die Zeit, weshalb er versuchen wird, unklare Punkte zu klären, um dann mit einem klar formulierten und gründlich vorbereiteten Pflichtenheft arbeiten zu können.

Was der Programmierer nicht für Sie tun kann

Es kann vorkommen, dass ein Handelsroboter, der auf Ihrem System basiert, während des Testens Verluste zeigt, obwohl Sie ihn manuell überprüft haben und sich sicher waren, dass die Strategie profitabel sein würde. Der Grund dafür ist in der Regel, dass der Kunde das System nur in einem kurzen Zeitintervall manuell überprüfen konnte. Der Strategietester ermöglicht es, Handelsergebnisse für jedes verfügbare, historische Intervall zu erhalten. Was kann man in diesem Fall tun? Ein Programmierer kann aus einer verlierenden keine profitable Strategie machen, aber er kann einige Ideen zur Verbesserung der Qualität der Positionseröffnungen vorschlagen. Zum Beispiel können Sie einige Trend-, Volumen- oder andere Filter hinzufügen, um falsche Signale zu vermeiden.

Außerdem kann Ihre Strategie besser mit anderen Parametern funktionieren, die besser zu den gegebenen Marktbedingungen passen. Optimieren Sie den EA, um die Abhängigkeit der optimalen Werte vom Jahr, der Volatilität und anderen Faktoren zu untersuchen. Dies wird Ihnen helfen, Schwachstellen oder Einschränkungen Ihres Systems zu erkennen. Aber das bleibt Ihre Aufgabe, denn der Entwickler ist nur der Programmierer des Codes und kein Handelssystemanalytiker.

Der letzte Teil betrifft Programmierfehler. Es ist fast unmöglich, ein Programm ohne Fehler zu entwickeln. Dies können sowohl Codefehler sein, wenn ein falscher Code für einen korrekten Algorithmus geschrieben wird, als auch logische Fehler. In beiden Fällen müssen Sie sie selbst finden.

  • Sie sollten die Rückgabewerte des Handelsservers, sowie die Ausführungsfehler verstehen.
  • Stellen Sie sicher, dass Sie in Ihrem Pflichtenheft die Notwendigkeit angeben, die Ergebnisse jeder wichtigen Operation zu verarbeiten und die Fehlercodes zu protokollieren. Sie können zusätzlich wichtigen Operationen aufzählen: Senden von Handelsanfragen, Berechnung von Stop-Loss und andere Operationen.
  • Solche Meldungen sollten vorbestimmte Makrosubstitutionen verwenden, die Ihnen helfen, den Grund und die genaue Position des falschen Verhaltens zu finden.

Diese drei Regeln helfen Ihnen, die Situation zu analysieren und mit dem Entwickler zu kommunizieren.

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/4368

Die Visualisierung von Optimierungsergebnissen nach dem ausgewählten Kriterium Die Visualisierung von Optimierungsergebnissen nach dem ausgewählten Kriterium

Im Artikel wird die MQL-Anwendung für die Arbeit mit Optimierungsergebnissen weiter entwickelt. Diesmal wird ein Beispiel gezeigt, wenn die Tabelle der besten Ergebnisse bereits nach der Optimierung der Parameter gebildet werden kann, indem man ein anderes Kriterium über das grafische Interface angibt.

Vergleichende Analyse von 10 Handelsstrategien für Seitwärtsbewegungen Vergleichende Analyse von 10 Handelsstrategien für Seitwärtsbewegungen

Der Artikel untersucht die Vor- und Nachteile des Handels in Seitwärtsbewegungen. Die zehn in diesem Artikel entwickelten und getesteten Strategien basieren auf der Verfolgung von Preisbewegungen innerhalb eines Kanals. Jede Strategie ist mit einem Filtermechanismus ausgestattet, der darauf abzielt, falsche Markteintrittssignale zu vermeiden.

Tiefe Neuronale Netzwerke (Teil VII). Ensembles von Neuronalen Netzen: Stacking Tiefe Neuronale Netzwerke (Teil VII). Ensembles von Neuronalen Netzen: Stacking

Wir erstellen weitere Ensembles. Diesmal wird das zuvor mittels Bagging geschaffene Ensemble durch einen trainierbaren Kombinator (Combiner) - ein tiefes neuronales Netzwerk - ergänzt. Ein neuronales Netz kombiniert die 7 besten Ensemble-Ergebnisse nach der Bereinigung (pruning). Der zweite nimmt alle 500 Ausgänge des Ensembles als Input, bereinigt sie und kombiniert sie neu. Die neuronalen Netze werden mit dem keras/TensorFlow-Paket für Python aufgebaut. Die Eigenschaften des Pakets werden kurz erläutert. Es werden Tests durchgeführt und die Klassifizierungsqualität der Ensembles mit Bagging und Stacking verglichen.

Testen von Mustern von Währungspaaren: Praktische Anwendung und echte Handelsperspektiven. Teil IV Testen von Mustern von Währungspaaren: Praktische Anwendung und echte Handelsperspektiven. Teil IV

Dieser Artikel schließt die Serie über den Handel mit Körben von Währungspaaren ab. Diesmal testen wir das verbleibende Muster und diskutieren die Anwendung der gesamten Methode im realen Handel. Markteintritte und -austritte, die Suche nach Mustern und deren Analyse, komplexer Einsatz von kombinierten Indikatoren werden berücksichtigt.