Wie man eine Anforderungsspezifikation bei der Bestellung eines Indikators erstellt

MetaQuotes | 27 März, 2018


Inhaltsverzeichnis


Wie erleichtert algorithmischer Handel das Leben des Händlers?

Alle Händler suchen nach Gesetzmäßigkeiten im Verhalten des Marktes, die es ermöglichen, günstige Gelegenheiten für die Ausführung von Trades zu erkennen. Dabei möchte man Zufälle und den Einfluss äußerer Faktoren wie Gerüchte, Nachrichten, Müdigkeit usw. vom Handel ausschließen.

Als Ergebnis der Beobachtungen von Preischarts entstehen formale Regeln, die es erlauben, Preis- oder Tickcharts objektiv zu analysieren. Um solche Analyse zu erleichtern, werden technische Indikatoren geschrieben.

Der nächste Schritt ist die Erarbeitung von Regeln, die es dem Trader erlauben würden, nach einem System zu handeln, ohne einen einzigen Einstieg zu verpassen, auch wenn es scheint, dass ein konkretes Signal für die Situation nicht passt. Wenn sich Signale eines Handelssystems formal beschreiben lassen, ist es besser, einen Roboter zu nutzen, statt selbst zu handeln.

Roboter sind unerschöpflich, kennen keine Zweifel und laufen 24 Stunden am Tag. Aber nicht jeder kann einen Roboter schreiben. In diesem Fall bleibt nur eine Möglichkeit übrig: ihn bei einem Programmierer zu bestellen. Dafür muss man eine Anforderungsspezifikation ausarbeiten, in welcher Sie Anforderungen an das benötigte Programm - einen Indikator oder Handelsroboter - beschreiben. In diesem Artikel betrachten wir die Fragen, mit welchen der Kunde bei einer Bestellung im Freelance-Service konfrontiert wird.

Ergänzen Sie den Text durch Bilder und Videos

Eine Anforderungsspezifikation muss gut strukturiert sein und alle für das Verständnis notwendigen Informationen beinhalten — Formeln, logische Bedingungen, Codeblöcke und die Beschreibung des Algorithmus.

Alle Probleme unserer Gesellschaft hängen mit Missverständnissen zusammen. Das Bestellen eines Programms im Freelance ist keine Ausnahme. Jeder Entwickler wird Ihnen sagen, dass der aufwendigste Teil bei der Ausführung eines Auftrags ist es, die Frage zu klären, was der Kunde will. Auch wenn beide Parteien dieselbe Sprache sprechen, stellt sich häufig heraus, dass sie einander nicht verstehen. Besonders ärgerlich ist das bei der Annahme der Arbeit festzustellen. Und zwar sowohl für den Kunden, als auch für den Entwickler. Manchmal kommt es auch zu einer Schlichtung.

Und erst nachdem die Schlichtung beantragt wurde, beginnen die Parteien einander zu verstehen. Manch einer könnte glauben, wir denken und drücken unsere Gedanken in Worten aus. In der Wirklichkeit denken wir in Bildern. Deswegen wenn Sie wollen, dass Ihre Anforderungsspezifikationen nicht nur Ihnen sondern auch potentiellen Entwicklern klar sind, machen Sie auch Bilder.

Die Regel ist ganz einfach — machen Sie ein erklärendes Bild für jede Marktsituation, jedes Muster und jede Bedingung. Dabei muss das Bild oder Schema nur das Wichtigste beinhalten und dem Text nicht widersprechen. Entfernen Sie alles Unnötige vom Bild, markieren Sie wichtige Stellen, heben Sie Levels und Muster mit Pfeilen hervor usw.

Einige Kunden schreiben enorm lange Texte und glauben, dass sie alles ausführlich und verständlich beschrieben haben. Aber in der Wirklichkeit ist es kompliziert, einen Fließtext wahrzunehmen. Während der Kunde und der Entwickler einen Begriff oder ein Wort unterschiedlich interpretieren können, besteht solches Problem für ein Bild nicht: ein Pfeil und ein Kreis werden eindeutig als Pfeil und als Kreis wahrgenommen. Für die Erstellung verständlicher Illustrationen brauchen Sie etwa 5-10 Minuten, aber auf diese Weise können Sie nicht nur Ihre Ideen besser vorstellen, sondern auch ein richtig laufendes Programm schneller bekommen.

Und natürlich sollte man Bilder direkt in den Text einfügen und nicht als Datei anhängen. Viele Entwickler werden Ihre Datei einfach nicht herunterladen, und dadurch die Aufgabe falsch verstehen oder diese gar überspringen.

