Tipps für unerfahrene Auftraggeber

Dmitriy Skub | 13 Mai, 2016


Einleitung

Eine Volksweisheit, die häufig den unterschiedlichsten Berühmtheiten zugeschrieben wird, lautet: „Nur wer nichts tut, macht keine Fehler.“ Wenn man nicht das Nichtstun selbst für einen Fehler hält, lässt sich diese Behauptung kaum bestreiten. Dagegen ist es absolut möglich, einmal begangene Fehler (eigene ebenso wie die anderer) zu analysieren, um die Anzahl zukünftiger Fehler zu minimieren. Hier wird der Versuch unternommen, mögliche Situationen auszuwerten, die bei der Arbeit mit dem Dienst „Freie Mitarbeit“ entstehen können.

Wir bemühen uns, dabei möglichst objektiv zu sein. Wir nehmen zunächst immer die Perspektive desjenigen ein, der den Auftrag ausführt, nämlich die des Programmierers. Bevor wir uns an konkrete Situationen machen, sei Folgendes klargestellt:

Alle Übereinstimmungen mit bestehenden Klar- und Kurznamen, Zeichnungen sowie anderen Illustrationen sind rein zufällig. Bei allen im Folgenden vorgetragenen Aussagen und statistischen Berechnungen handelt es sich um die persönliche Meinung des Verfassers dieses Artikels, sie erheben keinen Anspruch auf Richtigkeit.


1. Wozu braucht man ihn überhaupt, diesen Dienst „Freie Mitarbeit“?

Ob man den Dienst „Freie Mitarbeit“ in Anspruch nimmt oder nicht, muss jeder selbst entscheiden. Meine Meinung dazu ist klar: Ja. Es folgen einige Gründe dafür. Bei der Betrachtung der wesentlichen Probleme, die sich bei der Interaktion zwischen dem Auftraggeber und dem Auftragnehmer ergeben können, lassen sich die Folgenden besonders hervorheben:

Von den genannten Konfliktsituationen können die letzten drei vollständig beigelegt werden und auch das Problem der undeutlichen Aufgabenstellung lässt sich lösen. Im Wesentlichen besteht die einzige Schwachstelle in der Notwendigkeit der Ausführung einer Reihe zusätzlicher „körperlicher Tätigkeiten“ durch den Auftraggeber bzw. der Auftragnehmer: die Erteilung eines Auftrages, die Anweisung des zu zahlenden Betrages, die Absolvierung der Zwischenschritte usw. Aber das ist meiner Meinung nach ein absolut geringer Preis für den Seelenfrieden und die Gewissheit, dass das Geld nicht verschwendet ist, und die Arbeit erledigt wird.

Sie haben sich also entschieden, den Dienst in Anspruch zu nehmen und die Erstellung oder Überarbeitung eines Indikators, eines Expert-Systems oder eines Skripts in Auftrag zu geben. Jetzt sollten Sie sich zunächst mit folgendem Dokument vertraut machen: Nutzungsbedingungen des Dienstes 'Freie Mitarbeit' Sollten Sie das noch nicht getan haben, ist es jetzt an der Zeit, diese kleine Wissenslücke zu schließen.

Darüber hinaus empfiehlt sich die sorgfältige Lektüre der Artikel: Einen Experten programmieren lassen und das gewünschte Ergebnis erhalten und In MQL5 und MQL4 ein automatisches Handelssystem bestellen, die Ihnen dabei helfen werden, sich für die ernsthafte und professionelle Arbeit zu rüsten, denn Sie sind doch ein ernsthafter Mensch und ein kommender oder bereits aktiver Devisenhändler. Diese Tätigkeit verlangt nämlich ein gewissenhaftes und akribisches Vorgehen.


2. Verbreitete Auftragsarten

Wir versuchen, die verbreitetsten Auftragsarten, bei denen es am häufigsten zu Konfliktsituationen kommt, zu gruppieren. Ohne Anspruch auf Vollständigkeit zu erheben, können die folgenden Auftragsarten aufgezählt werden:


2.1. „Devisenhandel ist doch ganz einfach“

Der Auftraggeber weiß selbst nicht genau, was er will und alles konkret funktionieren soll. In der Regel handelt es sich um einen unbeleckten Neuling im Devisenhandel mit etwas aufgeschnapptem oberflächlichen Wissen und der Überzeugung, dass der Devisenhandel eine ganz einfache Angelegenheit ist. Bei der Betrachtung eines erfolgreichen Diagrammausschnitts mit zwei sich schneidenden gleitenden Durchschnittswerten (МА) und unter Hinzufügung eines zusätzlichen MACD obendrauf (ohne zu wissen, dass es sich dabei um dieselben МА-Linien handelt) kommt dieser Mensch zu dem Schluss, ein Handelssystem gefunden zu haben, das nur noch in Form eines „Experten“ programmiert werden muss, um damit „Kohle zu machen“.

Von einem solchen Auftraggeber erteilte Aufträge sehen in etwa so aus: „Ein unkompliziertes Expert-System“, „ein einfacher Indikator“ und ähnliche Variationen der Begriffe „einfach“ oder „unkompliziert“. Entsprechend fällt auch die angebotene Bezahlung für die Arbeit aus: 10 bis 20 Guthabenpunkte. Weniger lässt der Dienst nicht zu.

Im Verlauf der Kommunikation lässt ein solcher Auftraggeber selten durchblicken, dass er ein Anfänger ist, und bestellt möglicherweise etwas völlig Unsinniges, dem der Preis absolut nicht entspricht. Aus irgendeinem Grund geben sich englischsprachige Auftraggeber eher als Anfänger zu erkennen und fragen hinsichtlich der Funktion ihrer Systeme häufig sogar um Rat.

