Strategie für einen doppelten gleitenden Durchschnitt in Kombination mit einem Stochastikindikator

Schriftsteller:ChaoZhang, Datum: 2024-01-12 11:16:52
Tags:

img

Übersicht

Dieser Artikel stellt eine quantitative Handelsstrategie vor, die die doppelte gleitende Durchschnittsstrategie und den stochastischen Indikator kombiniert.

Strategieprinzip

Die Strategie besteht aus zwei Teilen:

  1. Strategie für einen doppelten gleitenden Durchschnitt

    Die Verwendung von schnellen und langsamen gleitenden Durchschnitten, um goldenen Kreuz Kaufsignale und toten Kreuz verkaufen Signale zu generieren.

  2. Stochastischer Indikator

    Die Verwendung der Schwingungsmerkmale der Stochastik zur Identifizierung von Überkauf- und Überverkaufssituationen. Ein Stochastiker, der höher als die langsame Linie ist, zeigt ein Überkaufsignal an, während ein Stochastiker, der niedriger als die langsame Linie ist, ein Überverkaufsignal anzeigt.

Die beiden Signal-Teile werden kombiniert, um die endgültigen Handelssignale zu bilden.

Analyse der Vorteile

  • Kombiniert die Vorteile von Doppel gleitenden Durchschnitten und stochastischen, stabiler.
  • Bewegliche Durchschnittswerte für Trendfolgen, Stochastik für Bestätigung, gute Wirkung.
  • Anpassbare Parameter passen sich den unterschiedlichen Marktbedingungen an.

Risikoanalyse

  • Doppel gleitende Durchschnitte können leicht falsche Signale erzeugen.
  • Bei falschen Einstellungen der stochastischen Parameter können Trends verfehlt werden.
  • Die Parameter müssen an die Marktänderungen angepasst werden.

Die Risiken können durch Optimierung von Parameterkombinationen und durch Hinzufügen von Stop Loss zu Kontrollverlusten reduziert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Die Auswirkungen verschiedener gleitender Durchschnittsparameter auf die Strategie testen.
  2. Die Auswirkungen verschiedener stochastischer Parameter auf die Stabilität der Strategie testen.
  3. Hinzufügen von Trendfilterindikatoren, um die Gewinnrate zu verbessern.
  4. Erstellen Sie einen dynamischen Trailing Stop Loss Mechanismus zur Verlustkontrolle.

Zusammenfassung

Diese Strategie kombiniert die Vorteile von doppelten gleitenden Durchschnitten und Stochastik. Während sie den Hauptmarkttrend verfolgt, vermeiden sie ungünstige Umkehrungen. Bessere Strategieergebnisse können durch Parameteroptimierung erzielt werden. Das Hinzufügen von Stops und Trendfiltern kann die Strategie robuster machen.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/11/2020
// 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
// As the name suggests, High low bands are two bands surrounding the underlying’s 
// price. These bands are generated from the triangular moving averages calculated 
// from the underlying’s price. The triangular moving average is, in turn, shifted 
// up and down by a fixed percentage. The bands, thus formed, are termed as High 
// low bands. The main theme and concept of High low bands is based upon the triangular 
// moving average. 
//
// 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

    
HLB(Length, PercentShift) =>
    pos = 0.0
    xTMA = sma(sma(close, Length), Length)
    xHighBand = xTMA + (xTMA * PercentShift / 100)
    xLowBand = xTMA - (xTMA * PercentShift / 100)
    pos :=iff(close > xHighBand, 1,
           iff(close <xLowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_HLB = input(14, minval=1)
PercentShift = input(1, minval = 0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posHLB = HLB(Length_HLB, PercentShift)
pos = iff(posReversal123 == 1 and posHLB == 1 , 1,
	   iff(posReversal123 == -1 and posHLB == -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 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mehr