다차원적 추세 판단 및 ATR 동적 손절매 및 손절매 전략

MACD EMA ATR SMA
생성 날짜: 2025-01-17 16:39:21 마지막으로 수정됨: 2025-01-17 16:39:21
복사: 12 클릭수: 623
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다차원적 추세 판단 및 ATR 동적 손절매 및 손절매 전략

개요

이 전략은 클라우드 차트(이치모쿠), MACD 지표, 장기 이동 평균(EMA200)을 포함한 여러 기술 지표를 결합한 추세 추종 시스템입니다. 이러한 지표의 조정된 협력을 통해 전략은 완전한 거래 시스템을 형성합니다. 이는 시장 동향을 정확하게 포착할 수 있을 뿐만 아니라 ATR을 통해 이익실현 및 손절매 포지션을 동적으로 조정하여 효과적인 위험 관리를 달성할 수 있습니다.

전략 원칙

이 전략은 거래 신호를 식별하기 위해 삼중 확인 메커니즘을 사용합니다. 먼저, 이치모쿠 클라우드 차트를 사용하여 가격 위치를 파악합니다. 가격이 클라우드 차트 위에 있을 때는 롱 포지션을 취하는 경향이 있고, 가격이 클라우드 차트 아래에 있을 때는 숏 포지션을 취하는 경향이 있습니다. 둘째, MACD 지표를 이용해 MACD선과 신호선의 교차점을 통해 추세 방향을 확인합니다. 마지막으로, 200기간 EMA는 거래 방향이 장기 추세와 일치하도록 하는 추세 필터로 도입되었습니다. 위험 관리 측면에서 이 전략은 ATR 지표를 사용하여 손절매 및 이익 실현 포지션을 동적으로 설정하여 시장 변동성에 따라 적응적으로 조정할 수 있습니다.

전략적 이점

  1. 다차원 트렌드 확인 메커니즘은 거래 신호의 신뢰성을 크게 향상시킵니다.
  2. 장기 이동 평균을 필터링하여 역추세 거래를 피하십시오.
  3. ATR을 사용하여 손절매와 이익 실현을 동적으로 조정하여 시장 변동성에 더 잘 적응합니다.
  4. K-라인이 확인된 후에만 거래가 실행되므로 잘못된 신호의 영향이 줄어듭니다.
  5. 다양한 성숙한 기술 지표를 결합하고, 서로를 검증하며, 잘못된 판단의 위험을 줄여줍니다.

전략적 위험

  1. 여러 확인 메커니즘으로 인해 진입 신호가 지연되고 일부 시장 상황을 놓칠 수 있습니다.
  2. 변동성이 큰 시장에서는 빈번한 진입 및 종료 신호가 생성될 수 있습니다.
  3. 변동이 심한 시장 상황에서는 기술 지표에 대한 의존도가 낮을 ​​수 있습니다.
  4. 변동성이 갑자기 증가하면 ATR 정지가 조기에 발생할 수 있습니다. ATR 배수를 적절히 조정하여 위험-수익 비율을 균형 있게 조절하고 시장 환경 필터를 추가하는 것을 고려하는 것이 좋습니다.

전략 최적화 방향

  1. 시장 상황을 파악하기 위해 변동성 지표(ATR 범위 판단 등)를 도입합니다.
  2. 추세 확인의 신뢰성을 높이기 위해 거래량 분석을 추가하세요
  3. 다양한 시장 주기에 더 잘 적응하기 위해 MACD 매개변수를 최적화합니다.
  4. 약한 추세에서 거래하는 것을 피하기 위해 추세 강도 필터를 추가하는 것을 고려하세요.
  5. 다양한 시장 단계에 적응하기 위해 손절매율과 손절매율의 동적 조정을 달성합니다.

요약하다

이 전략은 다차원 기술 지표를 결합하여 적용하여 비교적 완전한 추세 추적 시스템을 구축합니다. 이 기술의 핵심 장점은 다중 신호 확인 메커니즘과 동적 위험 관리 방식에 있지만, 실제 시장 환경에 따라 매개변수 최적화가 여전히 필요합니다. 전략의 전반적인 설계는 명확하고 실용적이어서 뚜렷한 추세가 있는 시장에 적용하기에 적합합니다.

전략 소스 코드
/*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")