Inhalt
- Wesen der Handelsstrategie
- Vorteile und Nachteile der Strategie
- Programmcode des Experts
- Allgemeine Dateistruktur
- Einbindung von Bibliotheken und Deklaration von Variablen
- Funktion OnInit() – Initialisierung des Robots
- Funktion OnTick() – Verarbeitung neuer Kurse
- Funktion OnDeinit() – Deinitialisierung
- Wie funktioniert der Robot insgesamt?
- Wichtige Hinweise für Anfänger
- Was kann verbessert werden
Wesen der Handelsstrategie
Die Hauptidee besteht darin:
- Auswahl des Assets: Der Trader wählt ein Finanzinstrument für den Handel (z. B. Aktien, Währungen).
- Münzwurf: Die Richtung des Handels wird zufällig gewählt („kaufen“ oder „verkaufen“).
- Eröffnung einer Position: Nach der Wahl der Seite wird ein Trade mit einem vordefinierten Volumen eröffnet.
- Risikomanagement: Stop-Loss und Take-Profit werden gesetzt – Level zur Begrenzung von Verlusten und Fixierung von Gewinnen.
So reduziert sich die gesamte Handelsaktivität auf eine zufällige Wahl der Preisbewegungsrichtung, was den Entscheidungsprozess erheblich vereinfacht.
Vorteile und Nachteile der Strategie
Vorteile der Taktik:
- Keine Notwendigkeit für komplexe technische oder fundamentale Marktanalysen.
- Kein ständiges Marktmonitoring – reduziert den Stresspegel.
- Die Strategie lässt sich leicht automatisieren und in automatisierten Handelssystemen einsetzen.
Nachteile:
- Erfolgsquote beträgt nur 50 %, deutlich unter den meisten professionellen Strategien.
- Ignorieren wichtiger wirtschaftlicher Indikatoren und technischer Signale erhöht Verlustrisiken.
- Für Risikominimierung ist ein erhebliches Handelskapital empfehlenswert, um Verluste abzufedern.
Für eine erfolgreiche Umsetzung der Strategie sind folgende Punkte wichtig:
- Optimal ist die Eröffnung von Positionen mit einem Volumen von maximal 1 % des Gesamthandelskapitals.
- Strenge Einhaltung der Stop-Loss- und Take-Profit-Level.
- Diversifikation der Assets: Der Einsatz verschiedener Finanzinstrumente senkt das Gesamtrisiko des Portfolios.
Anfängern wird empfohlen, die Strategie „Kopf oder Zahl“ zunächst auf Demokonten zu testen, um ihr Potenzial zu bewerten und eigene Ansätze zum Positionsmanagement zu entwickeln.
Programmcode des Experts
1. Allgemeine Dateistruktur
Die Expert-Datei beginnt mit einem Kopfkommentar, in dem angegeben ist:
- Dateiname (VR Heads or Tails.mq5);
- Informationen zum Autor und Erscheinungsjahr;
- Website des Entwicklers.
Darauf folgen #property-Direktiven, die Metadaten des Experts festlegen: Urheberrechte, Version und erforderliche Links.
2. Einbindung von Bibliotheken und Deklaration von Variablen
Für den Umgang mit Handelsoperationen werden Standard-MQL5-Bibliotheken eingebunden:
mql5n#include <Trade\Trade.mqh>nnCTrade trade; // Instanz der Klasse zur Handelssteuerungnn#include <Trade\PositionInfo.mqh>nnCPositionInfo posit; // Instanz zur Speicherung von Positionsinformationen
- CTrade – Klasse zum Senden von Handelsaufträgen (Käufe, Verkäufe);
- CPositionInfo – Klasse zum Abrufen von Daten zu offenen Positionen.
Dann werden die Eingabeparameter des Experts deklariert (benutzerdefiniert im MT5-Interface):
mql5ninput double iStartLots = 0.01; // Startlotninput int iTakeProfit = 450; // Take-Profit (in Punkten)ninput int iStopLoss = 390; // Stop-Loss (in Punkten)ninput int iMagicNumber = 227; // Eindeutige Transaktions-IDninput int iSlippage = 30; // Maximal zulässiges Slippage
- iStartLots – Volumen des ersten Trades;
- iTakeProfit und iStopLoss – Gewinn- und Verlustlevel;
- iMagicNumber – Zahl zur Identifikation der Robot-Trades (zur Unterscheidung von manuellen);
- iSlippage – zulässige Preisabweichung bei der Orderausführung.
3. Funktion OnInit() – Initialisierung des Robots
Diese Funktion wird einmalig beim Start des Experts ausgeführt. Ihre Aufgabe ist die Konfiguration der Handelsparameter:
mql5nint OnInit() {nntrade.SetExpertMagicNumber(iMagicNumber); // MagicNumber setzennntrade.SetDeviationInPoints(iSlippage); // Slippage festlegennntrade.SetTypeFillingBySymbol(_Symbol); // Ausführungstyp nach Symbolnntrade.SetMarginMode(); // Margin-Modus (Hedging)nnMathSrand(GetTickCount()); // Zufallsgenerator initialisierennnreturn(INIT_SUCCEEDED); // Erfolgreichen Start meldennn}
Schlüsselaktionen:
- SetExpertMagicNumber() – weist Trades eine eindeutige ID zu.
- SetDeviationInPoints() – legt maximales Slippage fest.
- SetTypeFillingBySymbol() – konfiguriert den Orderausführungstyp (z. B. „Markt“).
- SetMarginMode() – aktiviert Hedging-Modus (separate Positionen pro Instrument).
- MathSrand() – initialisiert den Zufallsgenerator (für zufällige Richtungsentscheidung).
4. Funktion OnTick() – Verarbeitung neuer Kurse
Diese Funktion wird bei jedem neuen Tick (Preisänderung) aufgerufen. Wir zerlegen sie in Teile.
4.1. Abruf von Marktdaten und Positionen
mql5nint total = ::PositionsTotal(); // Anzahl offener Positionennndouble Bid = ::SymbolInfoDouble(_Symbol, SYMBOL_BID); // BID-Preisnndouble Ask = ::SymbolInfoDouble(_Symbol, SYMBOL_ASK); // ASK-Preis
- PositionsTotal() – gibt die Anzahl offener Positionen zurück;
- SymbolInfoDouble() – holt aktuelle BID (Verkauf) und ASK (Kauf) Preise.
Wenn Preise ungültig (≤ 0) sind, b