
EdgeMeter beantwortet eine Frage zu jedem Einstiegssignal:
Bringt dieses Signal nach Abzug der Transaktionskosten Gewinn?
Es gibt keine Orders auf. Es wertet die Historie aus, bewertet Ihr Signal für jeden abgeschlossenen
Balken und gibt ein Ergebnis aus.
WARUM ICH ES GESCHRIEBEN HABE
Ich habe einen Monat damit verbracht, einen Grid-EA für XAUUSD M1 zu entwickeln. Ich habe den Stop-Loss festgelegt,
eine variable Verlustbegrenzung, einen Reversal-Ausstieg und eine maximale Basket-Laufzeit hinzu. Es verlor immer wieder.
Als ich schließlich das EINSTIEGS-Signal für sich allein untersuchte, dauerte es dreißig
Sekunden:
Durchschnittliche Kursbewegung nach dem Signal, 15 Min.: +0,04
gezahlter Spread pro Round Turn: 0,26
Keine Ausstiegslogik kann das wieder gutmachen. Das Geld ging bereits beim Einstieg verloren, und jede Stunde, die ich
mit Ausstiegen verbrachte, war verschwendet. Genau das soll dieses Skript verhindern.
WAS ES AUSWEIST
Für jeden von Ihnen festgelegten Haltedauer:
- Brutto-Edge: die durchschnittliche positive Kursbewegung nach dem Signal
- Nettoergebnis nach Kosten, simuliert für jeweils eine Position
- T-Statistik, berechnet auf der Grundlage von NICHT ÜBERLAPPENDEN Trades
- Anteil der profitablen Monate
- maximaler Drawdown
Anschließend wird dieselbe Messung an einer ZUFALLSKONTROLLE durchgeführt: gleiche Auslösehäufigkeit,
Richtung wie beim Münzwurf. Ein zufälliger Einstieg muss genau die Transaktionskosten verlieren,
nicht mehr und nicht weniger. Dies bewirkt zweierlei: Es beweist, dass der Simulator korrekt ist,
und liefert Ihnen die Grundrauschgrenze. Wenn Ihr Signal diese
Zeilen deutlich übertrifft, enthält es keine Informationen.
DIE ÜBERLAPPUNGSFALLE
Das ist der Teil, der mir Probleme bereitet hat – und den meisten anderen auch.
Aufeinanderfolgende Signale teilen sich den größten Teil ihres Vorwärtsfensters. Ein 60-Takt-Horizont,
, der bei jedem Bar abgetastet wird, liefert Fenster, die sich auf 59 Arten überlappen. Behandelt man sie als
unabhängig betrachtet, wird die t-Statistik um etwa die Quadratwurzel des Horizonts aufgebläht.
Mein eigenes Signal ergab auf diese Weise t = 3,32, was überzeugend aussieht. Bei wirklich
unabhängigen Stichproben lag der Wert bei t = 1,20 – nicht von Rauschen zu unterscheiden. EdgeMeter
simuliert jeweils nur eine Position, sodass sich die gemeldeten Trades nicht überschneiden und
die t-Statistik ist authentisch.
ERFÜLLUNG DER KRITERIEN
Das Skript prüft drei Kriterien, die alle erfüllt sein müssen:
[1] Nettogewinn pro Trade > 0 nach Abzug der Kosten
[2] |t| > 2
[3] Mindestens 3 profitable Monate von 4
Legen Sie Ihre Kriterien fest, bevor Sie sich die Zahlen ansehen. Eine Entscheidung im Nachhinein ist
dazu, dass ein verlustreiches System auf ein Live-Konto übertragen wird.
SO TESTEN SIE IHR EIGENES SIGNAL
Öffnen Sie die Datei und bearbeiten Sie zwei Funktionen im USER-ABSCHNITT. Sonst muss nichts
geändert werden.
bool UserInit() – Erstellen Sie Ihre Indikator-Handles und laden Sie deren
Puffer mit LoadBuffer() / LoadBufferB()
int UserSignal(int i) – werten Sie den geschlossenen Balken i aus
Geben Sie +1 für „Kaufen“, -1 für „Verkaufen“ und 0 für „Tätig werden“ zurück
Alle Arrays sind indiziert: 0 = ältester Bar. Dies ist das Gegenteil der üblichen
Reihenindizierung, und das ist beabsichtigt: Ein Rückgabewert nach vorne ist dann einfach
Index + Horizont, wodurch eine ganze Klasse von Vorzeichenfehlern vermieden wird.
Der Einstieg wird bei „Open(i+1)“, dem nächsten Balken, simuliert. Lies niemals den Balken i+1 oder spätere
innerhalb von `UserSignal` – das ist eine Vorausschauverzerrung, und sie lässt ein wertloses
Signal brillant erscheinen lässt.
Das Standard-UserSignal ist ein Crossover zweier gleitender Durchschnitte, das als
Beispiel beibehalten. Ersetzen Sie es.
EINSTELLUNG DER KOSTEN
„InpSpread“, „InpCommission“ und „InpSlippage“ sind in PREIS-Einheiten angegeben, nicht in Punkten, und
sie sind die wichtigsten Eingabewerte im Skript. Entnehmen Sie sie Ihrem eigenen
Konto ab, nicht aus den von einem Broker angegebenen Zahlen.
Wenn Sie über ein Ausführungsprotokoll aus dem Live- oder Demo-Handel verfügen, verwenden Sie den gemessenen
Durchschnitt. Falls nicht, nehmen Sie den typischen Spread, den Sie auf dem Chart sehen, und addieren Sie
eine Slippage-Toleranz hinzu, anstatt von Null auszugehen. Ein Demo-Server meldet
eine Slippage nahe Null an; das ist eine Eigenschaft des Demoservers, nicht des Marktes.
VORAUSSETZUNGEN
Laden Sie vor der Ausführung genügend historische Daten: Öffnen Sie ein Chart für Ihr Wertpapier und
Zeitrahmen und scrollen Sie ganz nach links. Das Skript wird Sie informieren, falls nicht
ausreichend Daten vorhanden sind. Bei weniger als 30 Signalen sind alle Ergebnisse nur Anekdoten und keine Belege.
Kostenlos nutzbar und veränderbar.