Die Strategie des Heiligen Grals

Schriftsteller:ChaoZhang, Datum: 2023-12-01 15:27:39
Tags:

img

Die Strategie des Heiligen Grals

Die Holy Grail-Strategie ist eine quantitative Handelsstrategie, die ein duales gleitendes Durchschnittssystem mit dem ADX-Indikator kombiniert.

Strategieprinzip

Die Strategie verwendet sowohl den 20-Tage-Exponential Moving Average (EMA) als auch den ADX-Indikator, um Einstiegsmöglichkeiten zu identifizieren.

  1. Wenn der ADX-Wert unter 30 liegt (was auf einen schwächeren Trend hinweist) und der Kurs die 20-Tage-EMA von unten durchbricht, geht man lang;

  2. Wenn der ADX-Wert über 30 liegt (was auf einen stärkeren Trend hinweist) und der Kurs von oben durch die 20-Tage-EMA bricht, gehen Sie kurz.

Diese Strategie setzt auf den ADX, um die Stärke und Richtung des Trends zu beurteilen, und kombiniert dann die Unterstützung und den Widerstand des gleitenden Durchschnitts, um nach Umkehrmöglichkeiten zu suchen.

Analyse der Vorteile

Der größte Vorteil der Holy Grail-Strategie besteht darin, dass sowohl die Richtung als auch die Stärke des Trends berücksichtigt werden, wodurch falsche Ausbrüche effektiv vermieden und die Wahrscheinlichkeit eines Stop-Loss reduziert werden können.

  1. Durch die Verwendung eines doppelten gleitenden Durchschnittssystems können Trends wirksam ermittelt werden.
  2. Mit Hilfe von ADX zur Bewertung der Stärke des Trends können ungültige Ausbrüche vermieden werden;
  3. Die Kombination von Umkehr- und Trendhandelskonzepten kann sowohl Trends erfassen als auch an Wendepunkten umkehren;
  4. Die Betriebsregeln sind klar und einfach, leicht umzusetzen.

Risikoanalyse

Die Heilige Gral-Strategie birgt auch einige Risiken, hauptsächlich in folgenden Bereichen:

  1. ADX als Hilfsbeurteilungsindikator wird ebenfalls falsche Signale auslösen;
  2. Crossovers von doppelten gleitenden Durchschnitten können Verluste durch kleine Rallyes nicht vollständig vermeiden;
  3. Bei falschen Parameter-Einstellungen (z. B. ADX-Zielwerte, gleitende Durchschnittsperioden usw.) können die Signale zu häufig oder konservativ sein.

Um die oben genannten Risiken zu reduzieren, können Parameter angepasst werden, um den besten Effekt zu erzielen. Stop-Loss kann auch eingestellt werden, um einzelne Verluste zu kontrollieren. Darüber hinaus ist es auch notwendig, Strategien auf verschiedenen Sorten und Zyklen zu testen.

Optimierungsrichtlinien

Es gibt noch viele Optimierungsrichtungen für die Heilige Gral-Strategie:

  1. Versuchen Sie verschiedene Arten von gleitenden Durchschnitten, z. B. gewichtete gleitende Durchschnitte usw.
  2. Der ADX-Zielwert kann als Parameter optimiert werden.
  3. Verschiedene Zyklusparameter können getestet werden, z. B. 10-Tage- oder 30-Tage-EMA;
  4. Andere Hilfsindikatoren können hinzugefügt werden, wie RSI, Bollinger Bands usw., um Handelssignale zu bestätigen.

Die Anpassung von Parametern oder das Hinzufügen neuer Indikatoren kann die Rentabilität oder Gewinnrate der Strategie erhöhen.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass die Holy Grail-Strategie die Vorteile von doppelten gleitenden Durchschnitten und dem ADX-Indikator kombiniert und klare Handelsregeln verwendet, um Trendumkehrungen zu erfassen. Sie hat das Potenzial, gut zu funktionieren. Trader müssen jedoch immer noch Parameterkombinationen und Stop-Loss-Regeln optimieren, um sich an verschiedene Marktumgebungen anzupassen. Darüber hinaus ist es unmöglich, Stop-Loss vollständig zu vermeiden, was ein Dilemma für jede Handelsstrategie ist.


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

//@version=3
strategy("LAT Holy Grail v3", overlay=true)

/////////////TEST TIME ////////////////////////
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(15, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2018, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
//////////////////////////////////////////////////////////////////////

myema= ema(close, 20)
plot(myema, color=green, title="eMA", linewidth=3)



//longCondition = (crossover(close, myema)) //and adx3 < target
//if (longCondition)
    //strategy.entry("My Long Entry Id", strategy.long)

//shortCondition = (crossunder(close, myema)) //and adx3 > target
//if (shortCondition)
    //strategy.entry("My Short Entry Id", strategy.short)
    
    //////////////////////////////////////////////////////////
    ///////////////////////////////////////   DMI  ///////////////////////////////////////////////
len3 = input(14, minval=1, title="DI Length")                           /////////////////////
lensig3 = input(14, title="ADX Smoothing", minval=1, maxval=50)         ////////////////////
up3 = change(high)                                                      ///////////////////
down3 = -change(low)                                                    //////////////////
plusDM3 = na(up3) ? na : (up3 > down3 and up3 > 0 ? up3 : 0)            /////////////////
minusDM3 = na(down3) ? na : (down3 > up3 and down3 > 0 ? down3 : 0)     ////////////////
trur3 = rma(tr, len3)                                                   ///////////////
plus3 = fixnan(100 * rma(plusDM3, len3) / trur3)                        //////////////
minus3 = fixnan(100 * rma(minusDM3, len3) / trur3)                      /////////////
sum3 = plus3 + minus3                                                   ////////////
adx3 = 100 * rma(abs(plus3 - minus3) / (sum3 == 0 ? 1 : sum3), lensig3) ///////////
//plot(plus3, color=green, style=circles, linewidth=2, title="+DI")     //////////
//plot(minus3, color=red, style=circles, linewidth=2, title="-DI")      /////////
plot(adx3, color=aqua, style=line, linewidth=3, title="ADX")            ////////
target = input(30, title=" ADX Target Line")                            ///////
plot(target, color=yellow, title="ADX Target Line")                     //////
/////////////////////////////////////////////////////////////////////////////////////////////////
                                                                                        
plot(hl2)


///////////////////////////////////////////////  eMA SIGNAL LINE   ///////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////// HOLY GRAIL STRATEGY ///////////////////////////////////////////////////////////////////

if (adx3 <= target) and crossover(close, myema)
    strategy.entry("HolyGrail", strategy.long, comment="Long")
 
if (adx3 >= target) and crossunder(close, myema)
    strategy.entry("HolyGrail", strategy.short, comment="Short")
    


Mehr