Kombinationsstrategie für die doppelte Trendumkehr mit gleitenden Durchschnitten


Erstellungsdatum: 2023-11-28 13:47:05 zuletzt geändert: 2023-11-28 13:47:05
Kopie: 0 Klicks: 578
1
konzentrieren Sie sich auf
1617
Anhänger

Kombinationsstrategie für die doppelte Trendumkehr mit gleitenden Durchschnitten

Überblick

Die Strategie ist eine Kombination aus einer Double Trend Reverse Moving Average Strategie. Sie kombiniert die 123 Reverse Strategie und die Bill Williams Average Strategie, um die Signale der beiden Strategien zu kombinieren, um ein genaueres Handelssignal zu erhalten.

Strategieprinzip

Die Strategie besteht aus zwei Teilen:

  1. 123 Umkehrstrategie: Wenn der Schlusskurs zwei Tage in Folge höher als der Schlusskurs des Vortages ist und die langsame K-Linie am neunten Tag unter 50 liegt, machen Sie einen Gewinn; wenn der Schlusskurs zwei Tage in Folge niedriger als der Schlusskurs des Vortages ist und die schnelle K-Linie am neunten Tag über 50 liegt, machen Sie einen Verlust.

  2. Die Bill Williams-Durchschnittsstrategie: Berechnen Sie die mittleren Moving Averages für 13, 8 und 5 Tage, indem Sie den mittleren und langen Moving Average über den kurzfristigen Moving Average und den mittleren und langen Moving Average unter dem kurzfristigen Moving Average durchschneiden.

Schließlich erzeugt ein tatsächliches Handelssignal, wenn die Signalrichtungen der beiden Strategien übereinstimmen, und kein Handel, wenn sie nicht übereinstimmen.

Analyse der Stärken

Diese Strategie, kombiniert mit doppelten Trendbeurteilungen, reduziert Falschsignale und erhöht die Signalgenauigkeit. Zusätzlich kann die Aufnahme von Moving Averages auch einen Teil des Rausches filtern.

Risikoanalyse

Die Risiken dieser Strategie sind:

  1. Doppelfilter-Signal könnte zu verpassten Handelschancen führen
  2. Eine falsche Kombination von Moving Averages kann dazu führen, dass Markttrends falsch beurteilt werden.
  3. Die Umkehrstrategie selbst birgt das Risiko von Verlusten.

Das Risiko kann durch Anpassung der Moving Average-Parameter oder Optimierung der Einstiegs- und Ausstiegslogik verringert werden.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Testen von Moving Average-Kombinationen mit verschiedenen Parametern, um die besten Parameter zu finden
  2. Steigerung der Stop-Loss-Strategie zur Vermeidung großer Verluste
  3. Synthetische Verkehrsmesswerte zur Identifizierung der Signalqualität
  4. Automatische Optimierung von Parametern mit Hilfe von maschinellen Lernverfahren

Zusammenfassen

Diese Strategie integriert doppelte Trendbeurteilung mit einem Moving Average-Indikator, um Geräuschsignale effektiv zu filtern und die Genauigkeit von Handelsentscheidungen zu verbessern. Es besteht jedoch ein gewisses Risiko, dass die Logik des Eintritts und Ausstiegs ständig getestet und optimiert werden muss, um die Gewinne im realen Markt zu stabilisieren.

Strategiequellcode
/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/06/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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 calculates 3 Moving Averages for default values of
// 13, 8 and 5 days, with displacement 8, 5 and 3 days: Median Price (High+Low/2).
// The most popular method of interpreting a moving average is to compare 
// the relationship between a moving average of the security's price with 
// the security's price itself (or between several moving averages).
//
// 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

BillWilliamsAverages(LLength, MLength,SLength, LOffset,MOffset, SOffset ) =>
    xLSma = sma(hl2, LLength)[LOffset]
    xMSma = sma(hl2, MLength)[MOffset]
    xSSma = sma(hl2, SLength)[SOffset]
    pos = 0
    pos := iff(close < xSSma and xSSma < xMSma and xMSma < xLSma, -1,
    	   iff(close > xSSma and xSSma > xMSma and xMSma > xLSma, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams Averages. 3Lines", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LLength = input(13, minval=1)
MLength = input(8,minval=1)
SLength = input(5,minval=1)
LOffset = input(8,minval=1)
MOffset = input(5,minval=1)
SOffset = input(3,minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAverages = BillWilliamsAverages(LLength, MLength,SLength, LOffset, MOffset, SOffset)
pos = iff(posReversal123 == 1 and posBillWilliamsAverages == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAverages == -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 )