Der einzige Rat, der hier gegeben werden kann, lautet: Prüfen Sie Ihr System, bevor Sie den Dienst „Freie Mitarbeit“ in Anspruch nehmen, zunächst manuell über einen längeren Zeitraum (mindestens ein Jahr) oder im visuellen Modus des Prüfprogramms unter Verwendung bereits bestehender Expert-Systeme für die Eröffnung/Schließung von Positionen wie den HandelsSIMULATOR 2 oder verwenden Sie besondere Programme für die Überprüfung.


2.2. Im Dickicht der Indikatoren

Ein anderes bei Anfängern anzutreffendes Extrem ist die Verwendung einer Fülle unterschiedlicher Indikatoren, die bisweilen einander ausschließende Signale liefern. Ebenfalls beliebt ist die Kombination mehrerer Indikatoren mit unterschiedlichen Maßstäben (die manchmal um mehrere Ordnungen voneinander abweichen) in einem Indikatorfenster und die Suche nach Signalen für Schnittpunkte zwischen ihnen. Dieser Versuchung erliegen allerdings nicht nur „Devisenhandelsnovizen“.

Alle Versuche, zu erklären, dass das so nicht umzusetzen ist, prallen unter anderem an dem unnachgiebigen Unverständnis sowie abstrakten Verweisen auf irgendeinen Programmierer, der das ganz einfach erledigt hat, ab. Dabei erweist sich das Unverständnis mit einer zu beobachtenden umgekehrten Proportionalität als umso unnachgiebiger, je weniger Zeit die betreffende Person am Bildschirm ihres Ausgabegerätes verbracht hat.

Es folgt ein Beispiel für eine solche Kombination von Indikatoren: Wir nehmen den Indikator RSI mit dem normalisierten Wertebereich von 0 bis 100 und den Indikator ATR mit einem nicht normalisierten Wertebereich (von 0 bis zu einem unbekannten Wert deutlich unter „1“). Wir steigen in BUY ein, wenn die ATR-Linie die RSI-Linie im nächsten Balken von unten nach oben schneidet. In der Abbildung unten (Abb.1) erscheint das entstehende Kaufsignal in Gestalt eines grauen Rechtecks.

Wir kennzeichnen es mit einer senkrechten punktierten Linie und sehen, was weiter passiert.

Abb. 1. Ein Kaufsignal (BUY) liegt vor

Abb. 1. Ein Kaufsignal (BUY) liegt vor

Die nächste Abbildung (Abb. 2) zeigt, dass ein Kaufsignal vorliegt und sogar stärker geworden ist, aber sich irgendwie leicht nach links verlagert hat (die Lage der senkrechten gepunkteten Linie auf der Zeitachse hat sich bei uns nicht verändert). Wir hätten demnach eher einsteigen müssen. Da kann etwas nicht stimmen.

Abb. 2. Das Kaufsignal (BUY) liegt noch immer vor

Abb. 2. Das Kaufsignal (BUY) liegt noch immer vor

Die dritte Abbildung (Abb. 3) ist ernüchternd, unser Signal ist verschwunden, als wäre es nie dagewesen. Das geschieht aufgrund der Besonderheiten der Skalierung (wenn in einem Diagramm mehrere Indikatoren mit unterschiedlichen Wertebereichen abgebildet werden und alle gleichzeitig zu sehen sein müssen).

Abb. 3 Und jetzt ist es weg

Abb. 3. Und jetzt ist es weg


Ebenfalls nicht selten kommt es vor, dass jemand einer Illusion erliegt, wenn er sich die Arbeitsergebnisse eines Indikators in einem älteren Kursverlauf ansieht. Es besteht keine Vorstellung davon, dass viele Indikatoren „ihre Werte“ entsprechend des veränderten Kurses „ebenfalls ändern“ und ihre endgültigen Werte erst nach Schließung mehrerer Diagrammbalken bilden, wenn es in der Realität für die Eröffnung einer Position bereits zu spät sein kann. Das ist es, was als „Überzeichnung“ bezeichnet wird. Das vermutlich anschaulichste Beispiel für einen solchen Indikator ist eine Zickzack-Linie

Unterhaltungen mit so einem Auftraggeber können sich sehr lange hinziehen, je nachdem, wie es um die Geduld beider Seiten bestellt ist, können sie sich bei dem Versuch, eine nicht vorhandene schwarze Katze in einem dunklen Raum zu fangen, in echte psychologische Versuche verwandeln.

Es gibt einen ganz einfachen Rat: Beobachten, wie sich die Indikatoren in einer dynamischen Umgebung verhalten. Verschwinden die Signale bei einer Änderung des Diagrammmaßstabes entlang der Zeit- und/oder der Kursachse? Verändert sich das Aussehen der Kurve oder des Histogramms des Indikators auf den vorhergehenden Balken bei einer Kursänderung? Das ist im visuellen Modus des Prüfprogramms leicht erledigt, wenn Sie zuvor Ihre Auswahl an Indikatoren auf das Diagramm angelegt haben. Sie können hierzu jedes Expert-System verwenden, beispielsweise eines aus dem Lieferumfang der MetaTrader-Instanz für Ihr Ausgabegerät (Terminal).


2.3. Manuelle Automatisierung eines Handelssystems

Dabei handelt es sich um eine der kompliziertesten Varianten. Jemand kann noch so lange und erfolgreich gehandelt haben, bei dem Versuch, sein System in Form eines Algorithmus zu formalisieren, gerät er in eine Sackgasse. Entweder beginnt er jeden einzelnen Balken des Diagramms unter Konkretisierung der Kurs- und Indikatorwerte zu beschreiben. Was deshalb geschieht, weil beim Handeln Intuition im Spiel ist, das heißt, Handelsinformationen werden unbemerkt im Unterbewusstsein verarbeitet, und nur das Endergebnis kommt zum Vorschein. Wie dieses Ergebnis zustande kommt, weiß niemand so genau.

