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.
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:
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.
La estrategia de negociación de media móvil de doble casco tiene las siguientes ventajas:
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.
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.
Adopta técnicas de análisis técnico tradicionales para una comprensión fácil, adecuado para el comercio de algo.
La lógica es simple y clara, fácil de implementar, adecuada para el comercio algorítmico de alta frecuencia.
Tipos y parámetros de MA de casco personalizables para la optimización en diferentes productos y plazos.
Aunque la estrategia presenta muchos méritos, también presenta algunos riesgos:
Los parámetros de ajuste fino para filtrar algunos intercambios de ruido.
La estrategia sigue principalmente las tendencias, siendo menos eficaz durante los períodos de estabilidad.
Los MAs de casco todavía tienen cierto grado de retraso, especialmente para plazos cortos.
Las señales frecuentes pueden conducir a un exceso de operaciones.
A continuación se presentan algunos aspectos principales para optimizar la estrategia:
Optimizar los tipos y parámetros de MA del casco para ajustar la sensibilidad del tren medio para diferentes productos.
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.
Combinar con otros indicadores para determinar la dirección y la fuerza de la tendencia, evitando trampas, por ejemplo MACD, KD, etc.
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.
Combinación de marcos de tiempo múltiples. Utilice TFs más altos para determinar la tendencia general para evitar el ruido.
Refine la lógica de entrada y confirma las entradas con patrones de velas para mejorar la certeza de entrada.
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")