Estrategia del Santo Grial

El autor:¿ Qué pasa?, Fecha: 2023-12-01 15:27:39
Las etiquetas:

img

Estrategia del Santo Grial

La estrategia del Santo Grial es una estrategia de trading cuantitativa que combina un sistema de media móvil dual con el indicador ADX.

Principio de la estrategia

La estrategia utiliza tanto la media móvil exponencial de 20 días (EMA) como el indicador ADX para identificar oportunidades de entrada.

  1. 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;

  2. 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.

Análisis de ventajas

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.

  1. El uso de un sistema dual de medias móviles permite identificar de manera eficaz las tendencias;
  2. Con la ayuda de ADX para evaluar la fuerza de la tendencia, se pueden evitar las rupturas no válidas;
  3. La combinación de los conceptos de inversión y de negociación de tendencias puede capturar tendencias e invertirlas en los puntos de inflexión;
  4. Las reglas de operación son claras y sencillas, fáciles de aplicar.

Análisis de riesgos

La estrategia del Santo Grial también tiene algunos riesgos, principalmente en las siguientes áreas:

  1. El ADX, como indicador de juicio auxiliar, también emitirá señales erróneas;
  2. Los cruces de medias móviles dobles no pueden evitar por completo las pérdidas causadas por pequeñas alzas.
  3. La configuración incorrecta de los parámetros (como los valores objetivo del ADX, los períodos de media móvil, etc.) puede hacer que las señales sean demasiado frecuentes o conservadoras.

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.

Direcciones de optimización

Todavía hay muchas direcciones de optimización para la estrategia del Santo Grial:

  1. Pruebe diferentes tipos de medias móviles, como las medias móviles ponderadas, etc.
  2. El valor objetivo de ADX puede optimizarse como parámetro;
  3. Se pueden probar diferentes parámetros del ciclo, como la EMA de 10 días y de 30 días;
  4. Se pueden añadir otros indicadores auxiliares, como el RSI, las bandas de Bollinger, etc., para confirmar las señales comerciales.

El ajuste de parámetros o la adición de nuevos indicadores pueden aumentar la rentabilidad o la tasa de ganancia de la estrategia.

Resumen de las actividades

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


Más.