
Esta estrategia utiliza métodos de aprendizaje automático para implementar una estrategia de negociación automatizada de entrada en el mercado. Integra varios indicadores y modelos que pueden generar automáticamente señales de negociación y realizar operaciones de compra y venta en función de las señales.
La estrategia se basa principalmente en los siguientes puntos:
En concreto, la estrategia traza la línea media del casco, el EMA de 13 y el EMA de 21 ciclos. La dirección de la tendencia a corto y mediano plazo se determina a través de la posición vacía del EMA. La combinación de la línea media del casco con la dirección de la tendencia a períodos más largos proporciona una guía general para las señales de negociación posteriores.
Antes de ajustar la posición, la estrategia se refiere a los niveles de soporte y resistencia correspondientes a los precios más altos y más bajos en el canal de la entidad. Esto evita que se produzcan señales de negociación en áreas de precios clave.
Finalmente, la estrategia llama al precio de apertura y al precio de cierre de 60 ciclos, generando una señal de compra cuando el precio de cierre atraviesa el precio de apertura y una señal de venta cuando se atraviesa. Así se completa toda la lógica de la operación.
La mayor ventaja de esta estrategia reside en la combinación de indicadores de aprendizaje automático y análisis técnico para lograr un programa de comercio automatizado que sea lógicamente claro, parametrizado y fácil de operar.
La estrategia no depende simplemente de uno o dos indicadores, sino que tiene en cuenta una combinación de factores como tendencias, resistencia de soporte y brechas de precios, lo que mejora considerablemente la fiabilidad y la precisión de las señales.
La longitud de la línea media del casco, el número de ciclos EMA y el número de ciclos de apertura y cierre de la operación se pueden ajustar mediante parámetros, lo que permite que la estrategia se adapte de manera flexible a diferentes entornos del mercado.
Las señales de transacción basadas en indicadores y precios cruzados pueden activar automáticamente compras y ventas sin necesidad de juicio manual, lo que reduce la dificultad de la operación.
Los gráficos de la estrategia pueden mostrar claramente la estructura del mercado, el estado de las tendencias y los precios clave, mostrando de manera intuitiva la base de los juicios de la estrategia.
A pesar de la optimización multifacética de esta estrategia, existen algunos riesgos potenciales:
En situaciones de fuerte fluctuación de precios, los indicadores pueden fallar o retrasarse, lo que hace que la estrategia no pueda rastrear los cambios de precios a tiempo. Se necesitan parámetros optimizados para adaptarse a esta situación.
Basado en el indicador y el modelo de señales de negociación, más o menos habrá algunos errores o omisiones. Esto requiere mejorar la calidad de la señal mediante la combinación de más señales auxiliares.
La estrategia de hacer más deuda baja al mismo tiempo, si se hace un error, se corre el riesgo de pérdidas en ambos sentidos. Esto requiere un control estricto de la pérdida de corte o la reducción de la posición.
La configuración de los parámetros es demasiado compleja y corre el riesgo de ser optimizada. Esto requiere simplificar el sistema y controlar el número de combinaciones de parámetros.
Esta estrategia tiene cierto margen de mejora, principalmente en los siguientes aspectos:
Además de los indicadores existentes, se pueden introducir más indicadores auxiliares, como el canal BOLL, el indicador KD, etc., para enriquecer la base de juicio del sistema.
Utilice indicadores simples como características, entrenar modelos de aprendizaje profundo como LSTM para mejorar la calidad de la señal.
Añadir factores básicos como datos macroeconómicos, información sobre políticas y otros para optimizar la toma de decisiones en el ciclo macro.
Introducción de estrategias de stop loss, ajuste dinámico del tamaño de las posiciones de acuerdo con la volatilidad de las ganancias de la estrategia, y control estricto del riesgo.
Esta estrategia integra varios indicadores, como tendencias, resistencia de soporte y rupturas, para implementar un programa de comercio cuantitativo automático y inmediato utilizando métodos de aprendizaje automático. Tiene ventajas como la diversidad de la cartera de indicadores, la ajustabilidad de parámetros y la automatización de la señal, pero también enfrenta ciertos problemas como el seguimiento de la desviación, el error de la señal y el exceso de espacio MIX.
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)
//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")
//-----------------Support and Resistance
RST = input(title='Support / Resistance length:', defval=10)
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)
//--------------------Trend colour ema------------------------------------------------//
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0 ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)
//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0 ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)
//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")
//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
strategy.entry("SELL", strategy.short)
plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")
///////////////////////////////////////////////////////////////////////////////////////////