In diesem Artikel
Nach diesem Artikel kannst du …
- Ereignisse, Handelsberechtigungen und tatsächliche Fills trennen.
- CopyBuffer-Barwahl bei vollständiger Kopie prüfen.
- Indikatorbereitschaft einschließlich EMPTY_VALUE erkennen.
- Retry, Transaktionsreihenfolge und Remotehosting abgleichen.
Begriffe direkt erklärt
Expert Advisor (EA) Backtesting Lot Ausführungsabweichung (Slippage)Ein EA ist ein ereignisgesteuertes Programm, kein automatisch profitabler Roboter. Auf einem Chart zu erscheinen, bestätigt weder gültige Eingaben noch erlaubte und ausgeführte Orders. Trenne die Verarbeitungsschritte in Logs und Akzeptanzprüfungen.
MQ5, EX5 und Berechtigungen unterscheiden
MetaEditor kompiliert MQ5-Quelltext in EX5. Die ausführbare Datei kann ohne Quelle verteilt werden; MQL5 zu lernen offenbart keinen darin verborgenen Kaufalgorithmus. Expert Advisors können erlaubte Handelsanfragen stellen. Indikatoren haben andere Ereignisse und untersagte Handelsfunktionen, können aber auch rechnen oder benachrichtigen. „Zeichnet nur“ beschreibt sie unvollständig.
MQL5 verwendet die MT5-Umgebung. MT4 kennt ebenfalls Expert Advisors, jedoch eigene Sprache und Schnittstellen. Ein Pythonprogramm kann Anbieter-APIs oder MetaQuotes-Pythonintegration mit dem Terminal nutzen. Vergleiche tatsächliche Datenwege und Abhängigkeiten statt nur Sprachlabel; der Botvergleich vertieft das.
Ein erfolgreicher CopyBuffer-Aufruf kann die falsche Bar liefern
Angenommen: CopyBuffer liefert exakt drei Elemente mit start_pos=1 und count=3 in ein gewöhnliches Array ohne AS_SERIES. Fiktive Werte lauten Shift 3 = 103, Shift 2 = 101, Shift 1 = 102. In physischer Reihenfolge steht der älteste kopierte Wert zuerst: Index 0 enthält 103, Index 1 enthält 101, Index 2 enthält den letzten abgeschlossenen Wert 102. Shift 0 wurde nicht kopiert.
Index 0 enthält älteren Shift 3, während hier Index 2 den letzten abgeschlossenen Shift 1 enthält.
- Index 0 → Shift 3
- 103 > 102,5: wahr – Älterer kopierter Wert
- Index 1 → Shift 2
- 101 – Mittlerer Wert
- Index 2 → Shift 1
- 102 > 102,5: falsch – Letzter abgeschlossener Wert; keine universelle Indexregel
Die Gegenprobe „größer als 102,5“ besteht mit dem älteren 103, aber nicht mit dem letzten abgeschlossenen 102. Die Kopie ist vollständig, die Barwahl kann trotzdem falsch sein. Notiere start_pos, tatsächliche Rückgabeanzahl und Zielarray-Indizierung. Index 2 ist keine allgemeine Regel für andere Arrayeinstellungen. Eine korrekt geschriebene Vergleichsoperation korrigiert keinen falschen Input.
Ereignisse und laufende Programme trennen
OnInit initialisiert Ressourcen; notwendige fehlende Vorbereitung braucht einen Fehlerstatus. Initialisierung kann nach Änderungen erneut erfolgen, nicht nur einmal während der ganzen Nutzung. OnDeinit erhält einen Grund, etwa Entfernung, Shutdown oder eine Änderung mit Neuinitialisierung. Ressourcen und erhaltenen Zustand verwaltest du ausdrücklich.
OnTick behandelt NewTick für das angehängte Chartsymbol. Ist ein solches Ereignis schon in der Queue oder in Verarbeitung, wird kein weiteres NewTick hinzugefügt. Daher wird nicht automatisch jeder Brokerquote als eigener Aufruf abgearbeitet. Ein EA kann weitere Ereignisse verwenden und braucht nicht zwingend OnTick. OnTimer und OnTradeTransaction können zentral sein. Bei mehreren Symbolen bestätigt ein Tick des Charts nicht die Aktualität sämtlicher Fremdsymbole.
Deaktiviertes AutoTrading verhindert neue EA-Handelsanfragen, stoppt aber weder Berechnungen noch einen gerade laufenden Handler. Es schließt keine offene Position. Datenstatus und Handelsberechtigung bleiben verschiedene Prüfungen.
Anfrage, Order, Deal und Position abgleichen
OrderSend=true bestätigt nicht automatisch einen Fill. Prüfe Retcode und bestätigte Orders, Deals und Positionen. OrderCheck ist Vorprüfung, keine spätere Ausführungsgarantie. CTrade bietet Buy, Sell und PositionClose; auch eine erfolgreiche Buy-Methodenprüfung braucht ResultRetcode und ResultDeal.
Fiktiver Fehlerfall: Du verlangst 0,10 Lot Kauf und verlierst Gewissheit über die Antwort. Ein erneutes Senden ohne Abgleich kann 0,20 Lot erzeugen, wenn beide Anforderungen füllen. Fehlende lokale Bestätigung beweist nicht, dass der Server nichts ausführte. Bei einem hypothetischen EUR/USD-Kontrakt mit 100.000 EUR je Lot sind 0,10 und 0,20 Lot entsprechend 10.000 und 20.000 EUR Basiseinheiten; das ist Menge, kein Verlustbudget.
Zweite Gegenprobe ohne Anfangsposition: Bestätigte Kaufdeals D1 = 0,04 und D2 = 0,06 Lot. Ein defekter Zähler setzt bei ORDER_DELETE die Menge auf 0. Bei D1, D2, ORDER_DELETE endet er falsch bei 0; bei ORDER_DELETE, D1, D2 zeigt er 0,10. Die bestätigte Kaufsumme ist in beiden Fällen 0,10 Lot. OnTradeTransaction garantiert keine passende Ankunftspriorität. Orderentfernung und Exposure sind verschiedene Felder. Ein echter Ledger braucht zudem Verkäufe, Umkehrungen, Historienkorrekturen und das Kontomodell.
Historischen Tester als begrenzte Untersuchung verwenden
MT5 kann generierte und verfügbare brokerbezogene Echtticks verwenden. Dokumentiere Herkunft, Informationszeit, Vertrag und Kosten; „real ticks“ bezeichnet keinen universellen MetaQuotes-Preisfeed. Parameterauswahl auf später als Evaluation ausgegebener Historie kann Belege überschätzen. Sie garantiert mathematisch weder glatte Kurve noch Liveversagen.
Bewahre alle Varianten und unberührte Evaluation. Der Backtestleitfaden trennt Methodenfrage und Ausführung. Simulierte Verzögerung ist keine Messung sämtlicher künftiger realer Fills.
Zweck, Eingaben und No-Trade-Regeln spezifizieren
Ein EA kann wiederholbare Prüfungen und Überwachung übernehmen. 200 Trades, Nachtbetrieb oder schnelle Entscheidungen sind mögliche Anforderungen, kein Vorteilbeleg. Definiere Informations- und Ereignisbedingungen, einschließlich fehlender Daten und No-Trade-Fälle. Kontext kann formalisiert werden, wenn seine Eingaben und Regeln präzise sind. Ungewöhnliche Meldungen disqualifizieren nicht automatisch jede Automatisierung.
Ein Handle ist noch kein auswertbarer Indikatorwert
BarsCalculated liefert berechnete Datenzahl oder −1 bei Fehler. Danach prüfst du Buffer, Barshift, tatsächliche CopyBuffer-Anzahl und Leermarker. Unser Modell verlangt einen Wert: A hat ungültigen Handle; B gültigen Handle, aber 0 kopierte Werte; C einen kopierten Wert EMPTY_VALUE; D einen gültigen Wert 45. Nur D erlaubt jetzt eine Schwellenprüfung. 45 ist eine erfundene Lesung, kein Investmentinput.
Eine vollständige Kopie mit Leermarker liefert keinen gültigen Input.
- A: INVALID_HANDLE
- Kein Read – Ressource fehlt
- B: Handle, 0 kopiert
- Nicht bereit – Keine echte Zahl
- C: 1 Wert EMPTY_VALUE
- Nicht auswertbar – Endlichkeit genügt nicht
- D: 1 gültiger Wert 45
- Regel auswertbar – Fiktive Lesung; keine Order oder Investition
EMPTY_VALUE ist standardmäßig DBL_MAX und endlich. Eine bloße Endlichkeitsprüfung genügt deshalb nicht. Customindikatoren können einen anderen Leermarker verwenden. Prüfe ihren Vertrag statt jeden echten Nullwert zu verwerfen. Ein fehlgeschlagener RSI-Read wird nicht als 0 ausgegeben: 0 wäre ein gültiger extremer Zustand. Fehlende Historie, Leermarker und gültige Zahl bleiben getrennt.
API-Verfügbarkeit und Chartabhängigkeit haben zusätzliche eigene Prüfungen.
Betrieb und Lernprojekt nach Bedarf planen
Ein kleines eigenes Projekt kann präzise Regeln prüfen, ohne dass drei bis sechs Monate oder Eigenbau einen besseren Ausgang garantieren. Unbeaufsichtigte Nutzung braucht Infrastruktur, Rechte und Wiederanlauf.
Ein serverakzeptierter gewöhnlicher Stop kann nach lokaler Terminalschließung weiter aktiv bleiben; ein EA-only-Exit braucht laufenden Code und Verbindung. MetaQuotes Virtual Hosting ist eine separat migrierte Umgebung mit erlaubter Automatisierung; der lokale AutoTrading-Knopf stoppt sie nicht. Ein Windows-VPS ist ein anderes Angebot. Im Nettingkonto teilen Strategien desselben Symbols eine Nettoposition. Magic Number erzeugt kein getrenntes Kapital oder eigene Margin.
Mit konkreten Akzeptanzfällen beginnen
Lies OnInit, OnTick und CTrade in der offiziellen Dokumentation und prüfe bei Bedarf einen vorhandenen Sample-EA in einem einzelnen kontrollierten Test. Erhalte Einstellungen und Ergebnis. Definiere Signal, Exit, Menge und unbekannte Fälle vor einem eigenen Projekt.
Prüfe fehlende Daten, Neustart, ungültigen Lotschritt, ungewisse Antworten und manuelle Positionsänderungen. Gleiche aktuelle Exposure vor Wiederaufnahme ab statt einem alten lokalen Signal zu vertrauen. Demo kann Operationsfragen prüfen, muss Liveausführung aber nicht wiedergeben. Ein Monat ist ein Planbeispiel, keine automatische Einsatzfreigabe.
- Lies OnInit, OnTick und CTrade in der offiziellen Dokumentation und sichere Einstellungen eines einzelnen kontrollierten Sample-Tests. Definiere Signal, Exit, Menge und unbekannte Fälle vorher; vergleiche im Bufferbeispiel den älteren Wert 103 mit der letzten abgeschlossenen Bar 102, bevor du ihren Index verwendest.
- Teste fehlende Daten, ungültigen Lotschritt, Neustart und ungewisse Antworten in einer getrennten Umgebung und bewahre Ereigniskennungen auf. Rechne die bestätigten Deals 0,04 plus 0,06 als 0,10 Lot nach; ein unklar beantworteter Retry darf ohne Zustandsabgleich nicht eine weitere volle Menge senden.
- Gleiche vor Wiederaufnahme tatsächliche Exposition und manuelle Positionsänderungen mit dem gespeicherten lokalen Zustand ab. Dokumentiere, ob 10.000 oder 20.000 EUR Basismenge wirklich vorliegen; Demo prüft Operationsfragen, wiederholt aber nicht zwingend Liveausführung und ein Monatsplan ist keine automatische Einsatzfreigabe.
Prüfe dein Verständnis
Etwa 3 Minuten Übung.
Antwort und Erklärung anzeigen
Ein kopierter Wert ist nicht automatisch ein gültiger Input. EMPTY_VALUE ist standardmäßig sogar endlich.
Weitere Fragen
Wie unterscheidet sich MQL5 von einem Pythonbot?
Ein MQL5-EA verwendet MT5-Ereignisse, Daten und Handelsfunktionen. Python kann eine Anbieter-API oder MetaQuotes-Integration mit dem Terminal nutzen und ist nicht automatisch ein reiner REST-/FIX-Bot. Vergleiche Abhängigkeiten, Ereignisse, Orderantworten und Testbedarf. Keine Sprache gewinnt allgemein bei Modellqualität, Maschinellem Lernen oder Ausführung.
Muss ich programmieren können, um einen EA zu betreiben?
Eine dokumentierte EX5-Datei kann ohne eigenes Schreiben laufen, braucht aber überprüfte Eingaben, Rechte und Betrieb. Quelle ermöglicht Review; Sprachlernen öffnet keinen verborgenen Algorithmus einer gekauften Datei. Prüfe Verhalten, Logs, Risikogrenzen und Wiederanlauf kontrolliert. Es gibt keine feste kurze Lernzeit, die ausreichendes Verständnis garantiert.
Warum unterscheidet sich der Test vom Livekonto?
Daten, ausgewählte Parameter, Spread, Gebühren, Verzögerung und Ausführungsbedingungen können abweichen. Forschung auf derselben als Evaluation berichteten Historie überschätzt möglicherweise Belege, garantiert aber weder schönen Test noch späteren Verlust. Bewahre Varianten und getrennte Entwicklung/Evaluation mit gleichen Verträgen und Zeitregeln. Eine erfolgreiche Prüfung bestätigt keine dauerhafte Zukunft.
Braucht ein EA zwingend einen VPS?
Wähle Infrastruktur nach Verfügbarkeit, Daten und Ausführungsweg. Ein VPS kann Kontinuität unterstützen, garantiert aber weder Latenz noch Fill. Auch langsamere Methoden können unbeaufsichtigte Überwachung brauchen. Windows-VPS und MetaQuotes Virtual Hosting sind verschieden; der lokale AutoTrading-Knopf kontrolliert keinen separat migrierten EA. Prüfe konkrete Bedingungen statt pauschaler monatlicher Kosten.
Quellen und Nachvollziehbarkeit
- MetaQuotes: OnTick
Chart-Symbol, NewTick-Warteschlange und AutoTrading-Verbot neuer Handelsanfragen bei weiterlaufender Programmlogik.
- MQL5 — CopyBuffer
start_pos0 bezeichnetaktuelleBar,start_pos1 dievorherige;InformationszeitundphysischeArrayordnung unterscheiden.
- MetaQuotes: OnTradeTransaction
Order-/Deal-Ereignisse und nicht garantierte Priorität ihrer Ankunft; Zustände aus bestätigten Daten abstimmen.
- MetaQuotes: BarsCalculated
Berechnete Indikatorwerte oder −1 bei Fehler; Handle ist kein fertiger Input.
- MetaQuotes: EMPTY_VALUE
Standardmäßig DBL_MAX, also endlich; benutzerdefinierter Leermarker kann abweichen.
- MetaQuotes: CTrade.Buy
Erfolgreiche Methodenprüfung garantiert keine gefüllte Handelsoperation; ResultRetcode und ResultDeal kontrollieren.
- MetaTrader5 — Migration zum virtuellen Hosting
Eine migrierte virtuelle Umgebung kann unabhängig vom lokalen Terminal handeln; korrekte Instanz prüfen.
Rechenfälle sind ausdrücklich angenommene Beispiele. Sie ersetzen weder aktuelle Marktdaten noch die Spezifikation deines Anbieters.
