O Ichimoku Cloud e o MACD Momentum Riding é uma estratégia de seguimento de tendências que combina o indicador Ichimoku Cloud e o indicador de momento MACD. A estratégia utiliza o Ichimoku Cloud para determinar a direção da tendência e os níveis de suporte / resistência, bem como o indicador MACD para detectar a inversão de momento, e entra no mercado cronometrado durante uma tendência. Enquanto isso, a estratégia adota um stop loss para bloquear lucros e reduzir drawdowns.
A nuvem Ichimoku consiste na linha de viragem (Tenkan-Sen), linha de base (Kijun-Sen), Leading Span A (Senkou-Span A), Leading Span B (Senkou-Span B) e linha de confirmação (Chikou-Span).
O Moving Average Convergence Divergence, ou MACD, é um indicador de momento. Nesta estratégia, quando a linha rápida do MACD cruza acima da linha lenta, é um sinal de compra, e quando a linha rápida cruza abaixo da linha lenta, é um sinal de venda.
Quando a Turning Line cruza acima da Base Line, a Confirmation Line cruza acima do preço de fechamento de 26 bares atrás, o preço de fechamento quebra acima da faixa superior da Cloud, e a linha rápida do MACD
Quando o preço sobe 3%, a estratégia move o stop loss para 97% do preço atual para bloquear os lucros e seguir o movimento de alta.
Quando a Turning Line cruza abaixo da Base Line, a Confirmation Line cruza abaixo do preço de fechamento de 26 bares atrás, o preço de fechamento quebra abaixo da faixa inferior da Cloud, e a linha rápida do MACD
Quando o preço cai 3%, a estratégia move o stop loss para 103% do preço atual para bloquear os lucros e seguir o movimento descendente.
Esta estratégia combina a identificação de tendências e o calendário de entrada, o que pode alcançar bons retornos durante os mercados de tendências.
Ichimoku Cloud pode identificar claramente a direção da tendência.
O MACD é eficaz na detecção de inversões de momento a curto prazo.
O trailing stop loss permite que a estratégia continue a funcionar durante uma tendência.
Há também certos riscos com esta estratégia:
A nuvem necessita de períodos de reflexão relativamente longos e pode dar sinais imprecisos a curto prazo.
O MACD oscila com o preço e pode gerar sinais falsos.
O percentual de perda de parada deve ser ajustado em conformidade, caso contrário, os whipsaws podem parar com muita frequência durante os mercados de variação.
A estratégia em si não gerencia o risco. O usuário precisa implementar técnicas externas de gerenciamento de riscos para controlar as perdas.
A estratégia Ichimoku Cloud e MACD Momentum Riding pode ser otimizada das seguintes maneiras:
Ajuste de parâmetros - Ajuste de linha de viragem, períodos de revisão da linha de base, otimize os parâmetros MACD para sinais mais claros.
Adicionar filtragem - Use outros indicadores como RSI, Bandas de Bollinger para filtrar sinais ruins, reduzindo sinais falsos.
O valor da posição em risco deve ser calculado em função da posição em risco.
Incorporar o dimensionamento da posição - Limite de perda máxima por transação para controlar o drawdown global.
Selecção automática de contratos e reequilíbrio - Expandir a adaptabilidade a mais mercados.
A estratégia Ichimoku Cloud e MACD Momentum Riding considera a tendência e o tempo, o que pode alcançar um bom retorno quando os parâmetros são ajustados corretamente e os controles de risco estão em vigor.
/*backtest start: 2022-11-21 00:00:00 end: 2023-11-03 05:20:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Ichimoku Cloud with MACD and Trailing Stop Loss', overlay=true, initial_capital=1000, process_orders_on_close=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30, commission_type=strategy.commission.percent, commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 6, 1, 0, 0) // Inputs ts_bars = input.int(9, minval=1, title='Tenkan-Sen Bars') ks_bars = input.int(26, minval=1, title='Kijun-Sen Bars') ssb_bars = input.int(52, minval=1, title='Senkou-Span B Bars') cs_offset = input.int(26, minval=1, title='Chikou-Span Offset') ss_offset = input.int(26, minval=1, title='Senkou-Span Offset') long_entry = input(true, title='Long Entry') short_entry = input(true, title='Short Entry') middle(len) => math.avg(ta.lowest(len), ta.highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = math.avg(tenkan, kijun) senkouB = middle(ssb_bars) // Plot Ichimoku Kinko Hyo plot(tenkan, color=color.new(#0496ff, 0), title='Tenkan-Sen') plot(kijun, color=color.new(#991515, 0), title='Kijun-Sen') plot(close, offset=-cs_offset + 1, color=color.new(#459915, 0), title='Chikou-Span') sa = plot(senkouA, offset=ss_offset - 1, color=color.new(color.green, 0), title='Senkou-Span A') sb = plot(senkouB, offset=ss_offset - 1, color=color.new(color.red, 0), title='Senkou-Span B') fill(sa, sb, color=senkouA > senkouB ? color.green : color.red, title='Cloud color', transp=90) ss_high = math.max(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) ss_low = math.min(senkouA[ss_offset - 1], senkouB[ss_offset - 1]) // MACD [macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = ta.mom(close, cs_offset - 1) > 0 cs_cross_bear = ta.mom(close, cs_offset - 1) < 0 price_above_kumo = close > ss_high price_below_kumo = close < ss_low bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and ta.crossover(macd, macd_signal) bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and ta.crossunder(macd, macd_signal) // Configure trail stop level with input options longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 strategy.entry('Long', strategy.long, when=bullish and long_entry and timePeriod) strategy.exit('Exit', stop = longStopPrice, limit = shortStopPrice) //strategy.close('Long', when=bearish and not short_entry) //strategy.entry('Short', strategy.short, when=bearish and short_entry and timePeriod) //strategy.close('Short', when=bullish and not long_entry)