Wenn die Formalisierung des Systems misslingt, besteht die beste Möglichkeit in der schrittweisen Automatisierung des Handels. Jedes Handelssystem besteht aus einigen Standardelementen (der Eröffnung/Schließung von Positionen/Aufträgen, der Risikoüberwachung, der Positionspflege usw.). Untergliedern Sie Ihre Arbeit in Schritte und bearbeiten Sie jeden einzeln. Schritt für Schritt gelangen zu einer nahezu vollständigen Automatisierung des Handels.

Die zweite Möglichkeit ist der sofortige Verzicht auf ein automatisches Handelssystem und stattdessen die Erstellung eines halbautomatischen. Das kann in etwa wie folgt aussehen: Die Entscheidung, wo und wann eine Position eröffnet wird, trifft der Händler, den Rest erledigt das Expert-System. Oder es wird ein Zeit- und/oder Kursbereich vorgegeben, in dem der Eintritt erfolgt, wenn bestimmte Bedingungen erfüllt sind, die das Expert-System dann weiter beobachtet und ggf. in dem vorgegebenen Bereich eine Position eröffnet.

Somit werden hier zwei Herangehensweisen optimal genutzt. Die Erste besteht darin, gleich mit der Entwicklung eines halbautomatischen Systems zu beginnen, das den Großteil der routinemäßigen Handelsoperationen ausführt. Die zweite Herangehensweise ist die Aufgliederung der Arbeit in mehrere Einzelschritte. Jeder davon stellt eine eigenständige Leistung dar, die in die Erstellung der endgültigen Fassung des Expert-Systems eingeht. Auch eine Kombination der beiden vorgestellten Ansätze wäre möglich.


2.4. Ein Expert-System, das Kaffee macht

Bisweilen gehen Aufträge ein, in deren Aufgabenstellung der kleinste Teil aus unmittelbar auf den Handel bezogenen Funktionen besteht. Den Hauptteil machen Aufgaben aus wie die Überwachung des Zustandes des Rechners, des Netzes sowie der Versand von Kurznachrichten und E-Mails, die Überwachung aller möglichen und noch so geringfügigen Störungen und Veränderungen in der das Expert-System umgebenden Welt. Und dazu noch akustische (am besten stimmliche) Benachrichtigungen an den Besitzer.

Wenn der Wille aller Beteiligten groß genug ist, ist nichts unmöglich. Nur wenn es um die Bezahlung der Umsetzung all dieser Funktionen geht, ist es mit dem Willen des Auftraggebers in der Regel nicht mehr weit her. Aber ist das alles im wahren Leben eines echten Expert-Systems denn überhaupt nötig? Wohl eher nicht. Vollständig autonom wird ein solches Expert-System ohnehin nicht können, da es beispielsweise so etwas wie nicht behebbare Fehler gibt, etwa wenn die Stromversorgung des Rechners für längere Zeit ausfällt.

Deshalb müssen die Funktionen eines Expert-Systems auf ein vernünftiges Maß beschränkt werden. Dadurch erhöht sich, abgesehen davon, dass es seine Erstellung preiswerter macht, auch die Zuverlässigkeit seiner Arbeit. Es gilt: Je weniger Funktionen, desto weniger Fehler!


2.5. Tu‘ was auch immer, nur tu‘ was

Der erste Teil dieses bekannten Spruchs: Geh‘ wohin auch immer, nur geh‘!“ ergibt sich beim Auftraggeber wie beim Auftragnehmer meist am Ende der Arbeit. Aufgrund der mangelnden Durchdachtheit des Handelssystems selbst kommen dem Auftraggeber im Verlauf der Entwicklung des Expert-Systems (oder Indikators) plötzlich Änderungen, Ergänzungen oder Auslassungen bezüglich der Aufgabenstellung in den Sinn.

Wenn die Änderungen aus Sicht der Programmierung nicht allzu aufwendig sind, sind sie meiner Ansicht nach vollkommen legitim. Irgendeine Kleinigkeit kann immer mal vergessen oder übersehen worden sein. Allerdings kommt es häufig zu Änderungen, die der Auftraggeber für nicht so beträchtlich hält, die jedoch die Überarbeitung eines wesentlichen Teils des gesamten Systems erforderlich machen. Und was noch wichtiger ist, diese Änderungen können eine Änderung der gesamten Programmlogik bedingen. Eines der verbreitetsten Beispiele dafür ist die Änderung der Positionseröffnung von „Bestensauftrag“ in „offener Auftrag“ (Pending Order) oder umgekehrt.

Da gibt es nur einen Rat: Die Aufgabenstellung muss sowohl für den Auftragnehmer wie für den Auftraggeber (auch wenn das merkwürdig klingen mag) absolut klar sein. Manchmal kann die Ausarbeitung der Aufgabenstellung mehr Zeit in Anspruch nehmen als die Arbeit selbst. Ich denke, das ist ok, denn die Aufgabenstellung ist schließlich Teil der Arbeit.


3. Wie sieht sie aus, die ideale Aufgabenstellung?

Wenn es um den Aufbau der Aufgabenstellung für irgendein abstraktes Entwicklungsvorhaben geht, könnte die ideale Aufgabenstellung etwa so aussehen:

3.1. Die Arbeitsumgebung

Für was für ein Ausgabegerät (mit einer Instanz von MetaTrader 4 oder MetaTrader 5) soll die Entwicklung erfolgen? Das Wichtigste wird in der Aufgabenstellung sowie in der Betreffzeile zu dem jeweiligen Auftrag gerne vergessen. Diese Angabe muss deshalb in der Betreffzeile erfolgen, weil nicht alle Entwickler MQL5 beherrschen, oder das Studium von MQL4 übersprungen und gleich mit MQL5 begonnen haben.

3.2. Der Einsatzort der Entwicklung (welcher Devisenhändler / welches Maklerbüro)

Den sollte man hauptsächlich bei der Entwicklung von Expert-Systemen (oder Skripten) kennen. Es sind verschiedene Nuancen möglich: bei der Auftragsabwicklung, den kleinsten/größten Posten, der nächtlichen Übertragung von Positionen, der Anzahl der Nachkommastellen in den Notierungen, der Kontowährung, dem Durchlauf und der Notwendigkeit der Verarbeitung von Notierungen an den Wochenenden, dem Status der Gewinnspanne (fest oder fließend), dem Einsatzbeginn bei Eröffnung eines neuen Balkens oder bei Kursänderungen usw.

