La stratégie du Saint Graal

Auteur:ChaoZhang est là., Date: 2023-12-01 15h27 et 39 min
Les étiquettes:

img

La stratégie du Saint Graal

La stratégie du Saint Graal est une stratégie de trading quantitative qui combine un système de moyenne mobile double avec l'indicateur ADX. Elle vise à identifier la direction et la force de la tendance et à négocier lors d'inversions de tendance.

Principe de stratégie

La stratégie utilise à la fois la moyenne mobile exponentielle à 20 jours (EMA) et l'indicateur ADX pour identifier les opportunités d'entrée.

  1. Lorsque la valeur de l'ADX est inférieure à 30 (indiquant une tendance plus faible) et que le prix franchit l'EMA à 20 jours en dessous, passez à long;

  2. Lorsque la valeur de l'ADX est supérieure à 30 (indiquant une tendance plus forte) et que le prix franchit l'EMA à 20 jours par le haut, passez à la vente à découvert.

On peut voir que cette stratégie s'appuie sur l'ADX pour juger de la force et de la direction de la tendance, puis combine le support et la résistance de la moyenne mobile pour rechercher des opportunités d'inversion.

Analyse des avantages

Le plus grand avantage de la stratégie du Saint Graal est qu'elle prend en compte à la fois la direction et la force de la tendance, ce qui peut efficacement éviter de fausses ruptures et réduire la probabilité d'arrêt de perte.

  1. L'utilisation d'un double système de moyennes mobiles permet d'identifier efficacement les tendances;
  2. Avec l'aide de l'ADX pour évaluer la force de la tendance, les ruptures non valides peuvent être évitées;
  3. La combinaison des concepts de négociation de l' inversion et de la tendance peut à la fois capturer les tendances et inverser les points tournants;
  4. Les règles de fonctionnement sont claires et simples, faciles à mettre en œuvre.

Analyse des risques

La stratégie du Saint Graal comporte également certains risques, principalement dans les domaines suivants:

  1. L'ADX en tant qu'indicateur de jugement auxiliaire émettra également des signaux erronés;
  2. Les croisements de doubles moyennes mobiles ne peuvent pas éviter complètement les pertes causées par de petites remontées;
  3. Des paramètres mal réglés (tels que les valeurs cibles ADX, les périodes de moyenne mobile, etc.) peuvent entraîner des signaux trop fréquents ou conservateurs.

Pour réduire les risques ci-dessus, les paramètres peuvent être ajustés pour obtenir le meilleur effet. Stop loss peut également être réglé pour contrôler les pertes uniques. En outre, il est également nécessaire de tester des stratégies sur différentes variétés et cycles.

Directions d'optimisation

Il y a encore de nombreuses directions d'optimisation pour la stratégie du Saint Graal:

  1. Essayez différents types de moyennes mobiles, telles que les moyennes mobiles pondérées, etc.
  2. La valeur cible de l'ADX peut être optimisée en tant que paramètre;
  3. Des paramètres de cycle différents peuvent être testés, tels que l'EMA à 10 jours ou à 30 jours;
  4. D'autres indicateurs auxiliaires peuvent être ajoutés, tels que le RSI, les bandes de Bollinger, etc., pour confirmer les signaux de négociation.

L'ajustement des paramètres ou l'ajout de nouveaux indicateurs peuvent augmenter la rentabilité ou le taux de gain de la stratégie.

Résumé

En résumé, la stratégie du Saint Graal combine les avantages des moyennes mobiles doubles et de l'indicateur ADX, et utilise des règles de trading claires pour capturer les renversements de tendance. Elle a le potentiel de bien performer. Cependant, les traders doivent toujours optimiser les combinaisons de paramètres et les règles de stop loss pour s'adapter à différents environnements de marché.


/*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")
    


Plus de