Estrategia de negociación de media móvil de doble casco

El autor:¿ Qué pasa?, Fecha: 2023-12-11 11:30:15
Las etiquetas:

img

Resumen general

La estrategia de trading de media móvil de doble casco es una estrategia de trading cuantitativa que utiliza la media móvil de doble casco como señales de trading.

Principios

En el núcleo de la estrategia de negociación de la media móvil de doble casco está la media móvil de doble casco (DHMA). La DHMA consta de tres líneas: rieles medios, superiores e inferiores, que representan diferentes valores de precio promedio.

En el caso de los vehículos de la categoría M1, el vehículo de la categoría M2 debe ser equipado con una unidad de control de velocidad.
Rejillo superior: casco [1] Bajo rieles: casco [1]

Aquí la función Mode puede elegir entre diferentes variantes de Hull MA como HMA, EHMA o THMA. Src significa la fuente de precios, y len es el parámetro de período.

La estrategia utiliza el carril medio del DHMA como referencia para determinar la relación de precios y generar señales comerciales:

  • Cuando el precio cruza por encima de la línea media, vaya largo.
  • Cuando el precio se cruza por debajo de la línea media, cierre la posición.

En otras palabras, si el precio de cierre de la barra actual está por encima del valor del carril medio, ir largo en la barra siguiente; si el precio de cierre está por debajo, cerrar la posición larga en la barra siguiente.

Ventajas

La estrategia de negociación de media móvil de doble casco tiene las siguientes ventajas:

  1. Utiliza un mecanismo de bandas triples en lugar de una sola línea de media móvil para mejores efectos de soporte/resistencia y seguimiento de tendencias.

  2. En comparación con las medias móviles comunes, las medias móviles de Hull tienen menos retraso y responden mejor a los cambios de precios.

  3. Adopta técnicas de análisis técnico tradicionales para una comprensión fácil, adecuado para el comercio de algo.

  4. La lógica es simple y clara, fácil de implementar, adecuada para el comercio algorítmico de alta frecuencia.

  5. Tipos y parámetros de MA de casco personalizables para la optimización en diferentes productos y plazos.

Los riesgos

Aunque la estrategia presenta muchos méritos, también presenta algunos riesgos:

  1. Los parámetros de ajuste fino para filtrar algunos intercambios de ruido.

  2. La estrategia sigue principalmente las tendencias, siendo menos eficaz durante los períodos de estabilidad.

  3. Los MAs de casco todavía tienen cierto grado de retraso, especialmente para plazos cortos.

  4. Las señales frecuentes pueden conducir a un exceso de operaciones.

Direcciones de optimización

A continuación se presentan algunos aspectos principales para optimizar la estrategia:

  1. Optimizar los tipos y parámetros de MA del casco para ajustar la sensibilidad del tren medio para diferentes productos.

  2. Añadir mecanismos de stop loss como stop de seguimiento o stop loss incremental para controlar el monto de la pérdida de una sola operación.

  3. Combinar con otros indicadores para determinar la dirección y la fuerza de la tendencia, evitando trampas, por ejemplo MACD, KD, etc.

  4. Añadir condiciones de activación de la estrategia basadas en el número de operaciones o la relación de ganancias para controlar el número de cierre de ciclo, reduciendo las salidas.

  5. Combinación de marcos de tiempo múltiples. Utilice TFs más altos para determinar la tendencia general para evitar el ruido.

  6. Refine la lógica de entrada y confirma las entradas con patrones de velas para mejorar la certeza de entrada.

Conclusión

En resumen, la estrategia de trading de media móvil de doble casco es un enfoque cuantitativo que utiliza la respuesta rápida, la tendencia siguiendo las medias móviles de casco para construir señales de trading. En comparación con los MA tradicionales, tiene una respuesta más rápida y mejores capacidades de seguimiento. La lógica de la estrategia es simple y clara, fácil de automatizar para el trading de algoritmos. Todavía hay riesgos de ruidos y tendencia siguiendo limitaciones.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na
      
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)


if HULL[0] > HULL[2] and testPeriod()
    strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
    strategy.close("long")

Más.