Sehen Sie sich an, wie man den Editor für die Textgestaltung nutzen kann:


Und zu guter Letzt: häufig schreiben Kunden "Alle Details per Skype — das wird schneller und verständlicher sein". Das stimmt nicht! Besser wird es sein, wenn Sie ein Video mit einer ausführlichen Beschreibung aufnehmen, und dies professionell tun — kurz, prägnant und ohne Pausen. Dafür muss man einen Plan für das Video erstellen, und zum Plan - ein Szenario und einen Text, den Sie vorsprechen werden. Versuchen Sie das beim ersten Anlauf zu machen — das gelingt Ihnen definitiv nicht. Das Gleiche wird per Skype passieren. Deswegen bereiten Sie sich vor und nehmen Sie ein gut strukturiertes Video auf. Laden Sie es auf Youtube hoch und fügen Sie den Link in den Text der Anforderungsspezifikationen in Ihrem Auftrag ein.

Und nun zur Sache: schauen wir uns ein paar Beispiele von Anforderungsspezifikationen für die Entwicklung eines Indikators genau an.

Hilfreiche Programme für die Erstellung einer Anforderungsspezifikation

Für eine schnelle Erstellung und Veröffentlichung von Screenshots empfehlen wir das Programm ScreenPresso. Das Programm erlaubt es, einem Screenshot Text, Pfeile, Figuren und visuelle Effekte einfach hinzuzufügen. Das Programm bietet eine Vielzahl von Einstellungen, darüber hinaus erlaubt es, Videos aufzunehmen. Die erstellen Abbildungen können Sie durch das Ziehen oder Kopieren in den Chat im Freelance einfügen.

Wenn Sie mehr Optionen für die Bearbeitung von Screenshots brauchen, können Sie einen anderen grafischen Editor nutzen — PicPick. Beide Programme sind für privaten Gebrauch kostenlos. Sie können sie kombinieren, sie ergänzen einander sehr gut. Natürlich kann man im Internet eine Vielzahl anderer Programme für die Aufnahme von Screenshots mit Bearbeitungsfunktionen finden.

Für die Erstellung von Prototypen für grafische Panels können Sie das Programm Pencil nutzen. Das Programm erlaubt es Ihnen, innerhalb von 5-10 Minuten einen Entwurf des benötigten Interfaces zu erstellen. In diesem Programm kann man auch Ablaufdiagramme für eine visuelle Erklärung komplizierter Algorithmen erstellen. Wenn Sie mehr brauchen, finden Sie mehr Informationen im Netz, z. B. Sechs Programme für die Erstellung von Diagrammen.

Ablaufdiagramme visualisieren perfekt die Programmlogik, in den Diagrammen können Sie bedingte Anweisungen, Schleifen usw. angeben. Wenn Sie gut in Mathe sind, können Sie Formeln und Berechnungen mit Microsoft Excel beschreiben. Darüber hinaus können Sie Grafiken, Diagramme, Panels und Ablaufdiagramme mit SmartArt erstellen. 

Fassen wir kurz zusammen. Egal welches Programm Sie nutzen, um die Idee Ihres Indikators zu beschreiben. Wichtig ist, dass der Entwickler die Idee versteht. Ergänzen Sie den Text durch Abbildungen, Ablaufdiagramme und Grafiken. Bei der Erstellung eines Auftrags im Freelance hilft das dem Kunden und dem Entwickler, einander besser zu verstehen und Zeit zu sparen.

Formulieren der Anforderungsspezifikation als Algorithmus

Jeder Indikator stellt eine Idee dar. Deswegen ist es wichtig, die Idee zuerst zu beschreiben — mit Worten und Bildern, wenn das möglich ist. Wenn die Idee nicht erklärt wurde, ist es schwer zu verstehen, was der Kunde genau will.

Nun kann man mit der Beschreibung des Algorithmus für die Arbeit/Berechnung/Anzeige des Indikators beginnen. Beschreiben Sie Ihre Idee als sequenzielle Aktionen, als Algorithmus. Nur wenn ein Algorithmus vorhanden ist, kann der Entwickler einen Code basierend auf dem Algorithmus schreiben. Wenn es in der Beschreibung Fachbegriffe gibt, definieren Sie sie deutlich, um sicher zu sein, dass beide Parteien diese Termini gleich verstehen.

Wenn möglich, nummerieren Sie die Schritte des Algorithmus in der Reihenfolge, in welcher er später arbeiten wird. Beginnen Sie nicht mit der Beschreibung eines weiteren Teils der Anforderungsspezifikation, bis Sie die Beschreibung eines Blocks/Modus/einer Phase abgeschlossen haben.

