Algorithmic Trading Tips 10.

ALGORITHMIC TRADING MIT RENKO CHARTS.

WIE SIE RENKO- UND BAR CHARTS ZU EINER PROFITABLEN HANDELSSTRATEGIE KOMBINIEREN.

Renko Charts sind eine faszinierende Chart-Variante, bei der unwesentliche Kursinformationen herausgefiltert werden. Aus diesem Grund sind sie insbesondere für die Entwicklung von Trendfolgestrategien optimal geeignet. In unserer dreiteiligen Ausgabe zeigen wir Ihnen Schritt für Schritt, wie Sie Bar- und Renko-Charts kombinieren und zu einer vollständigen Strategie zusammenfügen können.

TEIL 1: WIE SIE DIE TRENDRICHTUNG SOWIE HOCHS UND TIEFS BESTIMMEN.

Renko Charts sind eine faszinierende Chart-Variante – simpel im Aufbau und einfach zu interpretieren. Wie man sie auch für ein erfolgreiches Handelssystem nutzen kann, erfahren Sie in dieser dreiteiligen Serie. Das Ziel der vorliegenden Trading Tips Ausgabe ist es, Ihnen Schritt für Schritt die Entwicklung einer kompletten Handelsstrategie vorzustellen und Ihnen so ganz nebenbei auch grundlegende Kenntnisse der Tradesignal Programmiersprache Equilla zu vermitteln. Beginnen wir zunächst mit der Idee zum System. Nehmen wir an, Sie möchten eine klassische, trendfolgende Handelsstrategie entwickeln. Dazu muss zunächst die Trendrichtung bestimmt werden. Zusätzlich sollen die lokalen Hochs und Tiefs die konkreten Einstiegspunkte definieren. Signalisiert die Trenderkennung, dass sich der Markt in einem Aufwärtstrend befindet, wird bei Überschreiten des letzten lokalen Hochs eine Long-Position eröffnet. Die Position soll erst wieder geschlossen werden, wenn das letzte lokale Tief unterschritten wird oder ein Trailing Stop aktiviert wird. Nun stellt sich die Frage, wie Sie Tradesignal diese Regeln beibringen, um anschließend die Profitabilität und Stabilität dieser  Trendfolgestrategie zu testen. Erst dann wird aus einer Idee nämlich auch ein automatisierter Handelsansatz, der einen umfassenden Überblick über Performance sowie Optimierungspotenzial liefert. Um die Strategie zu programmieren, werden zunächst zwei Dinge benötigt:

  • 01. Definition des Trends
  • 02. Definition lokaler Hochs und lokaler Tiefs

 

Der erste Punkt lässt sich schnell erledigen, indem man zwei gleitende Durchschnitte unterschiedlicher Periodenlänge verwendet. Notiert der kürzere über dem längeren gleitenden Durchschnitt und handelt der Markt gleichzeitig über dem kürzeren gleitenden Durchschnitt, so befindet sich der Markt nach klassischer Definition in einem Aufwärtstrend (Abwärtstrend analog). Da anschließend noch eine Überprüfung erfolgen soll, ob der Markt im Aufwärtstrend auch ein neues Hoch erreicht, ist die Güte der Trenderkennung zunächst nicht von Vorrang. Das zweistufige Vorgehen soll die Schwachstellen gegenseitig mindern. Während die Trendbestimmung leicht von der Hand ging, ist die zweite Aufgabe – nämlich lokale Hochs und Tiefs an einem klassischen Bar Chart zu bestimmen – in der Praxis nur schwer umsetzbar. Genau an dieser Stelle kommt der japanische Renko Chart ins Spiel!

RENKO CHARTS FILTERN UNWICHTIGE PREISINFORMATIONEN HERAUS.

