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.
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.
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.
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.
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.
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()