Esta estratégia é um sistema de seguimento de tendências que combina vários indicadores técnicos, incluindo Ichimoku Cloud, indicador MACD e média móvel de longo prazo (EMA200). Através da coordenação desses indicadores, forma um sistema de negociação completo que não só captura com precisão as tendências do mercado, mas também controla efetivamente o risco através da gestão de parada dinâmica baseada em ATR.
A estratégia emprega um mecanismo de confirmação tripla para identificar sinais de negociação. Em primeiro lugar, usa a Nuvem Ichimoku para julgar a posição do preço, favorecendo posições longas quando o preço está acima da nuvem e posições curtas quando abaixo. Em segundo lugar, utiliza o indicador MACD, confirmando a direção da tendência através da linha MACD e cruzamentos de linhas de sinal. Finalmente, incorpora uma EMA de 200 períodos como um filtro de tendência para garantir que a direção do comércio esteja alinhada com a tendência de longo prazo. Para o controle de risco, a estratégia emprega o indicador ATR para definir dinamicamente os níveis de stop-loss e take-profit, permitindo que eles se adaptem à volatilidade do mercado.
Esta estratégia constrói um sistema de tendência relativamente completo através da aplicação combinada de indicadores técnicos multidimensionais. Suas principais vantagens estão em seu mecanismo de confirmação de sinais múltiplos e método de gestão de risco dinâmico, embora a otimização de parâmetros baseada nas condições reais do mercado ainda seja necessária. O design geral da estratégia é claro e prático, adequado para aplicação em mercados com tendências óbvias.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-16 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=6 strategy("JOJO长趋势", overlay=true, shorttitle="JOJO长趋势") // Ichimoku 云图 conversionLine = ta.sma(high, 9) // 转换线 baseLine = ta.sma(low, 26) // 基准线 leadingSpanA = (conversionLine + baseLine) / 2 // 领先跨度A leadingSpanB = (ta.sma(high, 52) + ta.sma(low, 52)) / 2 // 领先跨度B laggingSpan = close[26] // 滞后跨度 // MACD 指标 macdLine = ta.ema(close, 12) - ta.ema(close, 26) // MACD 线 signalLine = ta.ema(macdLine, 9) // 信号线 macdHist = macdLine - signalLine // MACD 柱状图 // 长期均线 longTermEMA = ta.ema(close, 200) // 200周期EMA,用于确认长期趋势 // 声明多单和空单条件变量 var bool longCondition = false var bool shortCondition = false // 声明平仓条件变量 var bool exitLongCondition = false var bool exitShortCondition = false // 仅在K线完成后计算 if barstate.isconfirmed longCondition := (close > leadingSpanA) and (macdLine > signalLine) and (close > longTermEMA) // 多单条件 shortCondition := (close < leadingSpanB) and (macdLine < signalLine) and (close < longTermEMA) // 空单条件 // 平仓条件 exitLongCondition := macdLine < signalLine or close < leadingSpanB // 多单平仓条件 exitShortCondition := macdLine > signalLine or close > leadingSpanA // 空单平仓条件 // 执行策略进入市场 if longCondition strategy.entry("Long", strategy.long) // 多单进场 if shortCondition strategy.entry("Short", strategy.short) // 空单进场 // 设置止损和止盈,使用 ATR 倍数动态调整 stopLoss = input.float(1.5, title="止损 (ATR 倍数)", step=0.1) * ta.atr(14) // 止损基于 ATR takeProfit = input.float(3.0, title="止盈 (ATR 倍数)", step=0.1) * ta.atr(14) // 止盈基于 ATR // 执行平仓 if exitLongCondition strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit) // 多单平仓 if exitShortCondition strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit) // 空单平仓 // 绘制买入和卖出信号 plotshape(series=barstate.isconfirmed and longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=barstate.isconfirmed and shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")