Ähnlich zu Point & Figure Charts bilden auch Renko Charts nur die Preisbewegung ab, ohne jedoch Rücksicht auf die zeitliche Entwicklung des Preises zu nehmen. Kurzum: Die Zeitachse ist nicht linear. Dies ist auf die Konstruktionsweise dieser Charts zurückzuführen. Ein Renko Chart besteht aus sogenannten Boxen, die eine bestimmte Preisbewegung repräsentieren, zum Beispiel 50 Punkte beim DAX. Während des Zeitabschnitts, in dem sich der Index auf Schlusskursbasis um weniger als 50 Punkte bewegt, werden keine neuen Boxen eingezeichnet. Um eine Umkehr der Richtung anzuzeigen, muss der Kurs um mehr als eine Box in die Gegenrichtung laufen. Steht der zugrundliegende Markt also aktuell bei 9500, muss dieser zumindest auf 9400 oder tiefer fallen, um ein Reversal herbeizuführen. Mit dieser Vorgehensweise werden unwesentliche Marktbewegungen (Marktrauschen) herausgefiltert.

ABB. 1: DAX INDEX TAGES-CHART ALS CANDLESTICK (OBEN) UND RENKO (UNTEN).

Ein Renko Chart zeigt Trends und Wendepunkte klar an. Dies macht ihn so wertvoll für die Verwendung in einer einfachen Handelsstrategie.

OBJEKTIVE DEFINITION VON LOKALEN HOCHS UND TIEFS.

Mit einer solchen Umkehr der Bewegungsrichtung des Charts wird automatisch auch ein lokales Hoch oder Tief generiert. Mithilfe dieser Systematik lassen sich die Hochs und Tiefs, die für unsere Handelsstrategie benötigt werden, denkbar einfach nutzen:
Ein lokales Hoch liegt demnach vor, wenn der letzte Renko das Ende der steigenden Säule war und der aktuelle Renko der erste fallende ist. Analog dazu verhält sich die Definition eines lokalen Tiefs. Die Abbildung 2 zeigt die Darstellung der lokalen Hoch und Tiefpunkte.

DER MASTER- UND SLAVE-INDIKATOR.

Mit dieser Definition sind wir bereits in der Lage, einen einfachen Indikator zu programmieren, der die Renko-Hochs und -Tiefs am Candlestick- oder Bar Chart anzeigt. Wie man solch einen Indikator schreiben kann, sehen Sie im nachfolgenden Codebeispiel „Renko Master“. Zunächst werden zwei globale Variablen definiert. Sie sollen den Wert des Renko-Hochs und -Tiefs an die  Handelsstrategie übergeben, welche später am Candlestick Chart zum Einsatz kommen wird.

ABB. 2: INDIKATOREN RENKO MASTER UND SLAVE.

Mithilfe der Indikatoren Renko Master (unten) und Slave (oben) werden die lokalen Hoch- und Tiefpunkte aus dem Renko Chart an den Bar Chart übergeben. Durch die Boxgröße werden einerseits kleinere Bewegungen ausgeblendet, andererseits aber auch die Hochs und Tiefs nicht exakt wiedergegeben.

Das lokale Hoch und Tief sind schnell definiert, schließlich muss man hierfür nur eine Richtungsumkehr beschreiben. Da Renko Charts auf Schlusskursen basieren und den Kurs immer auf die Box-Größe runden – somit also nicht die realen Hochs und Tiefs abbilden – wird eine zusätzliche Box als „Sicherheitsabstand“ zum Hoch addiert bzw. vom Tief subtrahiert.

Um die Hochs und Tiefs nun auch am Candlestick Chart anzuzeigen, wird ein weiterer Indikator namens Renko Slave benötigt. Er ist für das Auslesen der Werte aus den eingangs genannten globalen Variablen verantwortlich und deren Darstellung als Punkte im Candlestick Chart zuständig.

CODE 1: Equilla Code für den Indikator „Renko Master“.

// definition of global variables

Variables:​​ renko::hi,​​ renko::lo;

 

// if there is a bearish renko today and there was a bullish renko yesterday, then // yesterdays close (+1 renko) is a local high ​​ 

if​​ close<high​​ and​​ close[1]>low[1]​​ then​​ renko::hi=close[1]+(high-low);