Am besten ist es, wenn der Auftraggeber bei seinem Devisenhändler/Maklerbüro ein Demokonto mit der mutmaßlichen Kontowährung eröffnet und es dem Entwickler zur Verfügung stellt. Das ist deshalb erforderlich, weil selbst die Eröffnung eines Demokontos bei einigen Devisenhändlern (etwa Oanda) nicht möglich ist, ohne sich auf der entsprechenden Webseite anzumelden, ein Antragsformular auszufüllen usw. Helfen Sie dem Entwickler, Zeit zu sparen. Möglicherweise kann er sie für Probeläufe und zum Überprüfen seiner Arbeit noch brauchen.

3.3. Die geplante Verwendung der Entwicklung für ein Handelskonto oder lediglich zu Testzwecken / mit einem Demokonto

Das ist ein wirklich ausschlaggebender Unterschied. Während es zu Testzwecken in erster Linie auf die Arbeitsgeschwindigkeit ankommt (davon hängt die zur Optimierung benötigte Zeit ab), zählen bei der Verwendung für ein Handelskonto vor allem die Fehlerbehebung und die Wiederherstellung des korrekten Zustandes des Expert-Systems bei Verbindungsstörungen, Systemneustarts u. ä. unterschiedlichster Art. Dabei kann die Geschwindigkeit der Überprüfung des Expert-Systems für ein Handelskonto um ein Mehr-, wenn nicht um ein Vielfaches herabgesetzt werden. Noch einmal, das hat erhebliche Auswirkungen auf den Wert der Entwicklung in die eine oder andere Richtung.

Hier sollte man sich zunächst eine Frage beantworten: „Brauche ich wirklich ein Expert-System für ein Handelskonto?“ Wenn es sich um eine experimentelle Entwicklung handelt, deren Algorithmus noch nicht abschließend festgelegt ist, sondern noch verändert und überarbeitet wird, dann macht es überhaupt keinen Sinn es für ein Handelskonto zu bestellen. Zudem ist das eher kontraproduktiv, da es die Optimierung erheblich verlangsamen kann. Nach der abschließenden Fertigstellung des Algorithmus kann eine Nachbearbeitung für das Handelskonto in Auftrag gegeben werden. Das dürfte nicht allzu teuer sein.

3.4. Die Beschreibung des Arbeitsalgorithmus

Es wäre überdies wünschenswert, eine vorläufige Aufstellung der externen Parameter unter Angabe der gewünschten Bezeichnungen und voreingestellten Werte beizufügen (sofern solche verwendet werden sollen). All das beschleunigt die routinemäßigen Programmierarbeiten merklich und beugt überflüssigen Rückfragen und Präzisierungen beim Auftraggeber vor.

3.5. Die gewünschte Art der Bildschirmanzeige

Das muss präzisiert werden, weil nicht alles, was der Auftraggeber möchte, auf dem Bildschirm angezeigt werden kann. Und es ist besser, das bei der Vereinbarung der Aufgabenstellung zu klären, statt später. Wenn vorgeschlagen wird, dass bei der Arbeit des Expert-Systems oder Indikators etwas abgebildet werden soll, wäre es wünschenswert, ein Muster sowie die gewünschte Hintergrundfarbe (schwarz, hell, weiß oder eine andere) für die Darstellung dieser Arbeit anzugeben.

Wenn zur Veranschaulichung des Arbeitsalgorithmus Illustrationen benötigt werden, müssen diese beigebracht werden. Abbildungen mit den entsprechenden Kommentaren können einen Algorithmus wesentlich einfacher und anschaulicher darstellen als seitenlange Texte.

Eine sachkundig ausgefertigte Aufgabenstellung ist zweifelsohne die „halbe Miete“ für die eine erfolgreiche Entwicklung und das Erreichen des erwarteten Ziels. Man sollte sich also Zeit für die sorgfältige Auflistung aller Punkte in der Aufgabenstellung nehmen. Das wird dich bei der Entwicklung auszahlen.

3.6. Sonstiges

Hier werden für gewöhnlich allgemeine Bedingungen und Vorgaben aufgeführt. Dabei kann es sich beispielsweise um die Aufforderung zur Herausgabe des Quelltexts (Programmcodes) nach Abschluss der letzten Arbeitsphase, ausführliche Kommentare im Quelltext, Gewährleistungsfristen und weitere Vorgaben handeln.


4. Etwas zum Thema Fehlersuche und Überprüfung

In diesem Stadium wird die Übereinstimmung der von dem Indikator oder Expert-System tatsächlich ausgeführten Funktionen mit denen aus der Aufstellung in der Aufgabenstellung überprüft. Bekanntlich lautet eines von Murphys Gesetzen für die Programmierung: Jedes Programm hat mindestens einen Fehler. Dazu gibt es ein Korollar, das besagt, dass jeder entdeckte und behobene Fehler allenfalls der vorletzte ist. Das ist natürlich nur ein Scherz, aber bei komplexen Programmen (sowie Expert-Systemen und Indikatoren) kommt dieses „Gesetz“ der Wahrheit recht nah.

Davon ausgehend ist eine weitere Schlussfolgerung möglich: Man sollte einem Programmierer keine böse Absicht oder Inkompetenz unterstellen, wenn auch nach dem Probelauf bzw. der Abnahmeprüfung der Arbeit noch ein oder mehrere Fehler auftreten. Meiner Ansicht nach wird die Qualität der Arbeit des Entwicklers in erster Linie durch dessen Geschick bei der Behebung der während der Arbeit entdeckten Fehler bestimmt.

