A estratégia do Santo Graal é uma estratégia quantitativa de negociação que combina um sistema de média móvel dupla com o indicador ADX.
A estratégia utiliza tanto a média móvel exponencial de 20 dias (EMA) quanto o indicador ADX para identificar oportunidades de entrada.
Quando o valor do ADX estiver abaixo de 30 (indicando uma tendência mais fraca) e o preço atravessar a EMA de 20 dias a partir de baixo, vá long;
Quando o valor do ADX estiver acima de 30 (indicando uma tendência mais forte), e o preço atravessar a EMA de 20 dias de cima, vá curto.
Pode-se ver que esta estratégia depende do ADX para julgar a força e direção da tendência, e, em seguida, combina o suporte e a resistência da média móvel para procurar oportunidades de reversão.
A maior vantagem da estratégia do Santo Graal é que ela leva em conta tanto a direção quanto a força da tendência, o que pode efetivamente evitar falhas e reduzir a probabilidade de stop loss.
A estratégia do Santo Graal também tem alguns riscos, principalmente nas seguintes áreas:
Para reduzir os riscos acima, os parâmetros podem ser ajustados para alcançar o melhor efeito. O stop loss também pode ser definido para controlar perdas individuais. Além disso, também é necessário testar estratégias em diferentes variedades e ciclos.
Ainda há muitas direções de otimização para a estratégia do Santo Graal:
Ajustar parâmetros ou adicionar novos indicadores pode aumentar a rentabilidade ou a taxa de vitória da estratégia.
Em resumo, a estratégia Holy Grail combina as vantagens das médias móveis duplas e do indicador ADX, e usa regras de negociação claras para capturar inversões de tendência. Ele tem o potencial de ter um bom desempenho. No entanto, os comerciantes ainda precisam otimizar combinações de parâmetros e regras de stop loss para se adaptar a diferentes ambientes de mercado. Além disso, não importa o quão melhorado, é impossível evitar completamente o stop loss, que é um dilema enfrentado por toda estratégia de negociação.
/*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")