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.
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.
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;
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.
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.
La stratégie du Saint Graal comporte également certains risques, principalement dans les domaines suivants:
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.
Il y a encore de nombreuses directions d'optimisation pour la stratégie du Saint Graal:
L'ajustement des paramètres ou l'ajout de nouveaux indicateurs peuvent augmenter la rentabilité ou le taux de gain de la stratégie.
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")