A estratégia Ichimoku Kumo Twist utiliza a linha de conversão, a linha de base e as linhas de span principais do indicador Ichimoku para construir sinais de negociação como uma estratégia de tendência. Identifica pontos de reversão de tendência de curto e médio prazo observando as reviravoltas nas nuvens de Ichimoku para encontrar pontos de ruptura de risco mais baixos e oportunidades de sobrecompra / sobrevenda. A estratégia pode ser usada para negociação intradiária, bem como para negociação de longo prazo de várias semanas.
A estratégia usa principalmente três linhas Ichimoku
Os sinais de compra são gerados quando o intervalo líder 1 cruza o intervalo líder 2, enquanto os sinais de venda são gerados quando o intervalo líder 1 cruza o intervalo líder 2. A estratégia de negociação simplesmente acompanha os cruzes de alta e baixa dos meios de curto e médio prazo para capturar mudanças de tendência.
A estratégia de torção das nuvens Ichimoku combina tendências de curto e médio prazo, que podem identificar efetivamente pontos de reversão da tendência.
Estratégias baseadas em reversão média têm algum atraso embutida para filtrar o ruído.
Usar as nuvens para medir a força da tendência permite melhorias nas entradas e saídas.
Nenhuma otimização de parâmetros necessária - os parâmetros padrão de Ichimoku funcionam bem.
Ichimoku tem internos bastante complexos e não é muito sensível a ajustes de parâmetros, dificultando a otimização excessiva.
Pode haver múltiplos sinais falsos durante os mercados de gama.
A divergência entre as tendências a curto e médio prazo pode provocar falhas de estratégia.
Os stop losses são essenciais para controlar o risco, caso contrário são possíveis grandes drawdowns.
Teste diferentes combinações de períodos de conversão e de referência para encontrar o equilíbrio ideal.
Adicionar filtros com outros indicadores para evitar receber sinais em formações desfavoráveis.
Incorporar estratégias de stop loss como stop dinâmico ou trailing.
Otimizar o dimensionamento das posições com base nas condições do mercado.
Adicione comissões de negociação em backtests para resultados mais realistas.
Em geral, a estratégia de torção de nuvem de Ichimoku é uma estratégia moderada de tendência. Ela pode identificar efetivamente as voltas na tendência e tomar posições em alinhamento com a direção da tendência. Mas o monitoramento é necessário e controles de risco rigorosos são necessários para uso a longo prazo. Melhorias contínuas no ajuste de parâmetros, filtros de entrada, mecânica de stop loss e muito mais podem melhorar ainda mais a estabilidade e rentabilidade desta estratégia.
/*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)