Ich bin des Weiteren davon überzeugt, dass zur Überprüfung komplexer Entwicklungen, in denen ein Algorithmus mit mehreren logischen Bedingungen und Verzweigungen umgesetzt wird, eine schrittweise Entwicklung/Überprüfung optimal ist. Die Aufgabe wird in mehrere logisch eigenständige Teile untergliedert und von dem Entwickler gemeinsam mit dem Auftraggeber schrittweise umgesetzt/geprüft. Im letzten Stadium werden das Zusammenspiel mit allen bereits geprüften Teilen sowie die Funktion des Ganzen überprüft.

Die Vorstellungen von Komplexität bzw. Einfachheit sind natürlich subjektiv und hängen ganz wesentlich von der Erfahrung des Entwicklers sowie der Kenntnis aller Einzelheiten der Arbeit durch den Auftraggeber ab. Die im Lieferumfang der Programminstanzen von MetaTrader 4 und MetaTrader 5 für Ausgabegeräte (Terminals) enthaltenen Prüfverfahren und -methoden sind dergestalt vielfältig, dass manche Auftraggeber die Möglichkeit der Ausführung eines Expert-Systems auf der Grundlage älterer Kursverlaufsdaten in dem Prüfprogramm gar nicht erwarten (oder sie, wie es mir geschehen ist, schlicht vergessen). Das Wichtigste ist allerdings, dass das Prüfprogramm über einen visuellen Prüfmodus verfügt.

Er ist eines der leistungsfähigsten und benutzerfreundlichsten Prüfverfahren, bei dem ein Expert-System oder Indikator dank der beschleunigten Erfassung der älteren Kursnotierungen in wenigen Minuten geprüft werden kann, wobei die Arbeitsergebnisse jeweils in der Form getätigter Abschlüsse und der entsprechenden Informationen auf dem Bildschirm sichtbar gemacht werden. Dabei kann die Geschwindigkeit der Erfassung der Notierungen verlangsamt und sogar zeitweise ausgesetzt werden, um die Analyse aller Einzelheiten der Arbeit an einem konkreten Abschluss zu ermöglichen.

Nach der Überprüfung in dem Prüfprogramm kann man sich endgültig von der Funktionstüchtigkeit des Expert-Systems überzeugen, indem man es auf einem Demokonto ausführt. Für gewöhnlich reicht ein halber Arbeitstag für eine vollständige Überprüfung anhand eines Demokontos aus. Natürlich nur, wenn nicht allzu große Zeiträume (von einer Woche oder mehr) verwendet werden.


5. Beschreibung der ermittelten Fehler

Über die optimale Art der Beschreibung eines von dem Auftraggeber gefundenen Fehlers möchte ich gesondert reden. Wie man einen Fehler auf gar keinen Fall beschreiben sollte, wäre in etwa so: „Ihr Expert-System funktioniert nicht, es hätte viele Positionen eröffnen sollen und passiert ist nichts!“

Dem Entwickler bleibt nichts weiter, als zu raten, was in dem Ausgabegerät (Terminal) des Auftraggebers geschehen ist, welches Kürzel, welcher Zeitraum und welche Einstellungen usw. gewählt wurden.

Nach meinem Dafürhalten lässt sich ein gefundener Fehler/Mangel am besten mithilfe grafischer Abbildungen darstellen. Die MetaTrader 4- und MetaTrader 5-Instanzen für Ausgabegeräte ermöglichen die Speicherung von Diagrammen als Bilddateien, in MT4 in den Formaten GIF und in МТ5 zusätzlich im Format PNG. Letzteres ist den anderen vorzuziehen, da es die Bildschärfe vollständig erhält.

Die Bildschärfe ist zur exakten Beurteilung der Lage der Linien, Balken und Zahlenwerte in dem gespeicherten Diagramm überaus wichtig.

In МТ4 sieht das in etwa so aus wie unten abgebildet (Abb. 4). Sie müssen dazu das gewünschte Diagramm in der Programminstanz auf dem Ausgabegerät mit der rechten Maustaste anklicken, dann öffnet sich ein Menü.

Abb. 4. Speichern des Diagramms in einer Bilddatei

Abb. 4. Speichern des Diagramms in einer Bilddatei


In МetaТrader 5 läuft es genauso, es wird derselbe Menübefehl „Als Bild speichern“ (Save as a picture) gewählt, lediglich die Auswahl der Befehle ist etwas anders.

Nach der Auswahl des Menübefehls öffnet sich ein weiteres Dialogfenster zur Einstellung der Auflösung und des zu speichernden Bildbereichs. Das zeigt die folgende Abbildung:

Abb. 5. Einstellungen des gespeicherten Bildes

Abb. 5. Einstellungen des gespeicherten Bildes


Um nur eine Abbildung des Fensters mit dem Diagramm zu speichern, muss die Möglichkeit „Aktives Diagramm (im Istzustand)“ (Active chart [as is]) ausgewählt werden. Bei Auswahl der Möglichkeit „Aktiver Arbeitsbereich“ (Active work area) wird eine Aufnahme des gesamten Bildschirminhalts gespeichert, was manchmal nützlich sein kann, wenn mehrere Diagramme gleichzeitig angezeigt werden sollen.

Die Auflösung des aktiven Diagramms zu ändern, ist nicht empfehlenswert, da die Schärfe des gespeicherten Bildes davon in Mitleidenschaft gezogen werden könnte.

Das Bild kann auch mithilfe der Tastaturbefehle Alt+PrtScr oder nur PrtScr gespeichert werden, diese legen eine grafische Abbildung des aktuellen Fensters oder des gesamten Bildschirms in der Zwischenablage an, von wo aus sie in jedes Bildbearbeitungsprogramm geladen werden kann.

Anschließend kann die resultierende Bilddatei in dem jeweiligen Bildbearbeitungsprogramm geöffnet und bearbeitet werden (falls erforderlich), z. B. können an den entsprechenden Stellen erläuternde Texte zu den vermeintlichen Fehlern eingefügt werden. Für die Bildbearbeitung ist das im Lieferumfang von Windows enthaltene Programm Paint das einfachste Mittel. Das ist übrigens reine Geschmacks- und Gewohnheitssache.


