Estrategia de negociación de aprendizaje automático

El autor:¿ Qué pasa?, fecha: 2024-01-29 11:20:42
Las etiquetas:

img

Resumen general

Esta estrategia utiliza métodos de aprendizaje automático para implementar una estrategia de negociación automatizada. Integra múltiples indicadores y modelos para generar automáticamente señales comerciales y tomar decisiones de compra y venta en consecuencia.

Principio de la estrategia

Esta estrategia se basa principalmente en los siguientes puntos clave:

  1. Utilice la media móvil de Hull para determinar la dirección de la tendencia del mercado
  2. Utilizar la EMA para juzgar las tendencias a corto y mediano plazo
  3. Utilice el canal del cuerpo de la vela para localizar los niveles clave de SUPORTO/RESISTENCIA
  4. Tomar decisiones basadas en el cruce entre los precios de apertura y cierre de los valores de varios marcos de tiempo

Específicamente, la estrategia trazará el Hull MA, el EMA de 13 períodos y el EMA de 21 períodos. Juzgando las direcciones de tendencia a corto y mediano plazo basadas en el estado largo y corto de los EMA. Combinado con el Hull MA para determinar las tendencias de ciclos más largos. Esto proporciona orientación sobre la dirección general para las señales comerciales posteriores.

Antes de ajustar las posiciones, la estrategia se referirá a los precios más altos y más bajos en el canal de la entidad correspondientes a los niveles de soporte y resistencia.

Finalmente, la estrategia invoca los precios de apertura y cierre de 60 períodos. Cuando el precio de cierre cruza por encima del precio de apertura, se genera una señal de compra. Cuando cruza por debajo, se genera una señal de venta. Esto completa toda la lógica comercial.

Análisis de ventajas

La mayor ventaja de esta estrategia es que combina los indicadores de aprendizaje automático y análisis técnico para lograr una solución de negociación automatizada lógica, ajustable y fácil de usar.

  1. La combinación de múltiples indicadores mejora la precisión de la señal

    La estrategia no se basa únicamente en uno o dos indicadores, sino que tiene en cuenta múltiples factores como tendencias, soporte / resistencia y avances de precios.

  2. Configuración de parámetros flexible

    Las longitudes de los períodos Hull MA, EMA y de los períodos de cruce abierto/cerrado pueden ajustarse mediante parámetros, lo que hace que la estrategia sea adaptable a diferentes entornos de mercado.

  3. Señales de negociación automatizadas

    Las señales comerciales basadas en indicadores y cruces pueden desencadenar automáticamente compras y ventas sin juicio manual, lo que reduce la dificultad.

  4. Display visualizado

    Los gráficos de la estrategia pueden mostrar claramente la estructura del mercado, el estado de la tendencia y los precios clave, mostrando intuitivamente la base para el juicio de la estrategia.

Análisis de riesgos

Aunque esta estrategia se ha optimizado en múltiples aspectos, todavía existen algunos riesgos potenciales:

  1. Incumplimiento del seguimiento de movimientos drásticos de precios

    En los mercados volátiles, los indicadores pueden volverse ineficaces o retrasados, lo que hace que la estrategia no pueda rastrear los cambios de precios en el tiempo.

  2. Existencia de una tasa de error de la señal

    Las señales comerciales basadas en indicadores y modelos, más o menos, tendrán algunas señales falsas o señales faltantes.

  3. El riesgo de combinación largo/corto

    La estrategia de hacer tanto posiciones largas como cortas simultáneamente tiene el riesgo de pérdidas en ambos lados si los juicios se equivocan.

  4. Riesgo de sobreajuste

    El sistema debe simplificarse con un número limitado de combinaciones de parámetros.

Direcciones de optimización

En este sentido, la Comisión propone una serie de medidas para mejorar la eficacia de la política comunitaria en materia de medio ambiente.

  1. Añadir más señales de indicador

    Además de los indicadores existentes, pueden introducirse más indicadores auxiliares, como canales BOLL, indicadores KD, etc., para enriquecer la referencia del sistema.

  2. Aplicar modelos de aprendizaje profundo

    Utilice indicadores simples como características para entrenar LSTM y otros modelos de aprendizaje profundo para mejorar la calidad de la señal.

  3. Incorporar datos fundamentales

    Añadir datos macroeconómicos, información sobre políticas y otros factores fundamentales para optimizar las decisiones de ciclo largo.

  4. Valoración del riesgo y de las posiciones

    Introducir estrategias de stop loss, ajustar dinámicamente el tamaño de las posiciones en función de la volatilidad de la estrategia de rendimiento para controlar estrictamente los riesgos.

Conclusión

Esta estrategia integra tendencias, niveles de soporte/resistencia, breakouts y múltiples otros indicadores, utilizando métodos de aprendizaje automático para lograr soluciones cuantitativas automatizadas y listas para usar. Tiene las ventajas de diversos combos de indicadores, parámetros sintonizables y señales automatizadas, al tiempo que también enfrenta desviaciones de seguimiento, errores de señal, riesgos de mezcla larga/corta hasta cierto punto. Todavía hay direcciones para nuevas optimizaciones mediante la incorporación de más indicadores y modelos auxiliares, la combinación de factores fundamentales, el ajuste dinámico de posiciones y así sucesivamente, con el fin de lograr un rendimiento de negociación cuantitativo más estable, preciso e inteligente.


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

///////////////////////////////////////////////////////////////////////////////////////////

Más.