MetaTrader4
Moving Average: Ein effektiver Expert Advisor für MetaTrader 4
Der Moving Average Expert Advisor nutzt einen gleitenden Durchschnitt, um Handelssignale zu generieren. Positionen werden eröffnet und geschlossen, wenn der gleitende Durchschnitt den Preis der zuletzt gebildeten Kerze erreicht (Kerzenindex entspricht 1). Die Lotgröße wird dabei durch einen speziellen Algorithmus optimiert.
Der Expert Advisor analysiert die Übereinstimmung zwischen dem gleitenden Durchschnitt und dem Markpreis-Chart. Diese Überprüfung erfolgt durch die Funktion CheckForOpen(). Wenn der gleitende Durchschnitt die Kerze so trifft, dass er über dem Eröffnungspreis, aber unter dem Schlusskurs liegt, wird eine BUY-Position eröffnet. Umgekehrt wird eine SELL-Position eröffnet, wenn der gleitende Durchschnitt unter dem Eröffnungspreis und über dem Schlusskurs liegt.
Das Money Management des Experten ist einfach, aber effektiv: Die Kontrolle über das Volumen jeder Position erfolgt basierend auf den Ergebnissen der vorherigen Transaktionen. Dieser Algorithmus wird durch die Funktion LotsOptimized() implementiert. Die Grundlotgröße wird auf der Grundlage des maximal zulässigen Risikos berechnet:
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
Der Parameter MaximumRisk zeigt den Grundrisikoanteil für jede Transaktion an. In der Regel liegt dieser Wert zwischen 0,01 (1%) und 1 (100%). Angenommen, das freie Margin (AccountFreeMargin) beträgt 20.500 Euro und die Regeln des Kapitalmanagements schreiben ein Risiko von 2% vor, dann beträgt die Grundlotgröße 20500 * 0.02 / 1000 = 0.41. Es ist wichtig, die Genauigkeit der Lotgröße zu kontrollieren und das Ergebnis mit den zulässigen Werten zu normalisieren. Normalerweise sind Bruchlots mit einer Schrittgröße von 0.1 erlaubt. Eine Transaktion mit einem Volumen von 0.41 wird nicht ausgeführt. Zur Normalisierung wird die Funktion NormalizeDouble() verwendet, die eine Genauigkeit von 1 Zeichen nach dem Komma liefert. Dies ergibt eine Grundlotgröße von 0.4. Die Berechnung der Grundlotgröße auf Basis des freien Margins ermöglicht es, die Volumen der Operationen je nach Erfolg im Handel zu erhöhen, d.h. mit Reinvestitionen zu handeln. Dies ist der grundlegende Mechanismus für ein verpflichtendes Kapitalmanagement zur Steigerung der Handelseffektivität.
Der DecreaseFactor gibt an, um wie viel die Lotgröße nach unprofitablen Handelsgeschäften reduziert wird. Normale Werte sind 2, 3, 4, 5. Wenn die vorhergehenden Transaktionen unprofitabel waren, verringern sich die folgenden Volumina um den Faktor DecreaseFactor, um die unprofitable Phase abzuwarten. Dies ist der Hauptfaktor im Kapitalmanagement-Algorithmus. Die Idee ist ganz einfach: Wenn der Handel erfolgreich ist, arbeitet der Expert Advisor mit der Grundlotgröße und maximiert den Gewinn. Nach der ersten unprofitablen Transaktion wird der Expert Advisor "langsamer" arbeiten, bis eine neue positive Transaktion erfolgt. Es ist möglich, die Funktion der "Geschwindigkeitsreduzierung" zu deaktivieren, indem man DecreaseFactor = 0 angibt. Die Anzahl der letzten aufeinanderfolgenden unprofitablen Transaktionen wird in der Handelsgeschichte ermittelt. Die Grundlotgröße wird auf dieser Basis neu berechnet:
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
Auf diese Weise ermöglicht der Algorithmus eine effektive Reduzierung des Risikos, das aus einer Reihe unprofitabler Transaktionen resultiert. Am Ende der Funktion wird die Lotgröße unbedingt auf die minimale zulässige Lotgröße überprüft, da die vorherigen Berechnungen zu lot = 0 führen können:
if(lot<0.1) lot=0.1;
Der Expert Advisor ist hauptsächlich für die Arbeit mit täglichen Perioden gedacht und im Testmodus für das Handeln zum Schlusskurs. Er wird nur beim Öffnen einer neuen Kerze handeln, weshalb die Modi der Every-Tick-Modellierung nicht benötigt werden.
Die Testergebnisse werden im Bericht dargestellt.
Strategie Tester BerichtMoving Average
SymbolEURUSD (Euro gegen US Dollar)
Periode1 Stunde (H1) 2003.01.08 00:00 - 2003.11.25 00:00
ModellJeder Tick (basierend auf allen verfügbaren Zeitrahmen mit fraktaler Interpolation jedes Ticks)
ParameterLots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11;
Balken im Test19371Ticks modelliert656918Modellierungsqualität25.00%
Startkapital10000.00
Gesamt Nettogewinn1695.20Bruttogewinn4293.20Bruttoverlust-2598.00
Gewinnfaktor1.65Erwarteter Gewinn10.80
Absoluter Drawdown40.35Maximaler Drawdown (%)318.50 (3.0%)
Gesamttransaktionen157Short-Positionen (gewonnen %)73 (26.03%)Long-Positionen (gewonnen %)84 (32.14%)
Gewinntransaktionen (% des Gesamt)46 (29.30%)Verlusttransaktionen (% des Gesamt)111 (70.70%)
GrößteGewinntransaktion262.55Verlusttransaktion-91.00
DurchschnittGewinntransaktion93.33Verlusttransaktion-23.41
Maximalaufeinanderfolgende Gewinne (Gewinn in Geld)2 (387.15)aufeinanderfolgende Verluste (Verlust in Geld)7 (-287.25)
Maximalaufeinanderfolgende Gewinne (Anzahl der Gewinne)387.15 (2)aufeinanderfolgende Verluste (Anzahl der Verluste)-287.25 (7)
Durchschnittaufeinanderfolgende Gewinne1aufeinanderfolgende Verluste3
2005.11.29