La estrategia del Santo Grial es una estrategia de trading cuantitativa que combina un sistema de media móvil dual con el indicador ADX.
La estrategia utiliza tanto la media móvil exponencial de 20 días (EMA) como el indicador ADX para identificar oportunidades de entrada.
Cuando el valor del ADX esté por debajo de 30 (lo que indica una tendencia más débil) y el precio rompa la EMA de 20 días desde abajo, vaya largo;
Cuando el valor del ADX esté por encima de 30 (lo que indica una tendencia más fuerte), y el precio rompa la EMA de 20 días desde arriba, vaya corto.
Se puede ver que esta estrategia se basa en el ADX para juzgar la fuerza y la dirección de la tendencia, y luego combina el soporte y la resistencia del promedio móvil para buscar oportunidades de reversión.
La mayor ventaja de la estrategia del Santo Grial es que tiene en cuenta tanto la dirección como la fuerza de la tendencia, lo que puede evitar efectivamente las fallas y reducir la probabilidad de stop loss.
La estrategia del Santo Grial también tiene algunos riesgos, principalmente en las siguientes áreas:
Para reducir los riesgos anteriores, los parámetros se pueden ajustar para lograr el mejor efecto. También se puede establecer un stop loss para controlar pérdidas individuales. Además, también es necesario probar estrategias en diferentes variedades y ciclos.
Todavía hay muchas direcciones de optimización para la estrategia del Santo Grial:
El ajuste de parámetros o la adición de nuevos indicadores pueden aumentar la rentabilidad o la tasa de ganancia de la estrategia.
En resumen, la estrategia del Santo Grial combina las ventajas de las medias móviles dobles y el indicador ADX, y utiliza reglas comerciales claras para capturar las reversiones de tendencia. Tiene el potencial de funcionar bien. Sin embargo, los operadores aún necesitan optimizar las combinaciones de parámetros y las reglas de stop loss para adaptarse a diferentes entornos de mercado. Además, no importa cuán mejorado, es imposible evitar completamente el stop loss, que es un dilema que enfrenta cada estrategia de negociación.
/*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")