Für die Beschreibung von Begriffen passen am Besten Listen, zum Beispiel:

  1. Tages-Handelsspanne — Abstand zwischen dem Tageshoch und Tagestief;
  2. Durchschnittliche Handelsspanne — durchschnittlicher Wert der Tages-Handelsspanne innerhalb von N Tagen;
  3. Flat Range — ein Preisbereich innerhalb des Tages, in welchem sich der Preis horizontal bewegt;
  4. ...

Um die Schritte zu markieren, kann man Ziffern, Listen oder Fettdruck verwenden.

Versuchen Sie die Anforderungsspezifikation als eine Reihenfolge konsequenter Aktionen darzustellen, in welcher das Programm, das Ihr Indikator implementiert, ausgeführt wird. Unten sind einige Beispiele für Anforderungsspezifikationen angeführt.

Beispiele für Anforderungsspezifikationen

Beispiel 1

Es wird ein ZigZag Indikator benötigt, der basierend auf Oszillatoren gezeichnet wird

Die Idee des Indikators

Ich brauche einen ZigZag-Indikator basierend auf Extrema, die mithilfe eines Oszillators ermittelt werden. Dafür passt jeder klassische normalisierte Oszillator, für welchen es den Begriff "Überkaufte/Überverkaufte Zone" gibt. Zuerst lassen wir den Algorithmus basierend auf dem WPR Indikator laufen, danach fügen wir die Möglichkeit hinzu, den ZigZag basierend auf folgenden Indikatoren zu zeichnen:

  • CCI
  • Chaikin
  • RSI
  • Stochastic Oscillator

Algorithmus und Begriffe

Die erste Phase — das Zeichnen des ZigZag-Indikators:

  1. Als überkaufte Zone werden die Kerzen bezeichnet, auf welchen der Indikatorwert Value > Lmax (Lmax=-20) ist.
  2. Als überverkaufte Zone werden die Kerzen bezeichnet, auf welchen der Indikatorwert Value < Lmin (Lmin=-80) ist.
  3. Die Werte Lmax und Lmin werden in den Parametern des Indikators platziert.
  4. Setzen wir einen gelben Punkt in High auf die Kerzen in der überkauften Zone, das sind die H-Punkte.
  5. Setzen wir einen grünen Punkt in Low auf die Kerzen in der überverkauften Zone, das sind die L-Punkte.
  6. Wenn es zwischen zwei H-Punkten mindestens einen L-Punkt gibt, beginnen wir nach einem LL-Punkt im Bereich zwischen ihnen zu suchen — das ist die Kerze mit dem kleinsten Low. Im allgemeinen Fall ist ein LL-Punkt nicht unbedingt ein L-Punkt. Uns interessieren die Kerzen mit dem kleinsten Low.
  7. Wenn es zwischen zwei L-Punkten mindestens einen H-Punkt gibt, beginnen wir nach einem HH-Punkt im Bereich zwischen ihnen zu suchen — die Kerze mit dem maximalen High wird der HH-Punkt sein. Im allgemeinen Fall ist ein HH-Punkt nicht unbedingt ein H-Punkt. Uns interessieren die Kerzen mit dem kleinsten Low.
  8. Verbinden wir die LL- und HH-Punkte miteinander, um den ZigZag-Indikator zu erhalten. Die Standardfarbe ist gelb. Damit ist die erste Phase abgeschlossen.




Die zweite Phase - die Farbe des ZigZags:

  1. Suchen wir nach drei aufeinanderfolgenden HH-Punkten, so dass die folgende Bedingung erfüllt ist: jeder nächste HH-Punkt liegt oberhalb des vorherigen.
  2. Wenn für die zwei zwischen ihnen liegenden LL-Punkte auch die Bedingung erfüllt ist, dass der zweite LL-Punkt oberhalb des ersten liegt, färben wir alle ZigZag-Segmente zwischen den fünf Punkten in Blau.
  3. Wenn nach den fünf ermittelten Extrema des ZigZags noch ein HH- und ein LL-Punkt gefunden werden, die sich jeweils oberhalb des vorherigen HH- und LL-Punkten liegen, färben wir zusätzlich zwei weitere Segmente des ZigZags in Blau.
  4. Setzen wir fort, bis die Bedingung verletzt wird. So heben wir den Aufwärtstrend hervor.
  5. Ähnlich suchen wir nach aufeinanderfolgenden sinkenden LL-Punkten und führen alle Operationen wie in den Punkten 1 - 4 durch. Markieren wir diese Segmente in Rot: so heben wir den Abwärtstrend hervor.



