La estrategia de cruce de SMA Ichimoku es una estrategia comercial común. Esta estrategia utiliza los principios de cruz de oro y cruz muerta de los promedios móviles, combinados con la nube de Ichimoku y el promedio móvil suave de SMA, para formar un sistema comercial relativamente completo. Esta estrategia puede abrir y cerrar posiciones de acciones automáticamente.
Esta estrategia evalúa principalmente la compra y venta de acciones mediante la comparación entre la línea de conversión y la línea de base del indicador Ichimoku y los cruces de las medias móviles SMA a corto y largo plazo.
Específicamente, el código define la línea de conversión, la línea base, el intervalo 1 y el intervalo 2 del indicador Ichimoku. Al mismo tiempo, se definen la media móvil SMA a largo plazo ma1 y la media móvil SMA a corto plazo ma2.
Cuando se juzga para comprar, la línea de conversión debe ser inferior a la línea base, y el promedio móvil a corto plazo inferior al promedio móvil a largo plazo, es decir, se produce una cruz de oro.
Cuando se juzga la venta, la línea de conversión debe ser superior a la línea de base y el promedio móvil a corto plazo superior al promedio móvil a largo plazo, es decir, se produce una cruz muerta.
Además, el código también define algunas condiciones auxiliares, como el precio de cierre más alto que el día anterior, y utilizando la diferencia y la división de los valores de la media móvil para juzgar la pendiente.
Esta estrategia combina las ventajas de múltiples indicadores técnicos y tiene las siguientes ventajas:
La nube de Ichimoku en sí misma contiene juicio de tendencia, combinado con promedios móviles SMA puede formar un juicio de tendencia poderoso.
Las medias móviles SMA pueden determinar las tendencias y el impulso de los precios.
La adición de un juicio sobre el precio de cierre puede evitar la apertura y cierre innecesarias de posiciones.
El cálculo de la pendiente de la media móvil aumenta el juicio sobre el impulso de los cruces de la media móvil y puede filtrar los cruces falsos.
En general, esta estrategia tiene un juicio de tendencia relativamente preciso, puede reducir el comercio innecesario y tiene algo de espacio para la optimización.
Esta estrategia también tiene algunos riesgos:
Tanto Ichimoku como SMA pueden retrasarse y no reflejar los cambios de precios en el tiempo.
La combinación de múltiples condiciones aumenta la complejidad y la probabilidad de errores.
La estrategia se basa únicamente en indicadores técnicos y no puede juzgar el impacto de las principales noticias.
La estrategia no establece condiciones de stop loss, con el riesgo de que las pérdidas aumenten.
La estrategia no tiene en cuenta condiciones especiales del mercado como la consolidación.
La configuración incorrecta de los parámetros también puede afectar el rendimiento de la estrategia.
Esta estrategia puede optimizarse en los siguientes aspectos:
Establecer las condiciones de stop loss para detener automáticamente las pérdidas cuando las pérdidas aumentan.
Aumentar el juicio sobre los principales acontecimientos de noticias para evitar su impacto.
Aumentar el juicio sobre las condiciones especiales del mercado, como aumentar el rango de negociación o ajustar los parámetros.
Prueba y optimiza las combinaciones de parámetros para encontrar parámetros óptimos.
Introducir algoritmos de aprendizaje automático para la optimización de parámetros y el juicio del mercado.
Agregue indicadores de impulso para evitar errores.
Combine más elementos fundamentales como los cambios en el volumen.
En resumen, esta estrategia de cruce de SMA Ichimoku integra las ventajas de los promedios móviles de Ichimoku y SMA para formar una estrategia de negociación de acciones relativamente completa. Esta estrategia tiene una fuerte capacidad para determinar tendencias y puede capturar eficazmente las oportunidades de tendencia. Pero también hay problemas como retraso, alta complejidad, falta de stop loss. Esto da un gran margen para optimizar esta estrategia. Al establecer stop loss, juzgar los principales eventos de noticias, optimizar parámetros y más, esta estrategia se puede mejorar continuamente para convertirse en una estrategia de negociación cuantitativa estable y confiable.
/*backtest start: 2023-09-15 00:00:00 end: 2023-10-15 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // strategy("Ichimoku+SMAsmoothed", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) // 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") SMA1=input(title="SMA LONG",defval=21) SMA2=input(title="SMA SHORT",defval=19) p=ohlc4[1] donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) //plot(conversionLine, color=#0496ff, title="Conversion Line") //plot(baseLine, color=#991515, title="Base Line") //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) ma1=sma(p, SMA1) ma2=sma(p, SMA2) p_a = ma1*2 p_b = ma1 p_c = p_a - p_b p_d = p_c/24 p_e = ma2*2 p_f = ma2 p_g = p_e - p_f p_h = p_g/24 closelong = ohlc4<ohlc4[SMA1] and ohlc4<ohlc4[1]// and leadLine1<leadLine2 and p_h<p_d if (closelong) strategy.close("Long") closeshort = ohlc4>ohlc4[SMA1] and ohlc4>ohlc4[1]// and leadLine1>leadLine2 and p_h>p_d if (closeshort) strategy.close("Short") longCondition = ohlc4>ohlc4[1] and leadLine1>leadLine2 and p_h>p_d if (longCondition) strategy.entry("Long",strategy.long) shortCondition = ohlc4<ohlc4[1] and leadLine1<leadLine2 and p_h<p_d if (shortCondition) strategy.entry("Short",strategy.short)