Esta estrategia utiliza múltiples señales de la nube de Ichimoku para diseñar una estrategia de tendencia pura que tiene como objetivo capturar tendencias a medio y largo plazo, filtrar las consolidaciones y seguir direcciones de tendencia fuertes.
Esta estrategia utiliza principalmente Tenkan-sen, Kijun-sen, Chikou Span y otros indicadores clave de la Nube Ichimoku. Para juzgar las tendencias a largo plazo, se centra en la relación entre el Span líder y el rezagado; para los tiempos de entrada y salida específicos, se observa los cruces de Tenkan-sen y Kijun-sen y los cambios en la relación de precios con la Nube.
En resumen, la lógica central es: confirmar la tendencia a medio y largo plazo -> esperar fuertes señales de reanudación de la tendencia -> entrar para seguir las tendencias -> salir con un stop loss.
Específicamente, para determinar la tendencia a medio y largo plazo, utiliza la relación entre el Span líder y el rezagado (por encima del Span verde líder que señala la tendencia al alza y viceversa).
Esto filtra las consolidaciones a corto y medio plazo y permite captar fuertes tendencias para obtener un rendimiento superior constante en los mercados.
(1) El uso de la nube de Ichimoku para determinar la dirección de la tendencia a medio y largo plazo es beneficioso para localizar los principales bordes direccionales.
(2) Los cruces Tenkan-sen/Kijun-sen y los cambios en la relación de precios con la nube permiten filtrar eficazmente las consolidaciones y capturar temprano las tendencias fuertes.
(3) El mecanismo de salida de pérdidas de parada de seguimiento permite manejar grandes tendencias mientras que también controla las pérdidas aisladas de manera efectiva.
(4) La combinación de varias señales Ichimoku crea un sistema robusto que sigue las tendencias sin problemas.
(1) Riesgo sistémico de identificación errónea de una tendencia mayor.
(2) Riesgo de un momento de entrada mal elegido: un momento de entrada inadecuado corre el riesgo de que se produzcan cambios adversos en los precios.
(3) Riesgo de las paradas colocadas demasiado apretadas. Los movimientos de precios extremos podrían sacar las paradas que están demasiado apretadas, lo que resulta en pérdidas no planificadas.
(4) Frecuencia de operaciones alta que conduce a costes de transacción excesivos.
(1) Probar diferentes combinaciones de periodos de entrada de Ichimoku para encontrar parámetros óptimos.
(2) Optimizar los filtros de entrada para garantizar entradas de alta calidad.
(3) Ajustar la distancia de parada para equilibrar el riesgo-recompensa.
(4) Agregar los niveles de objetivo de ganancias basados en las distancias entre los indicadores clave de precios para crear mecanismos de obtención de ganancias adaptativos.
Esta estrategia de seguimiento de tendencias de la nube Ichimoku sintetiza múltiples señales de Ichimoku para diagnosticar tendencias, entradas de tiempo y paradas de rastro. La práctica muestra que puede capturar efectivamente las tendencias a medio y largo plazo, filtrar las consolidaciones y lograr un rendimiento consistente.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ichimoku trendfollowing", overlay=true, initial_capital=1000, commission_type=strategy.commission.cash_per_order, commission_value=0.04, slippage=2) //*************************** // INPUT BACKTEST RANGE * //*************************** FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2010, title = "From Year", minval = 2000) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2000) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true //*************** //* ICHIMOKU * //*************** //inizializzazione parametri,, tenkanPeriods = input(9, minval=1, title="Tenkan-Sen") kinjunPeriods = input(26, minval=1, title="Kinjun-Sen") senkouSpanBPeriods = input(52, minval=1, title="Senkou Span B") displacement = input(26, minval=1, title="-ChinkouSpan/+SenkouSpan A") //definizione Tenkan-Sen (9 Period), Kinjun-Sen (26 Period), Chinkou Span (Lagging Line) averageHighLow(period) => avg(lowest(period), highest(period)) tenkan= averageHighLow(tenkanPeriods) kinjun = averageHighLow(kinjunPeriods) senkouSpanA = avg(tenkan, kinjun) senkouSpanB = averageHighLow(senkouSpanBPeriods) //definisco il colore della kumo in base al trend. senkouSpan1Above = senkouSpanA >= senkouSpanB ? 1 : na senkouSpan2Below = senkouSpanA <= senkouSpanB ? 1 : na span1plotU = senkouSpan1Above ? senkouSpanA : na span2plotU = senkouSpan1Above ? senkouSpanB : na span1plotD = senkouSpan2Below ? senkouSpanA : na span2plotD = senkouSpan2Below ? senkouSpanB : na col = senkouSpanA >= senkouSpanB ? lime : red //plots Ichimoku plot(tenkan, title = 'Tenkan-Sen', linewidth=1, color=blue) plot(kinjun, title = 'Kinjun-Sen', linewidth=1, color=red) plot(close, title = 'Chinkou Span', linewidth=1, offset = -displacement, color=aqua) plot( senkouSpanA, title = 'Senkou Span A', style=line, linewidth=1, offset = displacement, color=lime) plot(senkouSpanB, title = 'Senkou Span B', style=line, linewidth=1, offset = displacement, color=red) //Cloud Lines Plot p1 = plot(span1plotU ? span1plotU : na, title = 'Senkou Span A Above Senkou Span B', style=linebr, linewidth=1, offset = displacement, color=col) p2 = plot(span2plotU ? span2plotU : na, title = 'Senkou Span B (52 Period) Below Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p3 = plot(span1plotD ? span1plotD : na, title = 'Senkou Span A (26 Period) Below Span B Cloud', style=linebr, linewidth=1, offset = displacement, color=col) p4 = plot(span2plotD ? span2plotD : na, title = 'Senkou Span B (52 Period) Above Span A Cloud', style=linebr, linewidth=1, offset = displacement, color=col) //Fills that color cloud based on Trend. fill(p1, p2, color=lime, transp=70, title='Kumo (Cloud)') fill(p3, p4, color=red, transp=70, title='Kumo (Cloud)') //*********************************************** //* condizioni ingresso ed uscita mercato * //*********************************************** isKumoRialzista = senkouSpanA >= senkouSpanB ? true : false isSopraKumo = (close > max(senkouSpanA[displacement], senkouSpanB[displacement])) isSottoKumo = (close < min(senkouSpanA[displacement], senkouSpanB[displacement])) isChinkouSpanSopra = high[displacement]<close isChinkouSpanSotto = low[displacement]>close filtroLong=isSopraKumo and isChinkouSpanSopra filtroShort=isSottoKumo and isChinkouSpanSotto //rimbalzato su kijun quando i prezzi stavano ritracciando e il trend era già in atto(tenkan >kijun x entrare long isPullBackLijunEntryLong = kinjun<tenkan and low<kinjun and (close>kinjun) isPullBackLijunEntryShort =kinjun>tenkan and high>kinjun and (close<kinjun) //Breackout Kumo isBreackoutKumoEntryLong = crossover(close, max(senkouSpanA[displacement], senkouSpanB[displacement])) and (close>tenkan) and (close>kinjun) isBreackoutKumoEntryShort = crossunder(close, min(senkouSpanA[displacement], senkouSpanB[displacement])) and (close<tenkan) and (close<kinjun) ConditionEntryLong = (isPullBackLijunEntryLong or isBreackoutKumoEntryLong ) and filtroLong ConditionEntryShort = (isPullBackLijunEntryShort or isBreackoutKumoEntryLong ) and filtroShort isExitLong = close<kinjun isExitShort = close>kinjun //ingressi ed uscite Mercato strategy.entry ("Long",long=true, when = window() and ConditionEntryLong) strategy.entry ("Short",long=false, when = window() and ConditionEntryShort) strategy.close(id="Long", when=isExitLong) strategy.close(id="Short", when=isExitShort) strategy.close_all(when=not window())