Die dritte Phase - fügen wir die Option hinzu, den benötigten Typ des Oszillators anzugeben, basierend auf welchen der ZigZag gezeichnet wird: CCI, Chaikin, RSI oder Stochastic Oscillator.

  1. Als ersten Parameter fügen wir den Typ hinzu, der über eine Aufzählung gesetzt wird. Der Standardwert ist WPR.
  2. Für jeden Typ fügen wir eigene Parameter Lmax und Lmin mit Standardwerten hinzu.
  3. Die Namen des maximalen und des minimalen Parameters müssen den Indikatornamen beinhalten, wie z. B. WPRmax, CCImax, STOmax usw.

Die vierte Phase — fügen wir ein grafisches Panel hinzu, um die Parameter des Indikators zu steuern.

  1. Es muss Checkboxes mit allen Oszillatoren für einen schnellen Wechsel des Typs auf dem Panel geben.
  2. Das Panel muss durch einen Mausklick minimiert und maximiert werden können.
  3. Das Panel kann über den Chart bewegt werden.
  4. Der Indikator kann über das Panel vom Chart entfernt werden.

Berechnungen: Der Indikator wird sowohl für die Arbeit mit Charts, als auch für Optimierungen verwendet. Deswegen muss der Algorithmus schnell und nicht zeitaufwendig sein.

Die Annahme der Arbeit erfolgt phasenweise — jede Phase muss eine nach der anderen abgeschlossen werden.


Beispiel 2

Es wird ein NRTR-Indikator benötigt, der Benachrichtigungen per E-Mail und ins mobile Terminal sendet

1. Den NRTR Indikator von MQL4 nach MQL5 konvertieren. Der Code befindet sich hier: https://www.mql5.com/de/code/7760

2. Bei der Änderung der Farbe ist eine Push-Benachrichtigung und eine E-Mail über einen Trendwechsel zu senden.

3. Den Parametern Arbeitsstunden hinzufügen, während welcher Benachrichtigungen gesendet werden dürfen — nachts sind Benachrichtigungen nicht nötig. Es muss zwei Parameter geben:

  • StartHour — ab wann man morgens Benachrichtigungen senden kann;
  • EndHour — bis wann man abends Benachrichtigungen senden kann.

4. Parameter hinzufügen, die das Senden von Benachrichtigungen erlauben:

  • SendPush — das Senden von Push-Benachrichtigungen erlauben;
  • SendEmail — das Senden von E-Mails erlauben.

5. Der Text einer Benachrichtigung sieht wie folgt aus:

NRTR auf EURUSD H1 hat sich nach oben umgekehrt. Up=1.23560, Down=1.23300, Brick=260 pips

   wobei:

  • der Name und der Zeitrahmen werden dem Chart entnommen, auf welchem der Indikator gestartet ist;
  • Up — obere Grenze des Kanals;
  • Down — untere Grenze des Kanals;
  • Brick — Kanalbreite in Punkten (Stop bei der Eröffnung einer Position).



6. Eine E-mail und Push-Benachrichtigung werden erst dann gesendet, nach dem die Kerze, die den Kanal durchbrochen hat, vollendet ist.

7. Es ist erlaubt, nur ein Signal pro Balken zu senden.

8 zu sehen. Für die Kontrolle des Indikators auf einem VPS muss man den Text der gesendeten Benachrichtigung auch in die Log-Dateien schreiben.

9. Aus dem Indikator muss man die Werte von 3 Puffern erhalten:

  • Up — obere Grenze;
  • Down — untere Grenze;
  • Trend — Trendrichtung, -1 oder 1.

10. Der Indikator muss in Bezug auf Leistung optimal sein.


Beispiel 3

Es wird ein Indikator benötigt.

Eingabeparameter:
  1. Erstes Währungspaar
  2. Zweites Währungspaar
  3. Berechnetes Paar
  4. Preis für die Berechnung - Bid/Ask

Der Punkt 3 ist kein Eingabeparameter, das ist einfach das Ergebnis der Division der Kursen aus den Punkten 1 und 2, es wird auf den Chart zur Ansicht ausgegeben.

Funktionsprinzip:
Die Idee: wenn man zwei Währungspaare mit der gleichen Kurswährung nimmt (am besten zwei populäre), zum Beispiel EUR/USD und GBP/USD und ihre Kurse durcheinander dividiert, bekommt man als Ergebnis den Kurs von EUR/GBP.



Der Indikator wird in einem separaten Fenster gezeichnet. Die schwarze vertikale Linie stellt den aktuellen Zeitpunkt dar, von welchem zwei Kurven nach links gezeichnet werden:

  • eine - der berechnete Kurs, auf dem Bild in Grün,
  • die andere - der echte Kurs, auf dem Bild in Rot

