
La stratégie de la Sainte Croix est une stratégie de trading quantitative qui combine un système bi-linéaire et un indicateur ADX. Elle vise à identifier la direction et l’intensité d’une tendance et à négocier en cas de revers.
La stratégie utilise à la fois l’indice des moyennes mobiles à 20 jours (EMA) et l’indice ADX pour identifier le moment de l’entrée. Plus précisément, elle émet un signal de transaction dans les deux cas suivants:
Faire plus lorsque l’ADX est inférieur à 30 (indiquant une tendance plus faible) et que le prix franchit l’EMA du 20e jour en dessous;
Lorsque la valeur de l’ADX est supérieure à 30 (indiquant une forte tendance) et que le prix franchit l’EMA du 20e jour par-dessus, le shorting est effectué.
On peut voir que la stratégie repose sur la force et la direction de la tendance déterminée par l’ADX, puis sur la résistance au support associée à la moyenne mobile pour rechercher des opportunités de revers.
Le plus grand avantage de la stratégie de la Sainte-Croix est qu’elle prend en compte à la fois la direction et la force de la tendance, ce qui permet d’éviter efficacement les fausses ruptures, réduisant ainsi la probabilité d’un arrêt de perte. Plus précisément, la stratégie présente les avantages suivants:
La stratégie de la Sainte-Croix comporte également des risques, principalement dans les domaines suivants:
Pour réduire les risques mentionnés ci-dessus, il est possible d’ajuster les combinaisons de paramètres pour obtenir des résultats optimaux, ou de mettre en place des arrêts de perte pour contrôler les pertes individuelles. De plus, il est nécessaire de faire retester la stratégie sur différentes variétés et périodes.
La stratégie de la Sainte-Croix a également de nombreux aspects à optimiser:
Les ajustements de paramètres ou l’ajout de nouveaux paramètres peuvent améliorer la rentabilité ou le taux de réussite d’une stratégie. Cependant, toute optimisation nécessite un retour d’expérience suffisant pour assurer sa stabilité.
Dans l’ensemble, la stratégie de la Sainte-Croix combine les avantages de la double ligne de parité et de l’indicateur ADX, et utilise des règles de négociation claires pour capturer les virages de tendance. Elle est prometteuse. Cependant, les traders doivent encore optimiser les combinaisons de paramètres et les règles de stop-loss pour s’adapter aux différentes conditions du 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")