// if there is a bullish renko today and there was a bearish renko yesterday, then // ​​ yesterdays close (-1 renko) is a local low

if​​ close>low​​ and​​ close[1]<high[1]​​ then​​ renko::lo=close[1]-(high-low);

 

CODE 2: Equilla Code für den Indikator „Renko Slave“.

meta:​​ subchart(false);

 

// get the renko local highs and lows and plot them on the barchart

drawsymbol(renko::hi);

drawsymbol(renko::lo);

 

 

 

ANWENDUNG IN DER PRAXIS.

Um das vorgestellte Setup gemäß Abbildung 2 nachzubilden, gehen Sie wie folgt vor:

  • 01. Öffnen Sie einen Chart
  • 02. Fügen Sie dasselbe Instrument als Sub Chart erneut hinzu
  • 03. Stellen Sie einen der beiden Charts auf Renko ein
  • 04. Ziehen Sie den „Renko Master“ auf den Renko Chart
  • 05. Ziehen Sie den „Renko Slave“ auf den Candlestick Chart

 

Mit den hier dargestellten Indikatoren lassen sich die lokalen Hoch- und Tiefpunkte aus dem Renko Chart an den Candlestick Chart übergeben. Damit wäre ein wichtiger Schritt zu unserer Handelsstrategie bereits geschafft.

Im nächsten Teil dieser Serie wird die Strategie um eine Trenderkennung ergänzt, außerdem wird der Chart entsprechend der Strategie farblich gekennzeichnet. Darauf basierend werden im letzten Teil unserer Renko-Serie nur noch die konkreten Befehle für den Ein- und Ausstieg programmiert, womit die Renko Handelsstrategie vollständig wäre.

 

TEIL 2: LONG ODER SHORT? DIE FARBE DES CHARTS SAGT ES IHNEN!

Im ersten Teil dieser Kurzserie zum Thema Renko Trading haben wir vorgestellt, wie unterschiedliche Chart-Typen kombiniert und Informationen von einem Chart in den anderen übertragen werden können. Das Ziel lag darin, die sehr einfach zu beschreibenden lokalen Hoch- und Tiefpunkte aus dem Renko Chart im Bar Chart anzeigen zu lassen.

Im zweiten Teil dieser Serie sollen diese Hoch- und Tiefpunkte sowie zwei gleitende Durchschnitte dazu verwendet werden, den Chart entsprechend unserer Computeranalyse rot oder grün zu färben, um so dem Handelssystem später anzuzeigen, wo es eine Long- oder Short-Position handeln soll.

DIE TRENDERKENNUNG.

Beginnen wir mit der Trenderkennung. Den Ausgangspunkt hierbei bilden zwei einfache gleitende Durchschnitte (GD) unterschiedlicher Periodenlänge. Entsprechend der klassischen Vorgehensweise lassen sich daraus folgende Informationen über den Trend ableiten:

  • 01. Uptrend: Der kurze gleitende Durchschnitt liegt über dem langen GD, gleichzeitig notiert der Markt über dem kurzen GD.
  • 02. Downtrend: Der Markt notiert unter dem kurzen GD. Letzterer liegt gleichzeitig unter dem langen GD.

 

Hierbei handelt es sich um eine sehr primitive Trenderkennung, welche alleine angewandt wohl kaum zum Erfolg führen würde. Sie berücksichtigt weder die Volatilität des Marktes noch das gehandelte Volumen und wird so erfahrungsgemäß gerade in Seitwärtsphasen viele falsche Trendsignale liefern. Um diese Schwachstellen zumindest teilweise und zudem auf elegantem Weg zu kompensieren, soll die endgültige Trenderkennung nicht ausschließlich auf den GDs, sondern auch auf den Hoch- und Tiefpunkten des Renko Charts basieren. Wie bereits im ersten Teil dargelegt, filtern Renko Charts kleine Preisbewegungen und zeigen dadurch nur signifikante Hoch- und Tiefpunkte an. Werden diese jedoch über- oder unterschritten, so ist es schwer vorstellbar, dass es sich auch weiterhin um eine Seitwärtsphase handelt. So filtert der Renko Chart die etwas voreiligen Signale aus der Trenderkennung mit den simplen gleitenden Durchschnitten. Die vollständige Trendbestimmung lautet daher:
Bei einer bullishen Indikation durch die GDs muss auch das letzte lokale Renko-Hoch überschritten werden, damit ein Long-Signal aktiviert wird. Für die Short-Seite gilt analog, dass das letzte Renko-Tief unterschritten werden muss, bevor es tatsächlich zu einem Signal kommt.