Die Berechnungen werden bei jedem Tick durchgeführt. Da ein Zeitintervall des Charts des Indikators horizontal viel mehr Platz einnehmen wird, als auf dem Chart selbst, muss man die Zeitintervalle voneinander abgrenzen. Zum Beispiel wenn der Chart die Periode M1 hat, sind jede Minute vertikale Linien im Chart des Indikators zu zeichnen.


Was man in einer Anforderungspezifikation bei der Bestellung eines Indikators angeben kann

Indikatoren basieren auf einer Verarbeitung von Preischarts oder Tick-Sequenzen. Das Ergebnis und das Ziel einer solchen Verarbeitung ist es, ein visuelles Werkzeug für die Durchführung der technischen Analyse zu erhalten. Deswegen muss man bei der Bestellung eines Indikators einige Fragen klären, damit der Entwickler versteht, was Sie genau brauchen.

Zeichnungstyp des Indikators

  1. Linien — der einfachste und klare Charttyp.
  2. Histogramm — wird am häufigsten in Oszillatoren verwendet.
  3. Pfeile und Zeichen — passen gut, um den Zeitpunkt eines Einstiegs/Ausstiegs zu markieren. Manchmal basieren auf ihnen auch Kanäle (NRTR) oder Trailing Stop Systeme.
  4. Bereiche und Kanäle — z. B. Envelopes.
  5. Segmente können als Bestandteil komplizierter Indikatoren für das Einzeichnen von Linien verwendet werden.
  6. Zigzag-Stil, zum Beispiel ein farbiger ZigZag.
  7. Balken und Kerzen für die Anzeige von Charts anderer Symbole oder benutzerdefinierter Kerzen basierend auf den Berechnungen. Zum Beispiel, Heiken-Ashi.
  8. Kombination der aufgelisteten Stile.

Einige Typen von Indikatoren benötigen mehrere Datenreihen (Indikatorpuffer) für das Zeichnen. Jedem Puffer muss man einen Namen geben, damit es später einfacher ist, Indikatorwerte im Datenfenster zu analysieren.

Zeichnungsfarben

Werden beim Zeichnen eine oder mehrere Farben verwendet? Hier gibt es keine Probleme mit dem Verständnis. Aber wenn man eine dynamische Farbänderung je nach aktueller Situation benötigt, ist ein genauer Algorithmus für die Beschreibung der Bedingungen erforderlich.

Wo der Indikator gezeichnet wird

  1. Im Hauptfenster des Charts
  2. Im Unterfenster

Zeitrahmen und Symbole für die Berechnung und Anzeige

  1. Wird der Indikator bei den Berechnungen nur eigenes Paar Symbol/Zeitrahmen verwenden oder wird auf die Daten anderer Symbole und Zeitrahmen zugreifen?
  2. Sollte die Anzeige des Indikators für einige Symbole/Zeitrahmen deaktiviert werden?
  3. Was tun, wenn die Balken des "fremden" Symbols/Zeitrahmens für die Berechnungen nicht ausreichend sind?

Welche Preise, Volumina und Indikatoren für Berechnungen verwendet werden

Klassische Indikatoren arbeiteten immer nur mit Open, High, Low und Close des eigenen Zeitrahmens. Aber in unserer Zeit erlauben die Möglichkeiten der technischen Analyse und die Programmiersprachen MQL5/MQL4 ganz unterschiedliche Datenreihen zu verwenden, einschließlich Volumina und Werte anderer Indikatoren.

  • Wird die Option benötigt, den Preistyp in den Parametern des Indikators anzugeben, nach welchem die Berechnungen durchgeführt werden?
  • Soll der Indikator basierend auf den Daten eines anderen Indikartors arbeiten können? Man kann zum Beispiel einen gleitenden Durchschnitt auf dem RSI-Chart darstellen. Nicht alle Händler wissen von dieser Möglichkeit, wahrscheinlich können Sie sie gebrauchen.
  • Sollen die Levels in den Indikatoren angezeigt/gezeichnet werden, die in einem separaten Fenster erstellt werden? Wie zum Beispiel die Levels 30 und 70 für Stochastic Oscillator.

Wenn die Daten anderer Indikatoren für Berechnungen verwendet werden, ist es empfehlenswert, den Quellcode dieser Indikatoren zur Verfügung zu stellen. Natürlich kann der Entwickler herausfinden, wie man die Werte des anderen Indikators erhält, aber der Quellcode wird ihm helfen besser zu verstehen, was man von ihm erwarten kann.

