Die Bedeutung der Normalisierung von Indikatoren im Trading

Mike 2008.11.20 16:03 17 0 0
Anhang

In der Welt des Tradings habe ich oft über die Effektivität von Oszillatoren nachgedacht. Dabei bin ich häufig auf das Thema der Normalisierung ihrer Werte gestoßen – konkret die Anpassung der Oszillationen eines Indikators an den Bereich von [-1;1]. Diese Technik eröffnet viele neue Möglichkeiten. Eine der einfachsten ist die Steuerung der Indikatorwerte durch konkrete Niveaus wie 0,5 oder 0,8, anstatt sich auf grobe Schätzwerte zu verlassen, die vom Markt abhängen.

Parameter:

string Indicator - der Indikator selbst, der anschließend an die Funktion icustom() übergeben wird. Leider reichen die Automatisierungstools von MQL4 nicht aus, um hier Standardindikatoren hinzuzufügen. Aber wer kann einen neugierigen Programmierer daran hindern, einen Eintrag im Programm zu ändern?
int mode - die Nummer der benötigten Zeile des ursprünglichen Indikators...
int param1
int param2 - und seine Parameter. Leider ist die Vorstellungskraft der MQL-Entwickler anscheinend nur dazu da, um Funktionen mit variabler Parameteranzahl (wie Print) zuzulassen und die Adressarithmetik zu unterstützen. Meiner Meinung nach wurde letzteres nur eingeführt, damit die normalen Benutzer sich unterlegen fühlen im Vergleich zu den Göttern :)). Lassen Sie uns also manuell arbeiten.

Bild:

Kommentare:

Die Berechnungen erfolgen in zwei Phasen:

1. Im Initialisierungsstadium (der init()-Funktion, falls das jemand nicht weiß:) wird das gesamte Array der Indikatordaten analysiert, um die charakteristische Periode zu berechnen, also den Zeitraum, innerhalb dessen der mittlere quadratische Wert des Indikators einen Einblick in den gesamten historischen MSV geben kann.

Um das zu erklären: Angenommen, wir haben einen Oszillator und haben seinen mittleren quadratischen Wert über mehrere aufeinanderfolgende Oszillationsperioden berechnet. Vereinbaren wir, dass es beispielsweise 3 Perioden geben muss (wie ich es definiert habe - #define PERIODS_CHARACTERISTIC 3; ich empfehle, nicht mehr zu verwenden, da sonst der Prozessor überlastet wird). Das Ziel der Berechnung besteht darin, zu bestimmen, wie viele Balken im Durchschnitt eine Periode lang sind (d.h. 2*durchschnittliches Intervall zwischen zwei Nullen des Indikators) und den erhaltenen Wert mit 3 zu multiplizieren.

2. Es bleibt, den MSV für jeden Balken (wie die Quadratwurzel der Varianz) über die erhaltenen drei Perioden zu berechnen, den Wert unseres Indikators darauf zu normalisieren und schließlich alles durch die Kompressorfunktion f(x)=tanh(x) (hyperbolischer Tangens, die Funktion musste ich selbst schreiben :)) in den dynamischen Bereich [-1;1] zu bringen.

Ein rein technisches Beispiel: Die grüne Linie im Bild ist mein sehr alter Oszillator, der die Marktaktivität charakterisiert (tatsächlich ist es dasselbe wie der MACD, jedoch basierend auf den Volumina). Die blaue Linie ist ebenfalls ein Oszillator, der bereits durch den -=Normalisierer=- verarbeitet wurde. Die Niveaus +-0,75, +-0,5, +-0,25 sind klar erkennbar, und man sieht auch, dass alle Maxima und Minima, die Bereiche des Anstiegs und Rückgangs sowie die Punkte des Überschreitens der Nulllinie ihre Positionen beibehalten.

Also, hier habt ihr es... Ich kann nichts dafür, wenn es jemandem nicht gefällt.

Liste
Kommentar 0