Trendstrategie auf der Grundlage von Doppel-EMA- und AC-Indikatoren

Schriftsteller:ChaoZhang, Datum: 2024-01-15 12:02:54
Tags:

img

Übersicht

Diese Strategie basiert auf zwei EMA- und AC-Beschleunigungs-Oszillator-Indikatoren. Der Doppel-EMA-Indikator wird verwendet, um die Kurstrendrichtung zu bestimmen, während der AC-Indikator verwendet wird, um das Trendsignal zur Filterung zu bestätigen.

Strategie Logik

Die Strategie besteht aus zwei Modulen:

  1. Zweifache EMA-Module

    • Erstellen Sie einen doppelten EMA-Indikator mit 2-tägiger EMA und 20-tägiger EMA. Ein Kaufsignal wird generiert, wenn der Preis über die 2-tägige EMA geht. Ein Verkaufssignal wird generiert, wenn der Preis unter die 20-tägige EMA geht.

    • Dieses Modul ermittelt kurz- und mittelfristige Trendrichtungen für die Basisentwicklung.

  2. AC-Modul

    • Die positiven und negativen Werte des AC-Beschleunigungs-Oszillators werden verwendet, um Trendsignale zu bestätigen.

    • Dieses Modul filtert falsche Signale aus und verbessert die Zuverlässigkeit.

Zusammenfassend lässt sich sagen, dass diese Strategie eine doppelte EMA zur Erkennung großer Trends und einen AC-Indikator zur Filterung falscher Ausbrüche integriert, wodurch ein systematischer Trend nach Methodik gebildet wird.

Analyse der Vorteile

Die Vorteile dieser Strategie sind:

  1. Dual EMA verfolgt mittelfristige und langfristige Trends, während AC kurzfristige Geräusche ausfiltert.

  2. Ausgezeichnete Filterwirkung, um zu vermeiden, nach langem Gewinn zu verkaufen oder nach kurzem Gewinn zu kaufen.

  3. Flexible Parameteranpassung an verschiedene Produkte und Marktbedingungen.

  4. Klare Strategie-Logik, leicht zu verstehen, zu optimieren und zu verbessern.

  5. Nach dem Gewinnpotenzial für trendige Produkte eine anständige Entwicklung.

Risikoanalyse

Diese Strategie birgt einige Risiken:

  1. Eine unsachgemäße Einstellung der doppelten EMA-Parameter kann kürzere Trends übersehen oder überflüssige Trades erzeugen.

  2. Eine unsachgemäße Einstellung der Wechselstromparameter kann gültige, aber schwächere Signale ausfiltern oder nicht ausreichend Lärm filtern.

  3. Unfähig, sich an schnell wechselnde Märkte anzupassen, wie scharfe Abstürze.

  4. Unzureichende Rentabilität in unterschiedlichen Märkten sollte als Trendfolgestrategie verwendet werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Versuche mehr Parameterkombinationen, um optimale Parameter zu finden, die zu verschiedenen Produktmerkmalen passen.

  2. Hinzufügen eines Stop-Loss-Moduls, um bei übergroßen Verlusten auszusteigen.

  3. Filtern Sie Signale mit mehr Indikatoren.

  4. Entwickeln Sie lang-kurze Kombinationsstrategien, um mittel-langfristige Trends zu verfolgen, wobei kurzfristige Trades verwendet werden, um Positionen entlang des Trends zu reduzieren oder zu erweitern.

Schlussfolgerung

Die Idee der Kombination von doppelter EMA für Trend und AC für die Geräuschfilterung lohnt sich zu lernen. Diese Strategie hat Qualitätssignale und Zuverlässigkeit, die für die Verfolgung von Trendprodukten geeignet sind. Mit einer richtigen Parameter-Ausrichtung können große Gewinne erzielt werden, indem Trends mit dieser Strategie verfolgt werden.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/01/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

AC(nLengthSlow,nLengthFast) =>
    pos = 0.0
    xSMA1_hl2 = ta.sma(hl2, nLengthFast)
    xSMA2_hl2 = ta.sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    cClr = nRes > nRes[1] ? color.blue : color.red
    iff_1 = nRes > 0 ? 1 : nz(pos[1], 0)
    pos := nRes < 0 ? -1 : iff_1           
    pos

strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Accelerator Oscillator  ═════●'
nLengthSlow = input(33,  title="Length Slow", group=I2)
nLengthFast = input(6, title="Length Fast", group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)

StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosAC = AC(nLengthSlow,nLengthFast)
iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAC == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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