Eingabeparameter und deren Namen

Stellen Sie dem Entwickler die Liste der Parameter und deren Namen (wie sie im Terminal aussehen werden) zur Verfügung. In der Regel gibt der Programmierer den Eingabevariablen solche Namen, die das Lesen des Codes vereinfachen. Der Händler als Benutzer des Programms braucht aber solchen Namen, die den Sinn und den Zweck der Parameter erklären würden. Im Indikator Chaikin Volatility (CHV) gibt es zum Beispiel die Parameter, die der Händler versteht:

  1. Glättungsperiode — wie viele Werte für die Glättung eines Hilfsarrays verwendet werden.
  2. Die CHV Periode — wie viele Balken für das Erhalten eines Hilfsarrays nach der Chaikin-Methode verwendet werden.
  3. Glättungstyp — welcher Glättungstyp für den Oszillator verwendet wird.

So schreibt der Entwickler im Code:

//--- Aufzählung der Glättungstypen
enum SmoothMethod
  {
   SMA=0,// Einfacher MA
   EMA=1 // EMA 
  };
//--- Eingabeparameter 
input int          InpSmoothPeriod=10;  // Glättungsperiode
input int          InpCHVPeriod=10;     // Periode für die Berechnung von CHV 
input SmoothMethod InpSmoothType=EMA;   // Glättungsmethode

Kommentare nach den Werten werden als Namen im Parameter-Fenster für den Händler ausgegeben:


Berechnungen bei jedem Tick

Bei jeder Preisänderung wird der spezieller Event-Handler Calculate im Indikator gestartet, in welchem alle benötigten Berechnungen durchgeführt werden. Es kann sein, dass es für Ihren Indikator nicht nötig ist, jeden Tick zu verarbeiten, und die Berechnungen beim Erscheinen eines neuen Balkens gestartet werden können.

Wenn man die Berechnungen nur beim Erscheinen eines neuen Balkens durchführt, kann die Geschwindigkeit des Testens des Expert Advisors um das Vielfache erhöht werden. Deswegen überlegen Sie sich das gründlich und beschreiben Sie deutlich diesen Punkt in der Anforderungsspezifikation.

Darüber hinaus kann ein ineffektiver Berechnungsalgorithmus des Indikators zu einem langen Testen des Expert Advisors führen. Bitten Sie den Entwickler Profiling des Codes durchzuführen, um langsame Funktionen zu erkennen und den Code zu beschleunigen. Und natürlich ist die analytische Optimierung des Codes nicht zu vergessen — die Anzahl der Berechnungen kann durch mathematische Transaformationen erheblich reduziert werden. Das trifft für viele Indikatoren zu, welchen die Mittelungsmethoden von Zeitreihen zugrunde liegen.

Neuzeichnen des Indikators

Das Neuzeichnen des Indikators auf der Historie stellt einen der unangenehmsten Fehler bei der Erstellung eines Handelssystems dar. Mit Neuzeichnen ist solches Verhalten des Indikators gemeint, wenn Berechnungen von seinem Startzeitpunkt abhängen. Zum Beispiel, wenn man einen solchen Indikator im Chart EURUSD M5 startet und das Terminal einen Tag lang laufen lässt, und am nächsten Tag das Terminal mit denselben Eingabeparametern auf einem anderen Chart EURUSD M5 startet, stellt sich heraus, dass sich die Werte und das Aussehen der Indikatoren voneinander unterscheiden.

Am häufigsten liegt der Grund dieses Effekts im Algorithmus selbst. In der Regel kann ein erfahrener Entwickler ein solches Verhalten selbst erkennen und den Kunden vor potentiellen Problemen bei der Verwendung eines solchen Indikators im Handel warnen.

Alerts, Push-Benachrichtigungen, E-Mails, Berichte, Screenshots

Wenn Sie brauchen, dass der Indikator Sie zu bestimmten Zeitpunkten über die aktuelle Situation auf dem Markt informiert, kann der Entwickler dem Code das Senden von Push-Benachrichtigungen und E-Mails hinzufügen. Darüber hinaus kann man die Funktionen PlaySound(), Alert() und MessageBox() hinzuzufügen, um die Aufmerksamkeit des Händlers zu erregen. Wenn Sie eine eigene Webseite oder ein Blog haben, könnte SendFTP() für Sie nützlich sein.

Im Artikel Wie man einen Bot für Telegram in MQL5 erstellt von Andrey Voytenko werden auch andere Möglichkeiten für die Automatisierung des manuellen Handels angeführt. Vielleicht gefallen Ihnen einige Ideen aus dem Artikel.

