Estrategia de algoritmo de cruce dorado con doble EMA


Fecha de creación: 2024-01-22 11:04:41 Última modificación: 2024-01-22 11:04:41
Copiar: 0 Número de Visitas: 646
1
Seguir
1617
Seguidores

Estrategia de algoritmo de cruce dorado con doble EMA

Descripción general

Esta estrategia permite la generación de señales de comercio de cruce de oro y cruce de muerte mediante el cálculo de la intersección de la línea rápida EMA y la línea lenta EMA. Cuando la línea rápida EMA atraviesa la línea lenta EMA, genera una señal de compra. Cuando la línea rápida EMA atraviesa la línea lenta EMA, genera una señal de venta.

Principio de estrategia

El indicador central de esta estrategia es la línea EMA rápida y la línea EMA lenta. La estrategia se establece mediante la configuración de dos líneas EMA de diferentes parámetros, la línea EMA rápida se establece en 10 y la línea EMA lenta en 20. La línea EMA de 10 días responde más rápidamente a los cambios en los precios, mientras que la línea EMA de 20 días responde más lentamente.

Mediante el principio de cruce de las líneas de EMA rápidas y lentas, esta estrategia capta adecuadamente el momento de la transición de la tendencia del mercado y puede generar señales de negociación a tiempo. Al mismo tiempo, el indicador EMA en sí tiene la capacidad de filtrar falsas señales de fluctuación y evitar la apertura frecuente de posiciones en momentos de fluctuación del mercado. Esto permite a la estrategia capturar los puntos de inflexión del mercado y tener una mayor capacidad de rentabilidad al tiempo que reduce las operaciones erróneas.

Análisis de las ventajas

  • Utiliza el principio de cruce de EMA para capturar los puntos de inflexión del mercado, con una mayor rentabilidad
  • Las líneas EMA rápida y lenta se utilizan en conjunto para aprovechar sus ventajas
  • La propia EMA tiene un efecto de filtración que puede reducir los errores de transacción
  • Hacerlo simple, fácil de entender y optimizar
  • Escalable y optimizado para introducir otros indicadores auxiliares

Análisis de riesgos

  • Los cruces de doble EMA pueden generar frecuentes señales erróneas en ciudades convulsionadas
  • Los parámetros de la EMA mal configurados pueden perder el punto de inflexión del mercado
  • Hay un cierto retraso y se puede perder la oportunidad de operar en la línea corta.
  • La gente no puede hacer frente a los cambios drásticos.

Para los riesgos mencionados anteriormente, se puede optimizar mediante la introducción de indicadores adicionales, como aumentar las condiciones de filtración de las transacciones, evitar señales erróneas en combinación con los indicadores MACD, usar la velocidad de respuesta de los indicadores de aceleración de EMA de adaptación, etc. Además, también son necesarios los paros razonables y los paros activos.

Dirección de optimización

La estrategia puede optimizarse aún más en:

  • Aumentar los filtros de apertura de posiciones: por ejemplo, en combinación con el indicador de volumen de transacciones, para evitar falsos brechas de bajo volumen
  • Combinado con indicadores auxiliares como el MACD, para evitar más señales erróneas
  • Introducción de EMAs adaptables, que ajustan los parámetros de las EMAs de forma dinámica según las condiciones del mercado
  • Operaciones conjuntas en múltiples marcos de tiempo, aprovechando las ventajas de los EMA de diferentes períodos
  • Optimización de las estrategias de stop loss, bloqueo de ganancias por medio de movimiento de stop loss, stop loss porcentual, etc.
  • Optimización automática de parámetros en combinación con tecnologías como el aprendizaje profundo

Resumir

Esta estrategia utiliza el principio de cruce de líneas rápidas y lentas de dos EMA para capturar los puntos de inflexión clave del mercado y tiene un fuerte efecto en el mercado. En combinación con los indicadores auxiliares y la optimización del stop loss, se puede mejorar aún más la estabilidad de la estrategia. La idea de la estrategia es simple y clara, vale la pena que los comerciantes de cuantificación la aprendan y la utilicen, y tiene un gran espacio para la expansión y el potencial de optimización.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Backtest single EMA cross", overlay=true)

qty = input(100000, "Buy quantity")

testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? 
   #00FF00 : na
testPeriod() => true


ema1 = input(10, title="Select EMA 1")
ema2 = input(20, title="Select EMA 2")

expo = ema(close, ema1)
ma = ema(close, ema2)

avg_1 = avg(expo, ma)
s2 = cross(expo, ma) ? avg_1 : na
//plot(s2, style=plot.style_line, linewidth=3, color=color.red, transp=0)

p1 = plot(expo, color=#00FFFF, linewidth=2, transp=0)
p2 = plot(ma, color=color.orange, linewidth=2, transp=0)
fill(p1, p2, color=color.white, transp=80)

longCondition = crossover(expo, ma)

shortCondition = crossunder(expo, ma)


if testPeriod()
    strategy.entry("Long", strategy.long, when=longCondition)
    strategy.entry("Short", strategy.short, when=shortCondition)

plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.normal, location=location.belowbar, color = #1B8112, transp = 0)
plotshape(shortCondition, title = "Sell Signal", text ="SELL", textcolor = #FFFFFF, style=shape.labeldown, size = size.normal, location=location.abovebar, color = #FF5733, transp = 0)