DER PROGRAMMCODE.

Doch nun zum Code des Indikators, der diese Informationen in visueller Form direkt auf dem Chart zeigen soll. Er wird zusätzlich zum Renko Slave aus dem ersten Teil der Serie auf den Bar Chart gelegt und färbt diesen anschließend entsprechend der Trendrichtung. Schwarz steht dabei für trendlose Phasen, während grün ein bullishes und rot ein bearishes Marktumfeld signalisiert.

Der Code des Indikators wurde bewusst einfach gehalten. Zunächst erfolgt in der Meta Sektion die Definition, wo der Indikator gezeichnet werden soll. Anschließend werden die Längen der beiden GDs als Input definiert, damit sie zu einem späteren Zeitpunkt automatisch optimiert und an den jeweiligen Markt angepasst werden können. Die Deklaration der benötigten Variablen schließt den Header des Indikators ab.

Nachdem die beiden GDs berechnet und die aktuellen Renko-Hochs und -Tiefs aus den globalen Variablen ausgelesen wurden, kann die eigentliche Trenderkennung beginnen. Hierzu wird die Chart-Farbe zunächst auf schwarz gesetzt. Nur wenn eine entweder bullishe oder bearishe Marktphase erkannt wird, wird sie auf grün oder rot gesetzt. Mit der ermittelten Farbe wird schlussendlich ein Bar Chart  bezeichnet. Am Ende des Scripts wird noch die aktuelle Chart-Farbe und der lange GD in eine globale Variable geschrieben. Diese Informationen kommen im dritten Teil bei der Erstellung des Handelssystems zum Einsatz.

CODE 3: Equilla Code für den „Trend Paint Renko Filter“.

Meta:​​ subchart(false); ​​ // indicator is drawn on chart, not as a subchart like RSI

Inputs:​​ LongPeriod(54),​​ ShortPeriod(21);​​ // Period of the short moving average

Variables:​​ shortAV,​​ longAV,​​ colour,​​ trend::colour,​​ global::longAV,​​ currenthigh,​​ currentlow;

 

// calculate long and short average

longAV=average(close,LongPeriod);

shortAV=average(close,ShortPeriod);​​ 

 

drawline(shortAV);

drawline(longAV);

 

// get the renko high/low​​ 

currenthigh=renko::hi;

currentlow=renko::lo;

 

// basic colour of barchart (if no trend)

colour=black; ​​ 

 

// definition of bearish trend

if​​ close<shortAV// close below short average

and​​ shortAV<LongAV ​​ // short average below long average

and​​ low<renko::lo  ​​​​ // barchart low is below last local renko low

then​​ colour=red;​​ // then colour=red (=bearish)

 

// definition of bullish trend​​ 

if​​ close>shortAV// close above short average

and​​ shortAV>longAv// short average above long average

and​​ high>renko::hi ​​ // barchart high is above last local renko high

then​​ colour=darkgreen;​​ // Wenn bullish dann grün

 

drawbar(open,high,low,close,​​ colour,colour);​​ // draw the colour coded barchart

 

// pass the colour information to other scripts

trend::colour=colour;

global::longAV=longAV;

 

 

ANWENDUNG IN DER PRAXIS.