Grafisches Control Panel

Wenn Sie die Verwaltung des Indikators flexibler gestalten wollen, denken Sie an das Hinzufügen eines grafischen Steuerelements. Der Artikel Verarbeitung von Ereignissen in MQL5: Unmittelbare Änderung des Zeitraums für den gleitenden Durchschnitt wurde vor vielen Jahren veröffentlicht, der Artikel beschreibt diese Idee. Seitdem sind die Möglichkeiten der Programmiersprache MQL5 quasi unbegrenzt geworden. Schauen Sie sich Beispiele in den Artikeln Universeller Oszillator mit grafischem Interface und Wie schnell ein Bedienfeld zu einem Indikator und Expert Advisor hinzugefügt werden kann an. Zu empfehlen ist auch die Artikelreihe Grafische Interfaces von Anatoli Kazharski.

Wenn Sie nicht einen einfachen Indikator brauchen, der Linien zeichnet, sondern ein fertiges analytisches Werkzeug, dann erleichtert das hinzugefügte grafische Panel Ihre Arbeit um Vieles. Überlegen Sie sich im Voraus, Reaktion auf welche Ereignisse und welche Funktionen das Panel implementieren muss:

  • Minimieren/Maximieren des Panels mit einem Mausklick in der Ecke;
  • Bewegen des Panels über den Chart;
  • Änderung der Panelgröße;
  • Ereignisse der Maus — rechter/linker Mausklick, Scrollen;
  • Ereignisse der Tastatur — Drücken, Halten und Drücken, Tastenkombinationen;
  • Ereignisse des Timers;
  • benutzerdefinierte Ereignisse, die ein Programm dem anderen sendet usw.

Lesen Sie den Abschnitt Typen der Chartereignisse durch, um alle verfügbaren Möglichkeiten zu entdecken.

Erklärende Screenshots

Bekannt ist das Sprichwort "Ein Bild sagt mehr als tausend Worte". Deswegen wenn Ihr Indikator konkrete Situationen auf eine bestimmte Weise einzeichnen/visualisieren muss, machen Sie verständliche Illustrationen. Wir empfehlen nur das Wichtigste darzustellen, die Bilder müssen klein sein, es hat keinen Sinn, große Screenshots zu machen. Einige hilfreiche Tipps finden Sie im Artikel Tipps für eine effektive Produktpräsentation im Market.

Zum Beispiel, wenn Sie ein Programm für das Erkennen von Mustern veröffentlichen, zeigen Sie einige ermittelten Muster auf dem Chart. Machen Sie schöne große Screenshots und versehen Sie sie mit erklärenden Beschriftungen. 


Platzieren Sie nicht zu viele kleine Details auf einem Screeenshot. Hier ist ein Beispiel dafür, was man nicht tun sollte:


Statt eines Screenshots hätte man zwei/drei machen, alle Muster größer darstellen und den Text lesbar machen müssen. Das betrifft auch Preischarts: versuchen Sie, zu kleine Maßstäbe zu vermeiden, lassen Sie die Nutzer sich Details ansehen. Verwenden Sie keine unkonventionellen Farbschemas (wenn dies nicht nötig ist) sowie geben Sie keinen Text in Kommentaren aus (Nachrichten der Funktion Comment), der den Chart verdeckt. Markieren Sie Kauf- und Verkaufssignale mit üblichen Farben (Blau und Rot). Der unten angeführte Screenshot ist falsch:


Wenn man sich ein bisschen Mühe gibt, kann man daraus eine bessere Variante machen:


Hier wurde ein größeres Maßstab ausgewählt und das Standard-Farbschema "Black & White" verwendet, die störende Beschriftung wurde entfernt. Der Name des Musters wird mit einer anderen Schriftart und Farbe hervorgehoben, die Stellen des Ausbruchs des Dreiecks sind zusätzlich mit einer roten Linie markiert. Die Pfeile des Ausbruchs des Dreiecks sind auch mit den Farben markiert, an die die meisten Händler gewöhnt sind. Ein solcher Screenshot enthält keine überflüssigen Details und stellt die Grundidee dar.

Log-Dateien und Journal für Debugging

