Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
23
Veröffentlicht:
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

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.

Ausgabe des Transaktionskosten-Kollektors

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)

Was das Skript erfasst

Das Skript erfasst in einem Durchlauf drei Kostenkomponenten für ein einzelnes Symbol:

  • Spread – historische Verteilung aus „CopySpread()“ über die angeforderte Anzahl von Bars. Ausgewiesen als Mittelwert, Standardabweichung und Perzentile (p25, p50, p75, p90, p95, p99), jeweils in Pips. Wird zudem pro UTC-Stunde des Tages berechnet, um Sitzungseffekte sichtbar zu machen.
  • Swap – Long- und Short-Overnight-Swapsätze, die direkt aus SYMBOL_SWAP_LONG / SYMBOL_SWAP_SHORT ausgelesen werden, einschließlich des Swap-Modus (Punkte, Währung, Zinsen) und des Wochentags, an dem ein dreifacher Swap berechnet wird.
  • Provision – nur zu Diagnosezwecken. MQL5 stellt die Provision pro Lot nicht bei allen Brokern als direkten API-Aufruf bereit. Das Skript protokolliert „ACCOUNT_COMMISSION_BLOCKED“ sowie einen Hinweis, wie sich der Satz pro Lot aus einem einzelnen Referenzgeschäft ableiten lässt.

Eingabeparameter

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 ).

CSV-Ausgabeformat

Die CSV-Datei verwendet eine vier Spalten umfassende Struktur: Abschnitt, Schlüssel, Wert, Einheit. Die Abschnitte sind:

  • symbol_properties – Punktgröße, Pip-Faktor, Tick-Wert, Kontraktgröße, Währungskennungen.
  • swap – Long-/Short-Sätze, Swap-Modus, Wochentag mit dreifachem Swap.
  • commission – Diagnosewert und Hinweis zur Herleitung.
  • spread_summary – Mittelwert, Standardabweichung und Perzentile über alle erfassten Balken.
  • spread_by_hour – mittlerer Spread (Pips) für jede Stunde des Tages, eine Zeile pro Stunde (UTC, Broker-Zeit).

Ausführung

  1. Legen Sie „TransactionCostCollector.mq5“ in Ihrem Ordner „MQL5\Scripts\Downloads\ “ ab und kompilieren Sie die Datei im MetaEditor.
  2. Öffnen Sie ein Chart des Zielsymbols in einem beliebigen Zeitrahmen. Der Zeitrahmen bestimmt, aus welchem Balkentyp die Spread-Verteilung erfasst wird – H1 wird als sinnvoller Kompromiss zwischen Granularität und Länge der historischen Daten empfohlen.
  3. Ziehen Sie das Skript auf das Chart. Das Eingabedialogfeld wird angezeigt (gesteuert durch #property script_show_inputs). Stellen Sie „InpBars“ auf die gewünschte Anzahl von Stichproben ein und klicken Sie auf „OK“.
  4. Rufen Sie die CSV-Ausgabedatei aus dem Ordner „MQL5\Files\“ im Datenordner des Terminals ab (Datei → Datenordner öffnen in MetaTrader 5).

Integration mit Python

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}")

Hinweise zur Provision

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.

Warum p95 und nicht der Mittelwert

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.

Literaturhinweise und Begleitartikel

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/73173

Institutional Harmonic Volumetric Gravity Center 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 Close Profit Positions

Gewinnpositionen schließen

Accumulation/Distribution Accumulation/Distribution

Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.

Accelerator Oszillator (AC) Accelerator Oszillator (AC)

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.