Zum Abschluss möchten wir präsentieren, wie dieser Programmiercode in einem Chart aussehen kann. Die nachfolgende Grafik zeigt den Tageschart des Euro/Dollar mit dem Renko Slave Indikator aus Teil 1 und dem eben vorgestellten Trend Paint Renko Filter. Wie man anhand der Färbung erkennen kann, leistet die Kombination aus GDs und den lokalen Hochs bzw. Tiefs wertvolle Dienste. Seitwärtsphasen wie zum Beispiel Anfang bis Mitte 2012 wurden treffsicher erkannt, sodass die Fehleranfälligkeit deutlich reduziert wird.

ABB. 3: EUR/USD TAGESCHART MIT „TREND PAINT RENKO FILTER“.

Nur wenn die gleitenden Durchschnitte bullish sind und das Währungspaar über dem letzten Renko Hoch handelt, wird der Chart grün gefärbt. Die lokalen Renko Hochs und Tiefs filtern hierbei die falschen Signale der gleitenden Durchschnitte. So wurde z.B. Anfang bis Mitte 2012 kein Trend angezeigt.

FAZIT.

Im zweiten Teil dieser Mini Serie wurde eine weitere Voraussetzung für das Renko-Handelssystem geschaffen: Mithilfe der Einfärbung des Charts steht klar und deutlich fest, wann das Handelssystem nach einem Long- oder Short-Trade Ausschau halten soll. Im dritten und letzten Teil dieser Serie erfahren Sie, wie der Ein- und Ausstieg programmiert wird und wie gut sich diese Renko-Strategie in der Vergangenheit geschlagen hat.

 

TEIL 3: Wie Sie alle Komponenten zusammenfügen und Profit generieren.

Der erste und zweite Teil unserer Serie beschrieben einen Weg, wie Umkehrpunkte des Renko Charts am Bar Chart automatisch angezeigt und entsprechend des vorherrschenden Trends gefärbt werden. Anschließend erfolgte die Übergabe der aktuellen Farbe des Charts (stellvertretend für bullish/bearish/neutral) an eine globale Variable. Diese Komponenten bilden die Basis für ein einfaches Handelssystem.

DEFINITION DES EIN- UND AUSSTIEGS.

Zur Fertigstellung der Renko Handelsstrategie werden nur noch die Befehle für den Ein- und Ausstieg benötigt. Mithilfe der bereits vorliegenden Farbinformation des Charts kann der Einstieg mit zwei einfachen Anweisungen umgesetzt werden:

  • Wenn der Chart grün ist: Long-Position
  • Wenn der Chart rot ist: Short-Position

Kommen wir nun zum Ausstiegsbefehl. Eine einfache Möglichkeit wäre, auch an dieser Stelle die Farbinformation des Charts für die Anweisung heranzuziehen. Diese könnte wie folgt lauten:

  • Wenn der Chart schwarz ist: Schließen der aktuellen Position

Dies ist aus verschiedenen Gründen jedoch nicht die beste Exit-Option. So kann es vorkommen, dass der Chart nur für einige wenige Bars mit wenig Bewegung keinen Trend anzeigt (schwarz), bevor die ursprüngliche Trendbewegung wiederaufgenommen wird. In diesem Fall wäre es nicht ratsam, gleich die Position zu schließen.

Unter Umständen wird der Wechsel von Trend auf Nicht-Trend aufgrund besonders schneller Bewegungen zu spät erkannt, was wiederum negative Auswirkungen auf die Performance hätte. Um diese Aspekte bei der Gestaltung der Ausstiegsstrategie zu berücksichtigen, empfiehlt sich daher eine Kombination aus einem nachgezogenen (trailing stop) und einem charttechnischen Stop. Konkret bildet die Exit-Anweisung innerhalb des Systemcodes für den Long Exit den Maximalwert aus dem aktuellen Stand des langen gleitenden Durchschnitts und des letzten lokalen Renko Tiefs. Der Wert, der näher an der aktuellen Position liegt, wird automatisch zum aktuellen Stop Loss Level. Wird er berührt, wird die Position geschlossen.

PROGRAMMCODE.