Es ist praktisch unmöglich, ein fehlerfreies Programm zu schreiben. Je komplizierter das Programm ist, desto mehr unvorhergesehene Situationen können im Programm entstehen. Deswegen seien Sie bereit, dass das Verhalten des fertigen Indikators sich von dem erwarteten Verhalten abweichen kann. Das kann folgende Gründe haben.

  • Fehler des Programmierers: der Code wurde an einer Stelle schlicht und einfach falsch geschrieben oder ein Punkt der Anforderungsspezifikation wurde nicht implementiert.
  • Eine unvorhergesehene Situation auf dem Chart, für welche Ihre Anforderungsspezifikation keine fertige Lösung enthält. D. h. das Programm funktioniert richtig, aber der Algorithmus beinhaltet keine Schrittfolge zur Verarbeitung einer Situation, und Sie haben das erwartete Ergebnis nicht bekommen. In diesem Fall müssen Sie gemeinsam mit dem Programmierer überlegen, was zu tun ist.
  • Sie haben selbst etwas falsch gemacht: ungültige externe Parameter angegeben, nicht ausreichend historische Daten für das Symbol zur Verfügung gestellt, notwendige Dateien nicht angehängt usw.
  • Sonstiger Grund

Beim Auftreten eines Fehlers muss man die Ursache feststellen. Also, muss man versuchen, alle Details für Untersuchungen einzuholen. In diesem Fall muss man nicht nur die Situation anhand von Screenshots oder in einem Video zeigen, sondern dem Entwickler auch die Log-Dateien des Programms und des Terminals bereitstellen. Deswegen müssen Sie wissen, wo sich die Journale der Plattform befinden, und in der Anforderungsspezifikation festlegen, was genau und in welchem Format das Programm über die Arbeit ausgeben muss.

Darüber hinaus stellen Sie dem Entwickler zusätzliche Informationen bei einer unvorhergesehenen Situation zur Verfügung, wie es im Artikel Wie man einen Expert Advisor bestellt und das gewünschte Ergebnis erhält von Andrey Khatimlianskii beschrieben wurde:

  • Fügen Sie eine SET-Datei mit den Parametern des Programms (Button "Speichern" im Parameter-Fenster des Expert Advisors) bei
  • Geben Sie das verwendete Währungspaar und den Zeitrahmen des Charts an
  • Geben Sie die Adresse des Servers, mit welchem das Terminal verbunden wurde, und den Kontotyp an (Demo, Real, Wettbewerb oder sonstiger)
  • Geben Sie die Terminalversion an (Menü "Hilfe" - "Über das Programm")
  • Wenn die Überprüfung im Tester durchgeführt wurde, geben Sie die Einstellungen des Testers zusätzlich an (Zeitraum, Modellierungsmodus, Handelsmodus, Ersteinzahlung, Hebel)

Deswegen ist es empfehlenswert, diese Daten für den Entwickler in der Anforderungsspezifikation separat anzugeben.

Annahme und Überprüfung des Indikators

Sie können die Arbeit des Indikators nicht nur in Online-Charts, sondern auch im Modus des visuellen Testens im Strategietester überprüfen. Dies erlaubt es, Zeit zu sparen und das Verhalten des Indikators in verschiedenen Marktphasen zu beobachten. Fragen Sie den Entwickler, das Profiling des Codes durchzuführen und die Stellen des Programms genauer zu betrachten, wo es zum größten Zeitverlust kommt. Für Funktionen, die besonders oft aufgerufen werden, oder für welche die Ausführungszeit sehr wichtig sind, kann man dem Code Zähler hinzufügen, die die Anzahl der Aufrufe und die gebrauchte Zeit speichern.

Wenn Sie einen Fehler finden, stellen Sie dem Entwickler alles Notwendige für die Beschreibung und Wiederherstellung der Situation zur Verfügung — Screenshots, Log-Dateien, Daten zum Symbol/Zeitrahmen, Handelskonto. Das hilft, das Problem schneller zu lösen.

Wenn der Indikator andere Indikatoren oder Dateien benötigt, stellen Sie sicher, dass sie sich in den richtigen Ordnern im Dateiverzeichnis Ihres Terminals befinden.

Gedacht, beschrieben, bestellt!

Wir hoffen, dass dieser Artikel für Sie hilfreich war, und dass Sie jetzt wissen, wie man eine klare und verständliche Anforderungsspezifikation erstellt. Es wurde auch versucht, alle Möglichkeiten der MQL Programmiersprache kurz zu zeigen. In dieser Sprache können Indikatoren jeden Schwierigkeitsgrades geschrieben werden.

Wenn Sie noch kein Programm im Freelance bestellt haben, weil Sie nicht wussten, wo anzufangen, nutzen Sie die Ratschläge aus diesem Artikel. Und kontaktieren Sie Programmierer bei der Auswahl eines Entwicklers im Freelance. Erfahrene Programmierer kennen sich in ihrem Fach aus und können Ihnen helfen, komplizierte Momente Ihrer Anforderungsspezifikationen zu formulieren.