Kombinationsstrategie für den doppelten gleitenden Durchschnitt und den Williams-Indikator


Erstellungsdatum: 2024-02-01 15:04:51 zuletzt geändert: 2024-02-01 15:04:51
Kopie: 0 Klicks: 520
1
konzentrieren Sie sich auf
1617
Anhänger

Kombinationsstrategie für den doppelten gleitenden Durchschnitt und den Williams-Indikator

Überblick

Die Strategie ist eine Kombination aus zwei unterschiedlichen Strategien, wobei die erste Strategie auf der Grundlage von doppelten Moving Averages über den Aktienpreis basiert, um ein Signal zu erzeugen. Die zweite Strategie basiert auf einem magischen Swing-Indikator im Williams-Index.

Strategieprinzip

Der erste Grundsatz der Strategie ist, dass ein Kaufsignal erzeugt wird, wenn der Schlusskurs gestern höher ist als der Schlusskurs des Vortages und der schnelle K-Linie 9-tägige Zufallsindikator niedriger ist als der schnelle D-Linie 3-tägige Zufallsindikator; ein Verkaufsignal erzeugt wird, wenn der Schlusskurs gestern niedriger ist als der Schlusskurs des Vortages und der schnelle K-Linie 9-tägige Zufallsindikator höher ist als der schnelle D-Linie 3-tägige Zufallsindikator.

Der zweite Grundsatz der Strategie besteht darin, die Differenz zwischen den Preisschwankungen an den 5 und 34 Tagen zu berechnen und einen Moving Average für diese Differenz zu berechnen.

Die Kombination der beiden Strategien führt zu einer Überschneidung der beiden Strategie-Signale. Wenn beide Strategien gleichzeitig ein Kaufsignal senden, machen Sie mehr; wenn beide Strategien gleichzeitig ein Verkaufssignal senden, machen Sie leer.

Analyse der Stärken

Die Strategie kombiniert die Vorteile der Dual Moving Average Strategie und der Williams Indicator Strategie. Die Dual Moving Average Strategie erfasst die mittleren und langen Trends, die Williams Indicator Strategie erfasst die kurzen Handelschancen. Die Kombination der beiden Strategien ermöglicht es, gleichzeitig Gewinne zu erzielen und falsche Durchbrüche zu verhindern.

Darüber hinaus verwendet die Strategie mehrere Parameter-Eingabe-Einstellungen, die für verschiedene Aktien und Marktsituationen optimiert werden können, um sich an ein breiteres Marktumfeld anzupassen.

Risikoanalyse

Das größte Risiko dieser Strategie besteht darin, dass die beiden Strategie-Signale möglicherweise nicht übereinstimmen. Wenn eine Strategie ein Kaufsignal sendet und die andere ein Verkaufsignal sendet, kann die Strategie kein wirksames Signal erzeugen und kann eine Handelsgelegenheit verpassen.

Darüber hinaus enthält die Strategie mehrere Parameter, was die Optimierung der Parameter erschwert. Unpassende Parameterkombinationen können zu einer schlechten Strategie führen.

Um das Risiko zu verringern, kann man überlegen, nur eines der Strategie-Signale zu verwenden; oder man kann untersuchen, um eine Reihe von Parametern zu ermitteln, die für verschiedene Marktumgebungen geeignet sind.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Beurteilung der Konsistenz von zwei Strategie-Signalen, Untersuchung der Signalübereinstimmung unter verschiedenen Parametern und Bestimmung der optimalen Kombination von Parametern.

  2. Testen Sie die Strategie für verschiedene Sorten und unter verschiedenen Zeitspannen, um die optimale Anwendbarkeit zu finden.

  3. Es kann in Erwägung gezogen werden, die doppelte Moving-Average-Strategie in andere Indikatoren wie den KDJ-Indikator umzuwandeln, um die Strategie zu bereichern.

  4. Erhöhung der Stop-Loss-Mechanismen, um Risiken zu kontrollieren, z. B. durch Festlegung eines maximalen Rücknahme-Stopp-Losses.

Zusammenfassen

Die Strategie kombiniert die Dual Moving Average Strategie und die Williams-Indikator-Strategie, wobei sowohl Trend-Tracking als auch Short-Line-Signal-Capture berücksichtigt werden. Durch die Optimierung von Parametern kann sie an ein breiteres Marktumfeld angepasst werden. Es besteht jedoch auch das Risiko, dass die Signalübereinstimmungen nicht übereinstimmen, und es gibt Schwierigkeiten bei der Optimierung von komplexen Parametern.

Strategiequellcode
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
//    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 make changes in the property for set calculating strategy MA, EMA, WMA
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) =>
    pos = 0
    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
    xResWMA = wma(nRes, nLengthWMA)
    xResMA = sma(nRes, nLengthMA)
    xResEMA = ema(nRes, nLengthEMA)
    xSignalSeries = iff(bShowWMA, xResWMA,
                     iff(bShowMA, xResMA, 
                      iff(bShowEMA, xResEMA, na)))
    cClr = nRes > nRes[1] ? blue : red
    pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1,
	         iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
nLengthMA = input(15, minval=1, title="MA")
nLengthEMA = input(15, minval=1, title="EMA")
nLengthWMA = input(15, minval=1, title="WMA")
bShowWMA = input(type=bool, defval=true, title="Show and trading WMA")
bShowMA = input(type=bool, defval=false, title="Show and trading MA")
bShowEMA = input(type=bool, defval=false, title="Show and trading EMA")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA)
pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAC == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? red: possig == 1 ? green : blue )