Pipelines zur Kennzeichnung mit dreifacher Barriere verwenden häufig eine willkürliche Konstante (0,5–1,0 %) oder eine veraltete Spread-Annahme als „min_ret“-Schwellenwert. Ein Schwellenwert, der unter den tatsächlichen Round-Trip-Transaktionskosten liegt, führt dazu, dass die Pipeline kostenbedingtes Rauschen als handelbares Signal kennzeichnet. Der so gekennzeichnete Datensatz überbewertet dann systematisch den „Edge“, und jedes Modell, das auf diesen Kennzeichnungen trainiert wird, passt sich übermäßig an ein Artefakt des Kennzeichnungsschemas an, anstatt an die tatsächliche Marktstruktur.
„TransactionCostCollector.mq5“ ist ein eigenständiges Skript, das den Datenerfassungsschritt dieses Problems löst. Es erstellt Stichproben der historischen Spread-Verteilung, liest die Swap-Sätze und Provisionsdaten des Brokers für das angehängte Chart-Symbol aus und exportiert alles in eine strukturierte CSV-Datei. Die CSV-Datei wird von der zugehörigen Python-Klasse „TransactionCostModel“ verarbeitet, die alle Kosten in fraktionierte Renditen umrechnet und den instrumentspezifischen „min_ret“- Schwellenwert für Ihren Labeling-Aufruf berechnet.

Dreiteilige Darstellung der Ausgabe von „TransactionCostCollector“: Aufschlüsselung der Intraday-Kosten nach Handelssitzung (a), vollständige Kostenverteilung (b) und Perzentilkurve für die „min_ret“-Auswahl (c)
Das Skript erfasst in einem Durchlauf drei Kostenkomponenten für ein einzelnes Symbol:
| Parameter | Standard | Beschreibung |
|---|---|---|
| InpBars | 50000 | Anzahl der Balken der Spread-Historie, die als Stichprobe herangezogen werden sollen. Ein höherer Wert führt zu einer repräsentativeren Verteilung und erfasst mehr Schwankungen innerhalb einer Handelssitzung. 50.000 Balken auf H1 decken etwa 5,7 Jahre ab; auf M15 decken sie etwa 1,4 Jahre ab. Verringern Sie diesen Wert, wenn das Terminal nur über eine begrenzte Historie für das Symbol verfügt. |
| InpOutputFile | (leer) | Überschreiben Sie den Namen der Ausgabedatei. Wenn das Feld leer ist (Standard), lautet der Dateiname <SYMBOL>_costs.csv – zum Beispiel EURUSD_costs.csv für EURUSD. Die Datei wird im Datenordner des Terminals unter „MQL5\Files\“ gespeichert (ModusFILE_WRITE | FILE_CSV ). |
Die CSV-Datei verwendet eine vier Spalten umfassende Struktur: Abschnitt, Schlüssel, Wert, Einheit. Die Abschnitte sind:
Die zugehörige Python-Klasse „TransactionCostModel“ lädt die CSV-Datei und berechnet „min_ret“ für die Triple-Barrier-Kennzeichnung:
from afml.transaction_costs import load_cost_model import pandas as pd model = load_cost_model( csv_path = "EURUSD_costs.csv", spread_percentile = "p95_pips", # konservativ slippage_pips = 0.4, commission_per_lot = 7.0, # aus Referenzgeschäft lot_size = 0.01, ) close = pd.read_parquet("EURUSD_H1.parquet")["close"] min_ret = model.min_ret_for_symbol( price_series = close, holding_days = 1.0, cost_multiplier = 1.5, # 1,5-fache Gewinnschwelle ) print(f"min_ret = {min_ret:.6f}")
Der Provisionssatz pro Lot lässt sich nicht bei allen Brokern programmgesteuert auslesen. Die empfohlene Vorgehensweise lautet: Eröffnen Sie einen Referenztrade mit genau 1,0 Standardlot auf einem Demokonto, lesen Sie unmittelbar nach Eröffnung des Trades den Wert „ACCOUNT_COMMISSION_BLOCKED“ aus dem Terminal aus und schließen Sie den Trade anschließend. Der gesperrte Wert geteilt durch 1,0 ergibt den Pro-Lot-Satz. Vergleichen Sie diesen mit dem Kontoauszug. Dies muss einmal pro Broker-Beziehung durchgeführt werden.
Der mittlere Spread wird von ruhigen Phasen dominiert: der asiatischen Handelssitzung, der nächtlichen Konsolidierung und geordneten Trendbedingungen. Strategie-Einstiege fallen jedoch oft mit den Momenten höchster Unsicherheit zusammen (genau dann, wenn Modelle Signale generieren). Die Verwendung des Spreads am 95. Perzentil als „min_ret“-Eingabe berücksichtigt das Kostenumfeld unter typischen Einstiegsbedingungen und nicht unter durchschnittlichen Marktbedingungen.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/73173
Institutional Harmonic Volumetric Gravity Center
Ein quantitatives Verfahren zur Berechnung der Volumendichte, das auf dem gewichteten harmonischen Mittelwert basiert, um arithmetische Ausreißer zu eliminieren und den tatsächlichen Schwerpunkt der institutionellen Liquidität zu ermitteln.
Close Profit Positions
Gewinnpositionen schließen
Heiken ashi as series
Heiken-Ashi, wobei alle Puffer als Serie eingestellt sind
SetSLByLoss - set Stop Loss on all open positions by target loss amount
Skript zum Festlegen eines Stop-Loss für jede offene Position auf Basis eines Zielverlusts in der Kontowährung (z. B. 50 $ pro Position). Funktioniert mit jeder Einzahlungswährung und jedem Devisen-Symbol. Überprüft die Stop- und Freeze-Limits des Brokers. Die Währungsumrechnung erfolgt automatisch.