Este artículo presenta en detalle una estrategia de trading algorítmica a corto plazo que combina múltiples indicadores. Utiliza un grupo de poderosos indicadores técnicos para generar señales comerciales en marcos de tiempo más bajos como el gráfico de 15 minutos.
I. Lógica de la estrategia
El núcleo de esta estrategia consiste en utilizar una combinación de múltiples indicadores, que incluyen principalmente:
(1) Sistema doble de promedios móviles: Calcula una media móvil de casco rápida y una media móvil de casco lenta y juzga la tendencia en función de su cruce.
(2) Sistema Ichimoku: Calcula la conversión y las líneas base, entre otros, y determina la tendencia y los niveles de soporte / resistencia basados en la nube Ichimoku.
(3) Canal de Donchian: Construye un canal utilizando los precios más altos y más bajos para identificar las rupturas de precios.
(4) MACD: Calcula el MACD y la línea de señal, haciendo operaciones basadas en su cruce.
Sólo cuando estos indicadores lleguen a un consenso sobre el juicio de tendencia se generarán señales comerciales confiables.
Tomar posiciones largas cuando el Hull MA rápido cruce por encima del Hull MA lento, Y las líneas de Ichimoku cruzan por encima de la nube, Y el Canal de Donchian se rompe, Y el MACD cruza por encima de la línea de señal.
Los precios de cierre diarios de las barras también se incorporan para evitar quedar atrapados en las reversiones.
Además, la estrategia contiene una lógica de stop loss y take profit para controlar el riesgo y la recompensa para cada operación.
II. Ventajas de la Estrategia
La mayor ventaja de esta estrategia es la complementariedad de las combinaciones de indicadores, lo que mejora la calidad de la señal.
En segundo lugar, la combinación de múltiples marcos de tiempo también es una ventaja significativa: el juicio auxiliar de las barras diarias puede filtrar el riesgo de quedar atrapado en ciclos a corto plazo.
Por último, el mecanismo de stop loss y take profit también garantiza riesgos controlables por operación.
III. Riesgos potenciales
A pesar del buen diseño de la estrategia, también hay que tener en cuenta los riesgos comerciales:
En primer lugar, la combinación de múltiples indicadores aumenta la dificultad de optimización.
En segundo lugar, las pérdidas de parada pueden verse afectadas por movimientos de tendencia fuertes, lo que conduce a pérdidas innecesarias.
Por último, los juicios de varios marcos de tiempo también pueden introducir situaciones confusas que son difíciles de descifrar.
En general, la estrategia combina indicadores de manera científica y puede convertirse en un sistema de negociación algorítmica eficaz a corto plazo a través de pruebas y optimización de parámetros.
IV. Resumen
En resumen, este artículo ha introducido en detalle una estrategia de negociación algorítmica a corto plazo que combina múltiples indicadores. Utiliza una combinación de medias móviles duales, Ichimoku, Donchian Channel, MACD y más para mejorar la calidad de la señal. También utiliza análisis de marcos de tiempo múltiples y lógica de stop loss / take profit para controlar los riesgos. Con la optimización, esta estrategia puede convertirse en un sistema eficiente para la negociación sistemática a corto plazo.
/*backtest start: 2023-08-14 00:00:00 end: 2023-09-13 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend strategy("Custom 15m strat",overlay=true) keh=input(title="Double HullMA",defval=14, minval=1) dt = input(defval=0.0010, title="Decision Threshold (0.001)", step=0.0001)` SL = input(defval=-500.00, title="Stop Loss in $", step=1) TP = input(defval=25000.00, title="Target Point in $", step=1) ot=1 n2ma=2*wma(close,round(keh/2)) nma=wma(close,keh) diff=n2ma-nma sqn=round(sqrt(keh)) n2ma1=2*wma(close[1],round(keh/2)) nma1=wma(close[1],keh) diff1=n2ma1-nma1 sqn1=round(sqrt(keh)) n1=wma(diff,sqn) n2=wma(diff1,sqn) b=n1>n2?lime:red c=n1>n2?green:red d=n1>n2?red:green confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1]) conversionPeriods = input(9, minval=1, title="Conversion Line Periods") basePeriods = input(26, minval=1, title="Base Line Periods") laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods") displacement = input(26, minval=1, title="Displacement") donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) LS=close, offset = -displacement MACD_Length = input(9) MACD_fastLength = input(12) MACD_slowLength = input(26) MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength) //macd aMACD = ema(MACD, MACD_Length) //signal closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP if (closelong) strategy.close("Long") closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP if (closeshort) strategy.close("Short") longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD if (longCondition) strategy.entry("Long",strategy.long) shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD if (shortCondition) strategy.entry("Short",strategy.short) a1=plot(n1,color=c) a2=plot(n2,color=c) plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4) plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4) plot(conversionLine, color=#0496ff, title="Conversion Line") plot(baseLine, color=#991515, title="Base Line") //plot(longCondition == true ? 4000:4100,title="long") plot(close, offset = -displacement, color=#459915, title="Lagging Span") p1=plot (leadLine1, offset = displacement, color=green, title="Lead 1") p2=plot (leadLine2, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = leadLine1 > leadLine2 ? green : red) // remove the "//" from before the plot script if want to see the indicators on chart