6. Verborgene „Fallstricke“ in der Aufgabenstellung

In der Regel entstehen sie aus unterschiedlichen Gründen: aus mangelnder Kenntnis aller Feinheiten des Zustandekommens von Börsen- oder Devisenkursen, Nichtbeachtung der Besonderheiten der Skalierung entlang der Zeit- und Kursachsen usw. Ob der Entwickler bei Durchsicht der Aufgabestellung auf diese Punkte achtet oder sich für einen formalen Ansatz entscheidet, hängt hauptsächlich von seiner Qualifikation und seinen Kenntnissen des Börsenhandels ab. Und natürlich von seiner Aufrichtigkeit.

Um es in der figurativen Sprache der Volkskunst zu sagen, betrachtet der Auftraggeber beim Verfassen der Aufgabenstellung häufig eher das Verhalten des „sphärischen Pferdes im Vakuum“ als den tatsächlichen Devisen- oder Finanzmarkt und idealisiert somit das Verhalten der Kursfolge bis zum Äußersten.

6.1. Die Unstetigkeit der Kursänderung

Schauen wir ein praktisches Beispiel an. In der Aufgabenstellung heißt es etwa wie folgt: „wenn der Kurs einen durch einen externen Parameter bestimmten Wert erreicht, ist eine Kaufposition zu eröffnen.“ Möglicherweise gibt es hier noch einige Fragen, etwa nach dem Preis oder dem vorgegebenen Wert, dann schreibt man einfach eine Bedingung für die Auslösung, und das wär‘s auch schon.

Die einzige „Kleinigkeit“, die hierbei aus dem Blickfeld gerät, ist der Umstand, dass sich der Kurs unstetig (von Punkt zu Punkt) durch das Diagramm „bewegt“ und nicht stetig. Selbst wenn wir in der Programminstanz auf dem Ausgabegerät (Terminal) die Auswahlmöglichkeit Diagramm als unterbrochene Linie anzeigen (Show chart as a broken line) einschalten und diese Linie auf dem Bildschirm sehen, macht das die Kursbewegung nicht zu einer stetigen. Gleichwie besteht der tatsächliche Kursverlauf aus unstetigen Punkten.

Dies kann mithilfe der grafischen Abbildung eines Kursänderungsdiagramms veranschaulicht werden (grob skizziert).

Abb. 6. Unstetige Kursänderung

Abb. 6. Unstetige Kursänderung

Durch die waagerechte durchgezogene Linie wird der vorgegebene Kurswert markiert, die roten und blauen Punkte dagegen die tatsächlichen Werte, die der Kurs einnimmt. Bei aufmerksamer Betrachtung des Diagramms zeigt sich, dass der Kurs den vorgegebenen Grenzwert eigentlich nie erreicht. Das bedeutet, dass die Bedingung in der Logik der Aufgabenstellung nie erfüllt war.

Hier gilt es, eine wichtige Anmerkung zu machen: Alle Kursvergleiche sind mit der Genauigkeit von einem Punkt ausgeführt werden. Wenn die Kursnotierung beispielsweise fünf Nachkommastellen umfasst, entspricht ein Punkt 0,00001, mit eben dieser Genauigkeit sind auch die Kursvergleiche auszuführen. Zudem ist zu berücksichtigen, dass es Finanzinstrumente (etwa Mini-Futures) gibt, deren Kursänderung eine Stetigkeit von mehr als einem Punkt aufweist.

Somit war, auch wenn wir sehen, dass der Kurs die vorgegebene Grenze irgendwie erreicht zu haben scheint, die in der Aufgabenstellung vorgegebene Bedingung streng genommen nicht ein einziges Mal erfüllt. Um die der Aufgabenstellung zugrundeliegende Idealvorstellung vom Kurs mit der Realität in Übereinstimmung zu bringen, müssen wir Folgendes tun: die vorhandene Grenze um zwei weitere Grenzlinien ergänzen, eine obere und eine untere. In der Abbildung 6 sind sie gepunktet dargestellt. Die Größe des Bereiches zwischen diesen Grenzlinien hängt von dem jeweiligen Handelssystem ab. In der Mehrzahl der Fälle reicht das Zwei- bis Dreifache des durchschnittlichen Streubereichs (Spreads).

Dann werden alle in den Bereich zwischen den gepunkteten Linien fallenden Punkte betrachtet, als hätten sie den vorgegebenen Wert erreicht. In der Abbildung oben sind sie grün umkringelt.

Kommen wir zurück zu unserer Aufgabenstellung, die wir wie folgt ändern: „wenn der Kurs einen durch einen externen Parameter bestimmten Wert plus/minus Delta erreicht, ist eine Kaufposition zu eröffnen.“ Jetzt ist es viel besser.

Ein weiterer Aspekt ist damit verbunden, dass die Verbindung zu dem Server des Börsenmaklers jederzeit unterbrechen werden könnte. Bis die Verbindung wiederhergestellt ist, könnte der Kurs sich beliebig weit nach oben oder unten von der vorgegebenen Grenze entfernt haben. In der Abbildung ist dieser Bereich (die unterbrochene Verbindung zu dem Server des Börsenmaklers) durch ein rosafarbenes Rechteck gekennzeichnet. Offenbar sollte in der Aufgabenstellung auch eine solche Situation vorgesehen werden.

Also überarbeiten wir unsere Aufgabenstellung ein weiteres Mal: wenn der vorhergehende Kurswert unter dem durch den externen Parameter bestimmten Wert minus Delta liegt, der aktuelle jedoch innerhalb der Grenzen des durch den externen Parameter bestimmten Wertes plus/minus Delta, und der zeitliche Abstand zwischen ihnen den vorgegebenen nicht übersteigt, so ist eine Kaufposition zu eröffnen. Jetzt ist alles korrekt.

