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

다단계 다기간의 EMA 크로스오버 동적 취득 최적화 전략

저자:차오장, 날짜: 2025-01-06 10:50:38
태그:EMATPSLRSIMACDCCIATRROCMFIOBV

img

전반적인 설명

이 전략은 기하급수적인 이동 평균 (EMA) 을 기반으로 하는 거래 시스템이며, 주로 EMA20와 EMA50의 크로스오버를 활용하여 시장 트렌드 변화를 식별합니다. 이 전략은 위험 통제를 위한 스톱-러스 메커니즘과 결합한 다단계 수익점으로 구성되어 있습니다. 이 시스템은 배경 색상의 변화를 통해 시장 트렌드 방향을 시각적으로 표시하여 거래자가 시장 움직임을 더 잘 파악하는 데 도움이됩니다.

전략 원칙

전략의 핵심 논리는 다음 측면에 기초합니다.

  1. 트렌드 방향을 결정하기 위해 EMA20와 EMA50의 크로스오버를 사용함: EMA20가 EMA50를 넘을 때 구매 신호를 생성하고, EMA50가 그 아래를 넘을 때 판매 신호를 생성함
  2. 역동적으로 이전 촛불의 범위에 기초한 네 가지 수익 목표를 설정:
    • TP1 0.5x 범위에서 설정
    • TP2 1.0x 범위에서 설정
    • 1.5x 범위에서 TP3 설정
    • TP4는 2.0x 범위로 설정됩니다.
  3. 위험 관리에 필요한 3%의 스톱 로스 포인트를 설정
  4. 촛불 배경 색상을 통해 트렌드 방향을 표시합니다: 상승 트렌드를 위해 녹색, 하락 트렌드를 위해 빨간색

전략적 장점

  1. 동적 수익 설정: 실시간 시장 변동성에 따라 수익 목표를 자동으로 조정합니다.
  2. 다단계 수익 메커니즘: 트렌드가 완전히 발전할 수 있도록 하는 동시에 수익 고정을 보장합니다.
  3. 탁월 한 시각화: 배경 색상 을 통해 유행 방향 이 분명 히 표시 된다
  4. 종합적인 위험 관리: 고정 스톱 로스는 거래당 최대 손실을 효과적으로 제어합니다.
  5. 유연한 매개 변수: 거래자는 시장 조건에 따라 수익 곱셈자 및 스톱 손실 비율을 조정할 수 있습니다.

전략 위험

  1. EMA 지연: EMA 신호의 고유한 지연은 지연된 입점으로 이어질 수 있습니다.
  2. 부적절한 시장 위험: 다양한 시장에서 빈번한 잘못된 신호를 생성할 수 있습니다.
  3. 고정 스톱 로스 (fixed stop-loss): 점수 기준 스톱은 모든 시장 조건에 적합하지 않을 수 있습니다.
  4. 영업 간격: 유동적인 시장에서 영업 목표 간격이 너무 넓거나 좁을 수 있습니다.

전략 최적화 방향

  1. 보조 지표를 입력: 신호 확인을 위해 RSI 또는 MACD를 추가합니다.
  2. 스톱 로스 메커니즘을 최적화: 동적 스톱 로스 거리를 위해 ATR을 사용하는 것을 고려하십시오.
  3. 시간 필터링을 추가합니다. 매우 변동적인 기간을 피하기 위해 거래 시간 창을 구현합니다.
  4. 포지션 관리 개선: 시장 변동성에 따라 포지션 크기를 동적으로 조정
  5. 신호 확인을 강화: 보조 확인 조건으로 부피 표시기를 추가합니다.

요약

이 전략은 명확한 논리를 가진 잘 구조화된 트렌드-추천 전략이다. EMA 크로스오버를 통해 트렌드를 포착하고, 동적인 영업점으로 수익을 관리하고, 스톱-로스로 위험을 제어한다. 전략의 시각화 디자인은 직관적이고 효과적이며, 유연한 매개 변수 설정이 있다. 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 Strategy with Take Profit and Candle Highlighting", overlay=true)

// Define the EMAs
ema200 = ta.ema(close, 200)
ema50 = ta.ema(close, 50)
ema20 = ta.ema(close, 20)

// Plot the EMAs
plot(ema200, color=#c204898e, title="EMA 200", linewidth=2)
plot(ema50, color=color.blue, title="EMA 50", linewidth=2)
plot(ema20, color=color.orange, title="EMA 20", linewidth=2)

// Define Buy and Sell conditions based on EMA crossover
buySignal = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
sellSignal = ta.crossunder(ema20, ema50) // EMA 20 crosses below EMA 50 (Bearish)

// Define input values for Take Profit multipliers
tp1_multiplier = input.float(0.5, title="TP1 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp2_multiplier = input.float(1.0, title="TP2 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp3_multiplier = input.float(1.5, title="TP3 Multiplier", minval=0.1, maxval=5.0, step=0.1)
tp4_multiplier = input.float(2.0, title="TP4 Multiplier", minval=0.1, maxval=5.0, step=0.1)

// Define Take Profit Levels as float variables initialized with na
var float takeProfit1 = na
var float takeProfit2 = na
var float takeProfit3 = na
var float takeProfit4 = na

// Calculate take profit levels based on the multipliers
if buySignal
    takeProfit1 := high + (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range above the high
    takeProfit2 := high + (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range above the high
    takeProfit3 := high + (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range above the high
    takeProfit4 := high + (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range above the high

if sellSignal
    takeProfit1 := low - (high - low) * tp1_multiplier  // TP1: Set TP at multiplier of previous range below the low
    takeProfit2 := low - (high - low) * tp2_multiplier  // TP2: Set TP at multiplier of previous range below the low
    takeProfit3 := low - (high - low) * tp3_multiplier  // TP3: Set TP at multiplier of previous range below the low
    takeProfit4 := low - (high - low) * tp4_multiplier  // TP4: Set TP at multiplier of previous range below the low

// Plot Take Profit Levels on the chart
plot(takeProfit1, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 1")
plot(takeProfit2, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 2")
plot(takeProfit3, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 3")
plot(takeProfit4, color=#b4b4b8, style=plot.style_line, linewidth=1, title="Take Profit 4")

// Create buy and sell signals on the chart
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")

// Highlight the candles based on trend direction
uptrend = ta.crossover(ema20, ema50)  // EMA 20 crosses above EMA 50 (Bullish)
downtrend = ta.crossunder(ema20, ema50)  // EMA 20 crosses below EMA 50 (Bearish)

// Highlighting candles based on trend
bgcolor(color = ema20 > ema50 ? color.new(color.green, 80) : ema20 < ema50 ? color.new(color.red, 80) : na)

// Execute buy and sell orders on the chart
strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)

// Exit conditions based on Take Profit levels
strategy.exit("Take Profit 1", "Buy", limit=takeProfit1)
strategy.exit("Take Profit 2", "Buy", limit=takeProfit2)
strategy.exit("Take Profit 3", "Buy", limit=takeProfit3)
strategy.exit("Take Profit 4", "Buy", limit=takeProfit4)

strategy.exit("Take Profit 1", "Sell", limit=takeProfit1)
strategy.exit("Take Profit 2", "Sell", limit=takeProfit2)
strategy.exit("Take Profit 3", "Sell", limit=takeProfit3)
strategy.exit("Take Profit 4", "Sell", limit=takeProfit4)

// Optionally, add a stop loss
stopLoss = 0.03  // Example: 3% stop loss
strategy.exit("Stop Loss", "Buy", stop=close * (1 - stopLoss))
strategy.exit("Stop Loss", "Sell", stop=close * (1 + stopLoss))


관련

더 많은