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

다중 지표 트렌드 추적 및 변동성 파업 전략

저자:차오장, 날짜: 2024-12-12 15:48:29
태그:EMAADXATROBVRSI

img

전반적인 설명

이 전략은 다양한 기술적 지표를 사용하여 트렌드 추적 및 변동성 브레이크아웃 접근 방식을 결합한 포괄적인 거래 전략이다. 이 전략은 EMA 시스템, 트렌드 강도에 대한 ADX, 변동성 측정에 대한 ATR, 볼륨 분석에 대한 OBV 및 시장 트렌드와 브레이크아웃 기회를 포착하는 Ichimoku 클라우드 및 스토카스틱 오시레이터와 같은 보충 지표를 통합합니다. 시간 필터는 특정 거래 시간 동안만 작동하여 거래 효율성을 최적화하기 위해 구현됩니다.

전략 원칙

핵심 논리는 다층 기술 분석에 기반합니다.

  1. 50 및 200 기간 EMA를 사용하는 트렌드 다음 시스템
  2. ADX를 통해 트렌드 강도 확인
  3. 이치모쿠 클라우드를 이용한 추가 트렌드 검증
  4. 스토카스틱 오시레이터로 과잉 매수/ 과잉 판매를 식별
  5. ATR을 이용한 동적 스톱 로스 및 수익 목표
  6. OBV를 통한 양 확인

구매 신호는 다음과 같이 생성됩니다.

  • 허용된 거래 시간 내에
  • 단기 EMA 이상의 가격
  • 단기 EMA는 장기 EMA보다 높습니다.
  • ADX가 임계 이상
  • 이치모쿠 클라우드보다 높은 가격
  • 과판된 영역에서 스토카스틱

전략적 장점

  1. 다중 표시자 교차 검증은 신호 신뢰성을 향상시킵니다.
  2. 추세와 변동성 파업의 조합은 적응력을 증가시킵니다.
  3. 시간 필터는 비효율적인 거래 기간을 피합니다.
  4. 동적 스톱 로스 및 수익 목표가 시장 변동에 적응합니다.
  5. 종합적 양과 가격 분석은 포괄적 인 시장 관점을 제공합니다.
  6. 체계적인 입국/출국 규칙은 주관적 판단을 줄입니다.

전략 위험

  1. 여러 가지 지표로 인해 신호가 뒤떨어질 수 있습니다.
  2. 시장에서 잘못된 신호
  3. 과도한 장착 위험과 함께 복잡한 매개 변수 최적화
  4. 시간 제한은 중요한 시장 움직임을 놓칠 수 있습니다.
  5. 폭이 넓으면 더 큰 개인 손실이 발생할 수 있습니다.

위험 관리 제안:

  • 규칙적인 매개 변수 최적화 검토
  • 변동성 필터를 추가하는 것을 고려하십시오.
  • 더 엄격한 돈 관리 규칙을 적용
  • 추가 트렌드 확인 지표 추가

전략 최적화 방향

  1. 동적 지표 조절을 위한 적응적 매개 변수 시스템을 도입
  2. 다른 신호 생성 규칙에 대한 시장 체제 분류 추가
  3. 역사 데이터 분석을 기반으로 시간 필터를 최적화
  4. 트레일링 스톱으로 스톱 로스 전략을 개선
  5. 신호 품질 향상을 위한 시장 감정 지표를 포함

요약

이 전략은 여러 가지 기술적 지표의 포괄적인 응용을 통해 완전한 거래 시스템을 구축합니다. 이 전략의 강점은 다층 지표의 크로스 검증과 엄격한 위험 통제에 있으며 매개 변수 최적화 및 신호 지연의 과제에 직면합니다. 지속적인 최적화 및 개선으로 전략은 다른 시장 조건에서 안정적인 성능을 발휘할 수 있는 잠재력을 보여줍니다.


