Estrategia de cruce de la media móvil de Ichimoku

El autor:¿ Qué pasa?, Fecha: 2023-12-19 15:40:53
Las etiquetas:

img

Resumen general

La estrategia de cruce de promedios móviles Ichimoku identifica señales largas y cortas mediante el cálculo de un conjunto de promedios móviles y la detección de cruces de precios.

Estrategia lógica

La estrategia Ichimoku utiliza un sistema especializado que consta de 5 líneas de promedio móvil, a saber, la línea de conversión, la línea base, el intervalo líder 1, el intervalo líder 2 y el intervalo rezagado.

Ventajas

La estrategia Ichimoku combina los puntos fuertes de varios indicadores técnicos en un solo sistema. Combina conceptos de promedios móviles, canales de precios, confirmación de volumen, etc., formando una metodología sistemática. Esto asegura la precisión y direccionalidad de las señales comerciales. En comparación con las estrategias de un solo indicador, reduce en gran medida las señales falsas y aumenta los factores de ganancia.

Los riesgos

Como un sistema de seguimiento de tendencias, la estrategia Ichimoku tiene intervalos comerciales relativamente largos. Esto significa que no se pueden capturar las oscilaciones de precios a corto plazo. Además, los promedios móviles fallan cuando los precios fluctúan violentamente. Tales situaciones pueden conducir a señales erróneas y perder operaciones. Es aconsejable usar paradas para controlar los riesgos.

Oportunidades de mejora

La estrategia de Ichimoku se puede mejorar en áreas como: 1) Ajustar los parámetros promedio para diferentes períodos y productos; 2) Incorporar indicadores de volumen para confirmar las relaciones precio-volumen; 3) Introducir modelos de aprendizaje automático para refinar la determinación de señales; 4) Agregar más filtros para reducir la probabilidad de comercio incorrecto.

Conclusión

La estrategia de cruce de media móvil Ichimoku estable y confiable es adecuada como estrategia central combinada con otros algoritmos. Su clara orientación de tendencia y flexibilidad debido a la puesta a punto de parámetros y la optimización de múltiples indicadores la hacen útil para la investigación en profundidad y la aplicación a largo plazo por parte de los operadores cuánticos.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Ichimoku Strategy v1.0", shorttitle = "Ichimoku str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
conversionPeriods = input(9, minval = 1, title = "Conversion Periods")
basePeriods = input(26, minval = 1, title = "Base Periods")
laggingSpan2Periods = input(52, minval = 1, title = "Lagging Span")
usebf = input(true, defval = true, title = "Use body filter")
usecf = input(true, defval = true, title = "Use color filter")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Ichimoku
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

//Lines
plot(conversionLine, color=red, title="Conversion Line")
plot(baseLine, color=blue, title="Base Line")
plot(close, offset = -basePeriods, color=green, title="Lagging Span")
p1 = plot(leadLine1, offset = basePeriods, color=green, title="Lead 1")
p2 = plot(leadLine2, offset = basePeriods, color=red, title="Lead 2")
fill(p1, p2)

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebf == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gb = bar == 1 or usecf == false
rb = bar == -1 or usecf == false

//Signals
up = low > baseLine and rb and body
dn = high < baseLine and gb and body

//Trading
if up
    //if strategy.position_size < 0
    //    strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    //if strategy.position_size > 0
    //    strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Más.