AC-Backteststrategie des Williams-Indikators

Schriftsteller:ChaoZhang, Datum: 2023-12-18 12:03:38
Tags:

img

Übersicht

Diese Strategie basiert auf dem Awesome Oscillator (AO) im Williams-Indikator, der vom berühmten Händler Bill Williams entworfen wurde.

Grundsätze

Der Kernindikator dieser Strategie ist der Awesome Oscillator (AO), der als AO = SMA (Medianpreis, 5 Tage) - SMA (Medianpreis, 34 Tage) Bei dem der Medianpreis als (Höchster Preis + Niedrigster Preis) /2 definiert ist. Diese Formel extrahiert Preisdynamik-Informationen aus zwei SMAs des Medianpreises über verschiedene Zeiträume. Kaufsignale werden generiert, wenn der schnelle SMA (5 Tage) höher als der langsame SMA (34 Tage) ist, und Verkaufssignale werden generiert, wenn der schnelle SMA niedriger als der langsame SMA ist.

Um fehlerhafte Signale zu filtern, wird diese Strategie auch eine 5-tägige SMA-Operation auf AO angewendet. Ein Umkehrmodus wird bereitgestellt, bei dem die Umkehrung der Long/Short-Signale verschiedene Handelsrichtungen realisiert. Wenn der AO höher als der vorherige Wert ist, wird er als Kaufmöglichkeit angesehen und als blauer Balken markiert. Wenn der AO nicht höher als der vorherige Wert ist, wird er als Verkaufsmöglichkeit angesehen und als roter Balken markiert.

Vorteile

  1. Die Verwendung des Medianpreises anstelle des Schlusskurses verringert die Auswirkungen falscher Ausbrüche auf den SMA und verbessert die Stabilität
  2. Eine Kombination aus schneller und langsamer SMA erfasst Marktveränderungen sensibler
  3. Die doppelte SMA-Filterung beseitigt Hochfrequenzgeräusche und verbessert die Signalqualität
  4. Flexible Anpassung der Parameter an verschiedene Marktbedingungen
  5. Intuitive Baranzeige von Handelsplätzen für eine einfache Beurteilung der Geschäfte

Risiken und Lösungen

  1. Bewertet die Häufigkeit der Marktvolatilität vorsichtig, um eine Überanpassung durch Anpassung der Parameter zu vermeiden
  2. Es können mehrere fehlerhafte Operationen auf schwindelnden Märkten auftreten.
  3. Unzuverlässige Backtestdaten, tatsächliche Leistung kann von Simulationen abweichen.

Optimierungsrichtlinien

  1. Erhöhung der Filter wie Handelsvolumen zur Verbesserung der Signalqualität
  2. Einbeziehung von Stop-Loss-Strategien zur Kontrolle einzelner Betriebsverluste
  3. Optimierung der Positionsverwaltung, Erhöhung oder Verringerung der Positionen je nach Marktvolatilität
  4. Kombination anderer Indikatoren zur Bestimmung der Trendrichtung zur Verhinderung von Schwingungsumkehrungen

Schlussfolgerung

Diese Strategie nutzt den Awesome Oscillator, der mit einer schnellen und langsamen Medianpreis-SMA-Struktur entwickelt wurde, um Marktdynamikveränderungen mit intuitiven und klaren Handelssignalen zu diagnostizieren.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/12/2016
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy("Bill Williams. Awesome Oscillator (AC)")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
reverse = input(false, title="Trade reverse")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes =  xSMA1_SMA2 - xSMA_hl2
cClr = nRes > nRes[1] ? blue : red
pos = iff(nRes > nRes[1], 1,
	   iff(nRes < nRes[1], -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nRes, style=histogram, linewidth=1, color=cClr)

Mehr