Diese Strategie basiert auf dem Crossover von langfristigen und kurzfristigen gleitenden Durchschnitten des Handelsvolumens. Sie verwendet EMAs verschiedener Perioden, um die langfristigen und kurzfristigen Trends des Handelsvolumens zu berechnen, und konstruiert einen Oszillator auf der Grundlage ihrer Differenz.
Der Kernindikator dieser Strategie ist der Volumen-Oszillator. Er spiegelt den Trend der Handelsvolumenänderung durch Berechnung der Differenz zwischen langfristigen und kurzfristigen exponentiellen gleitenden Durchschnitten wider.
Volumen-Oszillator = (ShortEMA - LongEMA) / LongEMA * 100
Hier beziehen sich ShortEMA und LongEMA auf kurzfristige und langfristige EMAs. Wenn ShortEMA über LongEMA überschreitet, wird der Indikator positiv, was auf ein wachsendes Handelsvolumen hindeutet. Wenn ShortEMA unter LongEMA überschreitet, wird der Indikator negativ, was auf ein sinkendes Handelsvolumen hindeutet.
Nach der Berechnung des Oszillators verwendet diese Strategie ihren Crossover mit dem Null-Level, um Handelssignale zu generieren. Es geht lang, wenn der Oszillator von negativ auf positiv wechselt, d.h. über Null-Level überschreitet, und kurz, wenn er von positiv auf negativ wechselt, d.h. unter Null-Level überschreitet. Dies spiegelt die Dynamikkonvertierung des Handelsvolumens wider.
Darüber hinaus beinhaltet die Strategie auch frühere Hoch- und Tiefpreise, um spezifische Richtungen zu bestimmen. Das heißt, wenn der Oszillator über den Null-Level geht, wenn der vorherige Hochpreis größer ist als der absolute Wert des vorherigen Tiefpreises, impliziert dies ein langes Signal, andernfalls ein kurzes Signal. Dieses Merkmal hilft, die Stärke der Volumenerweiterung zu beurteilen.
Diese Strategie hat folgende Vorteile:
Die Verwendung des Handelsvolumens als Basisindikator kann die Bereitschaft der Marktteilnehmer effektiv bestimmen und ist sehr praktisch.
Durch die Einbeziehung sowohl langfristiger als auch kurzfristiger EMAs können mittelfristige Trends und kurzfristige Impulse gleichzeitig erfasst werden.
Die Kreuzungssignale, die durch Indikator und Nullstufe gebildet werden, sind für die Entscheidungsfindung einfach und klar.
Durch das Hinzufügen früherer Höchst- und Tiefstände zur Bestimmung von Richtungen kann die Dynamikgröße der Handelsvolumina gut genutzt werden.
Die Strategielogik ist einfach, die Parameter sind flexibel anpassbar und die Anpassungsfähigkeit ist relativ hoch.
Einige Risiken dieser Strategie sind zu beachten:
Der Volumenindikator kann durch falsche Marktausbrüche beeinflusst werden, die falsche Signale erzeugen.
In den Märkten mit Bandbreiten können Volumenüberschreitungen häufig auftreten.
Vorherige Höhen und Tiefen spiegeln nur die jüngste Expansion wider und können ihre Nachhaltigkeit nicht bestimmen.
Parameter müssen für verschiedene Produkte und Zeiträume getrennt optimiert werden.
Der Volumenindikator reagiert langsam auf hochfrequenten algorithmischen Handel und verpasst möglicherweise den besten Einstiegszeitpunkt.
Die Strategie kann in folgenden Aspekten optimiert werden:
Hinzufügen von Filtern, um falsche Signale zu vermeiden, z. B. Bestätigung mit Preisindikatoren.
Optimierung der Perioden der langfristigen und kurzfristigen EMA, um die Merkmale der verschiedenen Produkte abzugleichen.
Festlegung von Periodenparametern für frühere Höchst- und Tiefstpreise, um die Höchst- und Mindestpreise einer Periode zu verwenden.
Definition eines Bereichs für den Wendebereich des Indikators anstelle eines einzigen Niveaus, um Überhandelungen zu vermeiden.
Hinzufügen von Stop-Loss-Strategien zur Kontrolle einzelner Verluste.
Einbeziehung anderer volumebasierter Indikatoren wie VRP.
Die Verwendung von Methoden des maschinellen Lernens zur automatischen Optimierung von Parametern.
Zusammenfassend lässt sich sagen, dass die Volumen-Oszillator-Lange-Kurzzeit-Bewegliche Durchschnitts-Crossover-Strategie die Volumen-Umkehrfunktionen gut nutzt und in der Anfangsphase der Trends eine starke Beurteilungskraft hat.
/*backtest start: 2022-12-05 00:00:00 end: 2023-03-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("SB_Volume_oscillator_Prev_high_low", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) shortlen = input(5, minval=1) longlen = input(10, minval=1) short = ema(volume, shortlen) long = ema(volume, longlen) osc = 100 * (short - long) / long //hline(0, title="Zero") //plot(osc) zero=input(0.0) low_val=input(0.0) high_val=input(0.0) prev_high_val=input(0.0) prev_low_val=input(0.0) where=input(0) where:=nz(where[1]) low_val:=nz(low_val[1]) high_val:=nz(high_val[1]) prev_high_val:=nz(prev_high_val[1]) prev_low_val:=nz(prev_low_val[1]) if(crossover(osc,zero)) high_val:=osc where:=1 prev_low_val:=low_val low_val:=osc if(crossunder(osc,zero)) low_val:=osc where:=-1 prev_high_val:=high_val high_val:=osc if(where==1) if(high_val<osc) high_val:=osc if(where==-1) if(low_val>osc) low_val:=osc if (crossover(osc,zero)) if(prev_high_val<=abs(prev_low_val)) strategy.entry("My Long Entry Id", strategy.long) if(prev_high_val>abs(prev_low_val)) strategy.entry("My Short Entry Id", strategy.short) if (crossunder(osc,zero)) if(prev_high_val<=abs(prev_low_val)) strategy.entry("My Long Entry Id", strategy.long) if(prev_high_val>abs(prev_low_val)) strategy.entry("My Short Entry Id", strategy.short)