Esta estratégia é um sistema de negociação composto que combina o crossover da média móvel exponencial (EMA) e a nuvem Ichimoku. O crossover da EMA é usado principalmente para capturar sinais de início de tendência e confirmar oportunidades de compra, enquanto a nuvem Ichimoku é usada para identificar reversões de mercado e determinar pontos de venda. Através da coordenação de indicadores técnicos multidimensionais, a estratégia pode capturar efetivamente as tendências evitando riscos em tempo hábil.
A estratégia funciona através de dois componentes essenciais:
Esta estratégia constrói um sistema de negociação capaz de seguir a tendência e capturar a reversão através da combinação orgânica de crossover EMA e Ichimoku Cloud. O design da estratégia é racional com controle de risco adequado, mostrando bom valor prático de aplicação. Através das direções de otimização sugeridas, há espaço para melhoria adicional. Para negociação ao vivo, recomenda-se primeiro determinar combinações de parâmetros adequadas através de backtesting e fazer ajustes dinâmicos com base nas condições reais do mercado.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Buy + Ichimoku Cloud Sell Strategy", overlay=true) // Input Parameters for the EMAs shortEmaPeriod = input.int(9, title="Short EMA Period", minval=1) longEmaPeriod = input.int(21, title="Long EMA Period", minval=1) // Input Parameters for the Ichimoku Cloud tenkanPeriod = input.int(9, title="Tenkan-Sen Period", minval=1) kijunPeriod = input.int(26, title="Kijun-Sen Period", minval=1) senkouSpanBPeriod = input.int(52, title="Senkou Span B Period", minval=1) displacement = input.int(26, title="Displacement", minval=1) // Calculate the EMAs shortEma = ta.ema(close, shortEmaPeriod) longEma = ta.ema(close, longEmaPeriod) // Ichimoku Cloud Calculations tenkanSen = ta.sma(close, tenkanPeriod) kijunSen = ta.sma(close, kijunPeriod) senkouSpanA = ta.sma(tenkanSen + kijunSen, 2) senkouSpanB = ta.sma(close, senkouSpanBPeriod) chikouSpan = close[displacement] // Plot the EMAs on the chart plot(shortEma, color=color.green, title="Short EMA") plot(longEma, color=color.red, title="Long EMA") // Plot the Ichimoku Cloud plot(tenkanSen, color=color.blue, title="Tenkan-Sen") plot(kijunSen, color=color.red, title="Kijun-Sen") plot(senkouSpanA, color=color.green, title="Senkou Span A", offset=displacement) plot(senkouSpanB, color=color.purple, title="Senkou Span B", offset=displacement) plot(chikouSpan, color=color.orange, title="Chikou Span", offset=-displacement) // Buy Condition: Short EMA crosses above Long EMA buyCondition = ta.crossover(shortEma, longEma) // Sell Condition: Tenkan-Sen crosses below Kijun-Sen, and price is below the cloud sellCondition = ta.crossunder(tenkanSen, kijunSen) and close < senkouSpanA and close < senkouSpanB // Plot Buy and Sell signals plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Execute Buy and Sell Orders if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) // Optional: Add Stop Loss and Take Profit (risk management) stopLossPercentage = input.float(1.5, title="Stop Loss Percentage", minval=0.1) / 100 takeProfitPercentage = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100 longStopLoss = close * (1 - stopLossPercentage) longTakeProfit = close * (1 + takeProfitPercentage) shortStopLoss = close * (1 + stopLossPercentage) shortTakeProfit = close * (1 - takeProfitPercentage) strategy.exit("Take Profit/Stop Loss", "Buy", stop=longStopLoss, limit=longTakeProfit) strategy.exit("Take Profit/Stop Loss", "Sell", stop=shortStopLoss, limit=shortTakeProfit)