리소스 로딩... 로딩...

고급 양적 트렌드 추적 및 클라우드 역전 복합 거래 전략

저자:차오장, 날짜: 2025-01-06 10:56:42
태그:EMASMA

img

전반적인 설명

이 전략은 기하급수적인 이동평균 (EMA) 크로스오버와 이치모쿠 클라우드를 결합한 복합 거래 시스템이다. 이치모쿠 클라우드는 시장 반전을 식별하고 판매점을 결정하는 데 사용되며, 이치모쿠 클라우드는 시장 전환 신호를 캡처하고 구매 기회를 확인하는 데 주로 사용됩니다. 다차원 기술 지표의 조율을 통해 전략은 트렌드를 효과적으로 캡처하면서 위험을 제때 피할 수 있습니다.

전략 원칙

이 전략은 두 가지 핵심 요소를 통해 작동합니다.

  1. EMA 크로스오버 구매 신호: 트렌드 방향을 확인하기 위해 단기 (9일) 및 장기 (21일) 기하급수적 이동 평균의 크로스오버를 사용합니다. 단기 EMA가 단기 EMA를 넘어서면 구매 신호가 생성되며 단기 추진력이 강화되는 것을 나타냅니다.
  2. 이치모쿠 클라우드 판매 신호: 클라우드 및 내부 클라우드 구조에 대한 가격 위치를 통해 트렌드 반전을 결정합니다. 가격이 클라우드 아래로 넘어갈 때 또는 리딩 스판 A가 리딩 스판 B 아래로 넘을 때 판매 신호가 유발됩니다. 전략에는 1.5%의 스톱 로스와 3%의 영업이 포함됩니다.

전략적 장점

  1. 다차원 신호 확인: EMA 크로스오버와 이치모쿠 클라우드의 조합은 다른 관점에서 거래 신호를 검증합니다.
  2. 종합적인 리스크 제어: 고정된 비율의 스톱 로스 및 수익 목표가 각각의 거래에 대한 리스크를 효과적으로 제어합니다.
  3. 강력한 트렌드 캡처 능력: EMA 크로스오버는 트렌드 시작을 캡처하고 Ichimoku Cloud는 트렌드 끝을 효과적으로 식별합니다.
  4. 명확하고 객관적인 신호: 거래 신호는 기술 지표에 의해 자동으로 생성되며 주관적 판단 간섭을 줄입니다.

전략 위험

  1. 시장 위험 범위: 옆 시장에서 빈번한 잘못된 신호를 생성하여 연속적인 정지로 이어질 수 있습니다.
  2. 지연 위험: 이동 평균과 이치모쿠 클라우드 모두 고유 한 지연을 가지고 있으며 빠른 시장 움직임에서 최적의 입구 지점을 놓칠 수 있습니다.
  3. 매개 변수 민감성: 전략 성능은 매개 변수 설정에 민감하여 다른 시장 조건에 따라 조정해야합니다.

전략 최적화

  1. 시장 환경 필터 추가: 시장 조건에 따라 전략 매개 변수를 조정하기 위해 변동성 또는 트렌드 강도 지표를 포함합니다.
  2. 스톱-러스 메커니즘을 최적화하십시오. 후속 스톱이나 ATR 기반 스톱과 같은 동적 스톱을 구현하는 것을 고려하십시오.
  3. 신호 확인을 강화: 신호 신뢰성을 향상시키기 위해 볼륨 및 추진량 지표를 추가합니다.
  4. 포지션 크기를 구현합니다. 신호 강도와 시장 변동성에 따라 포지션 크기를 동적으로 조정합니다.

요약

이 전략은 EMA 크로스오버와 이치모쿠 클라우드의 유기적인 조합을 통해 트렌드 추적과 역전 포착을 할 수있는 거래 시스템을 구축합니다. 전략 설계는 적절한 리스크 제어와 합리적이며, 좋은 실용적 응용 가치를 보여줍니다. 제안된 최적화 방향을 통해 추가 개선의 여지가 있습니다. 라이브 거래를 위해 먼저 백테스팅을 통해 적합한 매개 변수 조합을 결정하고 실제 시장 조건에 따라 동적 조정을 수행하는 것이 좋습니다.


/*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)


관련

더 많은