Kommen wir nun zum Code, der diese Vorgaben umsetzt. Zunächst wird eine lokale Variable für die Chart-Farbe definiert. Anschließend wird der Wert der globalen Variable in die lokale Variable geschrieben. Zwar kann auch die globale Variable für eine Abfrage der Chart-Farbe genutzt werden, allerdings haben globale Variablen einen entscheidenden Nachteil: Sie liefern keine Information über den vorhergehenden Bar. Wird der Wert der globalen Variable jedoch in eine lokale geschrieben, kann man natürlich auch erfahren, welche Farbe vor einem oder zwei Bars vorlag. Und genau diese Information ist wichtiger Bestandteil des eigentlichen Kaufbefehls. Dieser lautet vereinfacht ausgedrückt:

Das System soll eine Long-Position einnehmen, wenn

  • 01. der Chart heute grün ist und
  • 02. der Chart gestern sowie vorgestern nicht grün war

 

Die Frage nach der Farbe vorgehender Bars soll verhindern, dass das System in trendlosen Phasen zu schnell wieder in Position geht. Mit diesem Trick wird bei häufigen Signalen die Handelsfrequenz heruntergefahren. In Seitwärtsphasen wird dadurch eine Reduzierung der Verluste erreicht, während Gewinne in Trendphasen nicht begrenzt werden. Die Exit-Anweisung für die Long-Position beinhaltet, wie schon angesprochen, die Wahl zwischen dem letzten lokalen Renko Tief und dem langen gleitenden Durchschnitt. Durch die maxlist Anweisung im nachfolgenden Code wird der Exit immer am höheren der beiden Werte ausgelöst. Analog verhält es sich beim Short Entry und Short Exit.

CODE 4: Equilla Code für den Ein- und Ausstieg.

Variables:​​ colour;

 

 

colour=trend::colour;

 

if​​ colour=darkgreen​​ 

and​​ colour[1]<>darkgreen​​ 

and​​ colour[2]<>darkgreen​​ 

then buy this bar​​ on​​ close;​​ 

 

if​​ colour=red​​ 

and​​ colour[1]<>red​​ 

and​​ colour[2]<>red​​ 

then short this bar​​ on​​ close;​​ 

 

sell next bar​​ at​​ maxlist(renko::lo,​​ global::longAV)​​ stop;

cover next bar​​ at​​ minlist(renko::hi,​​ global::longAV)​​ stop;

 

PRAKTISCHER EINSATZ UND ANPASSUNG.

Das Handelssystem lässt sich nun auf einen beliebigen Bar Chart legen, wodurch die Handelssignale und die zurückgerechnete Kapitalkurve (Backtest) automatisch angezeigt werden. Die nachfolgende Grafik zeigt den langfristigen Verlauf des Euro/Dollar
samt Handelssignalen und der Kapitalkurve.

Bei der Anwendung des Handelssystems ist die Anpassung der gleitenden Durchschnitte und der Renko Box-Größe an den gewünschten Markt erforderlich. Die Renko Box-Größe kann dabei bequem über das Eigenschaftenfenster des angezeigten Charts geändert werden. Traditionell wird hierbei eine fixe Box-Größe (in Punkten) verwendet, bei stark schwankenden Märkten empfiehlt sich aber die Eingabe prozentualer Werte. Tradesignal bietet beide Optionen an.

TIPP: Für Trendfolger, die den Tageschart nutzen, sind Werte zwischen 0,5 Prozent und 2 Prozent für eine Box meist ideal.

ABB. 4: RENKO HANDELSSTRATEGIE.

Die einfache Renko Handelsstrategie zeigt beim Euro/Dollar eine positive, stabile Entwicklung.

Die Längen der gleitenden Durchschnitte, die ebenfalls einen großen Einfluss auf die Ein- und Ausstiegsgenerierung haben, können ebenfalls über das seitliche Eigenschaftenfenster individuell angepasst werden. Wie sich die Längen beider Durchschnitte mithilfe von Tradesignal automatisch optimieren lassen, lesen Sie in einer der nächsten Trading Tips Ausgaben.