이 전략은 이치모쿠 클라우드, MACD 지표 및 장기 이동 평균 (EMA200) 을 포함한 여러 기술적 지표를 결합한 트렌드 추적 시스템입니다. 이러한 지표의 조정으로 시장 추세를 정확하게 파악할뿐만 아니라 ATR 기반의 동적 스톱 관리를 통해 위험을 효과적으로 제어하는 완전한 거래 시스템을 형성합니다.
이 전략은 거래 신호를 식별하기 위해 세 번의 확인 메커니즘을 사용합니다. 첫째, 이치모쿠 클라우드를 사용하여 가격 위치를 판단하고, 가격이 클라우드 위에있을 때 긴 포지션을 선호하고, 아래에있는 경우 짧은 포지션을 선호합니다. 둘째, MACD 지표를 사용하여 MACD 라인과 신호 라인 크로스오버를 통해 트렌드 방향을 확인합니다. 마지막으로, 200 기간 EMA를 트렌드 필터로 통합하여 거래 방향이 장기 트렌드와 일치하는지 확인합니다. 위험 통제를 위해 전략은 ATR 지표를 사용하여 동적으로 스톱 로스 및 영리 수준을 설정하여 시장 변동성에 적응 할 수 있습니다.
이 전략은 다차원 기술 지표의 결합적 적용을 통해 비교적 완전한 추세 추세 시스템을 구축한다. 그것의 핵심 장점은 여러 신호 확인 메커니즘과 동적 위험 관리 방법, 비록 실제 시장 조건에 기초한 매개 변수 최적화가 여전히 필요함에도 있다. 전략의 전반적인 디자인은 명확하고 실용적이며, 명백한 추세를 가진 시장에서 적용하기에 적합하다.
/*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")