6.2. Die pünktliche Auslösung zu einem vorgegebenen Zeitpunkt

In einer Aufgabenstellung heißt es: „zu einem von einem externen Parameter festgelegten Zeitpunkt sind in dem jeweils vorgegebenen Abstand zum Kurs zwei offene Aufträge (pending orders) zu platzieren, einer zum Kauf und einer zum Verkauf. Hier müssen wir zwischen zwei Programminstanzen unterscheiden, MT4 und MT5. Während in MetaTrader 5 der Einsatz einer Taktung mit der kleinstmöglichen Stetigkeit von einer Sekunde sowie eine Zeiterfassung mit derselben Genauigkeit möglich sind, ist in MetaTrader 4 eine derartige Zeitgabefunktion nicht vorgesehen.

Deshalb wird in MT4 für die Zeiterfassung üblicherweise der Zeitpunkt des Eintretens der Kursänderungen bei dem Kürzel, auf das das Expert-System bzw. der Indikator angewendet wird. Da Kursänderungen (Ticks) unregelmäßig eintreten, und die Zeitabstände zwischen benachbarten Kursänderungen mit bis zu mehreren Sekunden oder gar Minuten bei ruhenden Märkten recht groß sein können, kommt es vor, dass wir die pünktliche Auftragsbearbeitung zu dem vorgegebenen Zeitpunkt nicht gewährleisten können. Ein weiteres Standardverfahren für die Zeiterfassung in MT4 ist die Verwendung eines zyklischen Expert-Systems, das schwer zu entwickeln ist und eine Reihe nachteiliger Aspekte aufweist.

Deshalb empfiehlt es sich, diesen Teil der Aufgabestellung besser wie folgt zu ändern: „zu einem von einem externen Parameter mit der ausgewiesenen Abweichung festgelegten Zeitpunkt sind in dem jeweils vorgegebenen Abstand zum Kurs zwei offene Aufträge (pending orders) zu platzieren, einer zum Kauf und einer zum Verkauf.

6.3. Die Verwendung allgemeingültiger Begriffe

Ein typisches Beispiel: wenn der Markt sich gleichmäßig (flat) bewegt, mach‘ irgendwas, liegt dagegen ein klar erkennbarer Trend vor, tu‘ das! Dabei hat der Auftraggeber die Vorstellung, dass die Programmierung der Ausdrücke Trend bzw. „flat“ so einfach ist, dass weitere Ausführungen sich erübrigen. Das muss ich nicht kommentieren!

Noch ein Beispiel: „beim Extremalwert ist ein offener Auftrag (pending order) zu platzieren.“ Was der Auftraggeber unter einem Extremwert versteht, geht aus der Aufgabestellung natürlich nicht hervor. Wieso, man sieht ihn doch im Diagramm? Der Umstand, dass es für die Suche nach dem Extremwert eine Reihe unterschiedlicher Algorithmen gibt, von denen jeder seine Vor- und Nachteile hat, könnte den Auftraggeber überraschen.

6.4. Die Verwendung umgangssprachlicher Ausdrücke

Hierbei geht es um die Verwendung von Ausdrücken, die in der Alltagssprache klar und verständlich, aber für die Verwendung in einer fachlichen Aufgabenstellung absolut ungeeignet sind. Es folgen einige Beispiele: In einer Aufgabenstellung heißt es etwa: „wenn die Indikatorlinie zwei aufeinanderfolgende Wölbungen geformt hat, wobei die zweite flacher ist als die erste...“ und so fort. Womit die Verwendung von Divergenz beschrieben wäre.

Nach der Lektüre ergeben sich eine Menge Fragen: Was kann für eine Wölbung gehalten werden, in welchem größten/kleinsten Abstand voneinander können diese Wölbungen liegen, um wie viel muss die zweite niedriger sein als die erste usw.

Zudem werden häufig Wörter wie viel/wenig, klein/groß u. ä. verwendet. Man muss allerdings verstehen, dass Programmierung auf Mathematik beruht, und Mathematik erfordert präzise quantitative Definitionen. Ausweglos!


7. Wann sollte die Schiedsstelle angerufen werden?

Zweifelsfrei sollte die Schiedsstelle angerufen werden, bevor die Arbeit abgeschlossen ist, das heißt, bevor der letzte Schritt, die Auslieferung der Arbeit bzw. die Zahlungsabwicklung, getan ist. Andernfalls fehlen die materiellen Zwangsmittel gegenüber dem Auftragnehmer wie dem Auftraggeber. Aber genau die sind unverzichtbar.

Scheinbar kann es nur einen Anlass für die Anrufung der Schiedsstelle geben, das Auftreten von Problemen, die von dem Auftraggeber und dem Auftragnehmer nicht einvernehmlich beigelegt werden können. Etwa, wenn der Auftraggeber aufgrund eines ihm überlassenen Musters davon überzeugt ist, dass die Arbeit unsachgemäß (nicht entsprechend der Aufgabestellung) ausgeführt worden ist, und der Auftragnehmer dem widerspricht.

Eine weitere mögliche Spielart ist das „Verschwinden“ eines der Beteiligten für längere Zeit. Weder auf persönliche Nachrichten noch auf Briefe, E-Mails oder dergleichen wird geantwortet. Wobei das Geld des Auftraggebers auf einem Konto festgelegt die Arbeit aber noch nicht ausgeführt ist. Oder aber die Arbeit ist längst fertig, aber es besteht keine Chance, an das Geld zu kommen. Wie auch immer die konkreten Umstände auch aussehen mögen, die Lage kann und muss irgendwie durch ein Schiedsverfahren geklärt werden.

Es kommt nicht selten vor, dass die Vertragsparteien es eilig haben, sich auf die Aufgabenstellung zu einigen und schnell zur Sache zu kommen. Später zeigt sich dann, dass die Aufgabenstellung in der vorschnell vereinbarten Form unbrauchbar ist und einer Fülle weiterer Einzelheiten sowie Präzisierungen an einigen Stellen bedarf. Möglicherweise muss in der Folge auch der Auftragswert neu nachverhandelt werden. Die Arbeit kann in diesem Stadium nur mithilfe eines Schiedsverfahrens rückabgewickelt werden. Deshalb empfiehlt es sich, nichts zu überstürzen und die Aufgabenstellung lieber einmal zu viel zu lesen.