/*backtest
start: 2024-11-11 00:00:00
end: 2024-12-10 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Khaleq Strategy Pro - Fixed Version", overlay=true)

// === Input Settings ===
ema_short = input.int(50, "EMA Short", minval=1)
ema_long = input.int(200, "EMA Long", minval=1)
adx_threshold = input.int(25, "ADX Threshold", minval=1)
atr_multiplier = input.float(2.0, "ATR Multiplier", minval=0.1)
time_filter_start = input(timestamp("0000-01-01 09:00:00"), "Trading Start Time", group="Time Filter")
time_filter_end = input(timestamp("0000-01-01 17:00:00"), "Trading End Time", group="Time Filter")

// === Ichimoku Settings ===
tenkan_len = 9
kijun_len = 26
senkou_span_b_len = 52
displacement = 26

// === Calculations ===
// Ichimoku Components
tenkan_sen = (ta.highest(high, tenkan_len) + ta.lowest(low, tenkan_len)) / 2
kijun_sen = (ta.highest(high, kijun_len) + ta.lowest(low, kijun_len)) / 2
senkou_span_a = (tenkan_sen + kijun_sen) / 2
senkou_span_b = (ta.highest(high, senkou_span_b_len) + ta.lowest(low, senkou_span_b_len)) / 2

// EMA Calculations
ema_short_val = ta.ema(close, ema_short)
ema_long_val = ta.ema(close, ema_long)

// Manual ADX Calculation
length = 14
dm_plus = math.max(ta.change(high), 0)
dm_minus = math.max(-ta.change(low), 0)
tr = math.max(high - low, math.max(math.abs(high - close[1]), math.abs(low - close[1])))
tr14 = ta.sma(tr, length)
dm_plus14 = ta.sma(dm_plus, length)
dm_minus14 = ta.sma(dm_minus, length)
di_plus = (dm_plus14 / tr14) * 100
di_minus = (dm_minus14 / tr14) * 100
dx = math.abs(di_plus - di_minus) / (di_plus + di_minus) * 100
adx_val = ta.sma(dx, length)

// ATR Calculation
atr_val = ta.atr(14)

// Stochastic RSI Calculation
k = ta.stoch(close, high, low, 14)
d = ta.sma(k, 3)

// Time Filter
is_within_time = true

// Support and Resistance (High and Low Levels)
resistance_level = ta.highest(high, 20)
support_level = ta.lowest(low, 20)

// Volume Analysis (On-Balance Volume)
vol_change = ta.change(close)
obv = ta.cum(vol_change > 0 ? volume : vol_change < 0 ? -volume : 0)

// === Signal Conditions ===
buy_signal = is_within_time and
             (close > ema_short_val) and
             (ema_short_val > ema_long_val) and
             (adx_val > adx_threshold) and
             (close > senkou_span_a) and
             (k < 20)  // Stochastic oversold

sell_signal = is_within_time and
              (close < ema_short_val) and
              (ema_short_val < ema_long_val) and
              (adx_val > adx_threshold) and
              (close < senkou_span_b) and
              (k > 80)  // Stochastic overbought

// === Plotting ===
// Plot Buy and Sell Signals
plotshape(buy_signal, color=color.green, style=shape.labelup, title="Buy Signal", location=location.belowbar, text="BUY")
plotshape(sell_signal, color=color.red, style=shape.labeldown, title="Sell Signal", location=location.abovebar, text="SELL")

// Plot EMAs
plot(ema_short_val, color=color.blue, title="EMA Short")
plot(ema_long_val, color=color.orange, title="EMA Long")

// Plot Ichimoku Components
plot(senkou_span_a, color=color.green, title="Senkou Span A", offset=displacement)
plot(senkou_span_b, color=color.red, title="Senkou Span B", offset=displacement)

// // Plot Support and Resistance using lines
// var line resistance_line = na
// var line support_line = na
// if bar_index > 1
//     line.delete(resistance_line)
//     line.delete(support_line)
// resistance_line := line.new(x1=bar_index - 1, y1=resistance_level, x2=bar_index, y2=resistance_level, color=color.red, width=1, style=line.style_dotted)
// support_line := line.new(x1=bar_index - 1, y1=support_level, x2=bar_index, y2=support_level, color=color.green, width=1, style=line.style_dotted)

// Plot OBV
plot(obv, color=color.purple, title="OBV")

// Plot Background for Trend (Bullish/Bearish)
bgcolor(close > ema_long_val ? color.new(color.green, 90) : color.new(color.red, 90), title="Trend Background")

// === Alerts ===
alertcondition(buy_signal, title="Buy Alert", message="Buy Signal Triggered")
alertcondition(sell_signal, title="Sell Alert", message="Sell Signal Triggered")

// === Strategy Execution ===
if buy_signal
    strategy.entry("Buy", strategy.long)

if sell_signal
    strategy.close("Buy")
    strategy.exit("Sell", "Buy", stop=close - atr_multiplier * atr_val, limit=close + atr_multiplier * atr_val)


관련

더 많은