La estrategia Ichimoku Kumo Twist utiliza la línea de conversión, la línea base y las líneas de alcance principales del indicador Ichimoku para construir señales comerciales como una estrategia de tendencia.
La estrategia utiliza principalmente tres líneas Ichimoku
Las señales de compra se generan cuando el intervalo líder 1 cruza el intervalo líder 2, mientras que las señales de venta se generan cuando el intervalo líder 1 cruza el intervalo líder 2.
La estrategia de giro de la nube de Ichimoku combina tendencias a corto y mediano plazo, lo que puede identificar eficazmente los puntos de inversión de tendencia.
Las estrategias basadas en la reversión media tienen algún retraso incorporado para filtrar el ruido.
El uso de las nubes para medir la fuerza de la tendencia permite mejores entradas y salidas.
No se necesita optimización de parámetros, los parámetros estándar de Ichimoku funcionan bien.
Ichimoku tiene internos bastante complejos y no es muy sensible a los ajustes de parámetros que dificultan la sobreoptimización.
Puede haber múltiples señales falsas durante los mercados de rango.
La divergencia entre las tendencias a corto y a medio plazo puede provocar fallas en la estrategia.
Las pérdidas de detención son esenciales para controlar el riesgo, de lo contrario son posibles grandes reducciones.
Prueba diferentes combinaciones de períodos de conversión y de referencia para encontrar el equilibrio óptimo.
Añadir filtros con otros indicadores para evitar recibir señales en formaciones desfavorables.
Incorporar estrategias de stop loss como parada dinámica o de seguimiento.
Optimizar el tamaño de las posiciones en función de las condiciones del mercado.
Agregue comisiones comerciales en las pruebas de retroceso para obtener resultados más realistas.
En general, la estrategia de giro de la nube de Ichimoku es una estrategia de tendencia moderada. Puede identificar efectivamente los giros en la tendencia y tomar posiciones en alineación con la dirección de la tendencia. Pero se requiere monitoreo y se requieren controles de riesgo estrictos para su uso a largo plazo. Las mejoras continuas en el ajuste de parámetros, filtros de entrada, mecánica de stop loss y más pueden mejorar aún más la estabilidad y rentabilidad de esta estrategia.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true) xlowest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := min(x, v) x xlowest(src, len) => na(src[len]) ? xlowest_(src, len) : lowest(src, len) xhighest_(src, len) => x = src for i = 1 to len - 1 v = src[i] if (na(v)) break x := max(x, v) x xhighest(src, len) => na(src[len]) ? xhighest_(src, len) : highest(src, len) dropn(src, n) => na(src[n]) ? na : src ichiConversionPeriods(presets) => if presets == "Crypto Doubled" 20 else if presets == "Crypto Singled" 10 else if presets == "Standard Doubled" 18 else 9 ichiBasePeriods(presets) => if presets == "Crypto Doubled" 60 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 52 else 26 ichiLaggingSpan2Periods(presets) => if presets == "Crypto Doubled" 120 else if presets == "Crypto Singled" 60 else if presets == "Standard Doubled" 104 else 52 ichiDisplacement(presets) => if presets == "Crypto Doubled" 30 else if presets == "Crypto Singled" 30 else if presets == "Standard Doubled" 26 else 26 scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear") presets = input(title="Presets", options=["Crypto Doubled", "Crypto Singled", "Standard Doubled", "Standard Singled"], defval="Crypto Doubled") dropCandles = input(1, minval=0, title="Drop first N candles") showClouds = input(false, "Show Clouds") stoploss = input(true, title="Stop Loss") conversionPeriods = ichiConversionPeriods(presets) basePeriods = ichiBasePeriods(presets) laggingSpan2Periods = ichiLaggingSpan2Periods(presets) displacement = ichiDisplacement(presets) logScaling = scaling == "Log" lows = dropn(low, dropCandles) highs = dropn(high, dropCandles) lowsp = logScaling ? log(lows) : lows highsp = logScaling ? log(highs) : highs donchian(len) => avg(xlowest(lowsp, len), xhighest(highsp, len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) golong = crossover(leadLine1, leadLine2) goshort = crossunder(leadLine1, leadLine2) strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na)) strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na)) conversionLinep = logScaling ? exp(conversionLine) : conversionLine baseLinep = logScaling ? exp(baseLine) : baseLine leadLine1p = logScaling ? exp(leadLine1) : leadLine1 leadLine2p = logScaling ? exp(leadLine2) : leadLine2 plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line") plot(showClouds ? baseLinep : na, color=#991515, title="Base Line") p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1") p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2") fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)