Cette stratégie est un système de suivi des tendances qui combine plusieurs indicateurs techniques, y compris Ichimoku Cloud, l'indicateur MACD et la moyenne mobile à long terme (EMA200).
La stratégie utilise un mécanisme de triple confirmation pour identifier les signaux de trading. Premièrement, elle utilise le Nuage Ichimoku pour juger de la position des prix, favorisant les positions longues lorsque le prix est au-dessus du nuage et les positions courtes lorsqu'il est en dessous. Deuxièmement, elle utilise l'indicateur MACD, confirmant la direction de la tendance via la ligne MACD et les croisements des lignes de signal. Enfin, elle intègre une EMA de 200 périodes comme filtre de tendance pour s'assurer que la direction du commerce s'aligne sur la tendance à long terme. Pour le contrôle des risques, la stratégie utilise l'indicateur ATR pour définir dynamiquement les niveaux de stop-loss et de take-profit, leur permettant de s'adapter à la volatilité du marché.
Cette stratégie construit un système de suivi de tendance relativement complet grâce à l'application combinée d'indicateurs techniques multidimensionnels. Ses principaux avantages résident dans son mécanisme de confirmation de signaux multiples et sa méthode de gestion dynamique des risques, bien que l'optimisation des paramètres basée sur les conditions réelles du marché soit encore nécessaire.
/*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")