Fazit

Ich hoffe, dass dieser Beitrag für unerfahrene Nutzer des Dienstes Freie Mitarbeit von Nutzen war. Es ist anzunehmen, dass hier nicht alle Fragen betrachtet worden sind, aber die ersten Schritte dürften gemacht worden sein. Es bleibt nur zu wünschen, dass wir geduldiger miteinander umgehen und unserer Umwelt mit weniger negativen Gefühlen gegenübertreten, denn die helfen keinem, weder dem Auftraggeber noch dem Auftragnehmer.


Einige der beliebtesten von Auftraggebern gestellten Fragen

1. Warum weigern sich einige Entwickler, via Skype, ICQ, Telefon, E-Mail usw. zu kommunizieren?

Nach meinem Dafürhalten gibt es dafür zwei wesentliche Gründe:

Erstens: Ein einzelner Auftragnehmer kann zahlreiche Auftraggeber haben, sodass ihm kaum noch Zeit für die eigentliche Arbeit bleibt, wenn er mit allen (wenn auch nicht gleichzeitig) online in Verbindung steht. Und der Schein trügt, dass sich per Skype oder ICQ alles schneller klären lässt.

Zweitens: All diesen Möglichkeiten fehlt eine ganz wichtige Funktion, die der Archivierung. Kommt es nämlich zu Meinungsverschiedenheiten und einem Schiedsverfahren, könnte ein Schriftwechsel zu dem strittigen Auftragsgegenstand für beide Seiten als Beweis zu ihren Gunsten oder zuungunsten der jeweils anderen Seite dienen.

2. Warum wird die Programminstanz auf dem Ausgabegerät (Terminal) beim Start des zusammengestellten Expert-Systems/Indikators (mit der Dateierweiterung .ex4 oder .ex5) geschlossen?

Höchstwahrscheinlich ist Ihre Programmfassung im Vergleich zu der bei der abschließenden Zusammenstellung der programmierten Lösung verwendeten veraltet. Die Programminstanz auf dem Ausgabegerät (Terminal) muss auf die jeweils aktuelle Version aktualisiert werden.

3. Was ist, wenn bei der Zusammenstellung der Datei mit dem Expert-System/Indikator ein Fehler der Art „Die Funktion ‚xxxxxx‘ weist keine Referenz auf und wird aus der Datei ‚exp‘ entfernt“ (Function 'xxxxxx' is not referenced and will be removed from exp-file) auftritt?

Hier liegt kein Fehler vor. Die Meldung besagt lediglich, dass die Funktion xxxxxx nicht verwendet (xxxxxx ist der Platzhalter für die tatsächliche Bezeichnung der Funktion) und in der zusammengestellten Datei auch nicht enthalten sein wird. Diese Meldung kann ignoriert werden, auf die Arbeit des Expert-Systems oder Indikators hat das Vorhandensein einer solchen „überflüssigen“ Funktion keinerlei Auswirkungen.


4. Was ist, wenn bei der Zusammenstellung der Datei mit dem Expert-System/Indikator ein Fehler der Art „Die eingebettet Datei ‚xxxxxx‘ kann nicht geöffnet werden“ (can't open "хххххх" include file) auftritt?

Diese Meldung besagt, dass die Datei mit dem Namen хххххх bei der Übertragung der Dateien auf den Rechner entweder gar nicht mitkopiert oder in ein anderes Verzeichnis kopiert worden ist. Für gewöhnlich werden Dateien mit der Erweiterung .mqh in dem „Include“-Verzeichnis der Programminstanz auf dem Ausgabegerät abgelegt.


5. Warum werden bei der Arbeit des Expert-Systems die Stellen nicht markiert, an denen Positionen bei Erreichen der TakeProfit-/StopLoss-Grenzen geschlossen wurden?

Diese Möglichkeit besteht nur bei der Überprüfung des Expert-Systems in dem Strategieprüfprogramm. Für die Arbeit mit einem Handels- oder Demokonto ist sie nicht vorhanden. Interessante Abschlüsse können mit gedrückter Maustaste aus dem Kursverlauf in ein Diagramm gezogen werden, wo dann die durch eine gepunktete Linie verbundenen Markierungen für die Eröffnung und Schließung einer Position wie schon bei der Überprüfung in dem Strategieprüfprogramm angezeigt werden.


6. Warum wurde keine Position eröffnet (kein Auftrag erteilt), obwohl in dem Verlaufsdiagramm alle Voraussetzungen für einen Markteintritt gegeben sind?

Höchstwahrscheinlich haben wir es mit dem Effekt der Überzeichnung eines der Indikatoren zu tun, deren Werte in dem Expert-System verwendet werden. Die Bedingungen (Indikatorwerte), die zum Zeitpunkt des mutmaßlichen Markteintritts vorgelegen haben, entsprachen dem Fehlen eines Signals für die Eröffnung der Position. Danach haben sich die Indikatorwerte über einige Balken hinweg verändert und ihre endgültige Gestalt angenommen, wie wir sie im Kursverlauf sehen. Das kann mithilfe des Prüfprogramms im visuellen Modus leicht überprüft werden.


7. Wie kann die Arbeit im Stadium der Vorführung des Prototypen/Pilotmodells abgebrochen werden?

Ein Abbruch ist nur mittels Anrufung der Schiedsstelle möglich.


Zur Lektüre empfohlene Links

  1. Nutzungsbedingungen des Dienstes 'Freie Mitarbeit'
  2. Einen Experten programmieren lassen und das gewünschte Ergebnis erhalten
  3. In MQL5 und MQL4 ein automatisches Handelssystem bestellen