다중 레벨 피보나치 이동 평균 추세 추적 전략

FIB EMA MA SMA
생성 날짜: 2024-11-29 15:09:56 마지막으로 수정됨: 2024-11-29 15:09:56
복사: 0 클릭수: 486
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 레벨 피보나치 이동 평균 추세 추적 전략

개요

이 전략은 피포나치 회귀, 다중 지수 이동 평균 및 거래량과 결합한 트렌드 추적 거래 시스템이다. 이 전략은 가격의 다른 피포나치 회귀 레벨 (<0.382, <0.618, ) 의 위치를 분석하여 다중 주기 EMA (<20/50/100/200) 와 결합하여 트렌드를 확인하고 거래량 하락 필터링을 통해 잠재적인 거래 기회를 식별한다.

전략 원칙

이 전략의 핵심 논리는 다단계 기술 분석 방식에 기반을 두고 있습니다.

  1. 30주기를 회전 구간으로 사용하여 피보나치 회귀 수준을 계산하여 가격 운동의 지지 저항 프레임워크를 설정합니다.
  2. 20/50/100/200 주기의 지수 이동 평균을 통해 다단계 트렌드 확인 시스템을 구축
  3. 가격이 0.382 피보나치 수준에 가까워지고 거래량이 하락보다 많을 때, 가격이 평균선 위에 있다면, 다중 신호를 트리거
  4. 가격이 0.618의 피보나치 수준에 가까워지고 거래량이 하락보다 많을 때, 가격이 평균선 아래에 있다면 마이너스 신호를 니다.
  5. %에 기반한 스톱 스톱 손실 메커니즘이 각각 6%와 3%로 설정되어 있습니다.

전략적 이점

  1. 다차원 분석: 가격 형태, 트렌드 및 거래량의 세 차원을 결합하여 신호의 신뢰성을 향상시킵니다.
  2. 리스크 관리가 잘 되어 있습니다. 명확한 스톱 스톱 리스 조건을 설정하여 거래 당 위험을 효과적으로 제어합니다.
  3. 트렌드 확인이 충분하다: 트렌드의 강도와 방향을 더 정확하게 판단할 수 있는 다중평균선 시스템을 사용한다.
  4. 신호 필터링 엄격함: 가격, 평균선 및 거래량 조건을 동시에 충족시켜서 가짜 돌파의 가능성을 낮추는 것
  5. 높은 가시성: 태그 시스템을 통해 출전 입구를 명확하게 표시하여 분석 및 최적화를 용이하게 합니다.

전략적 위험

  1. 흔들림 시장 위험: 가로판 흔들림 시장에서 빈번한 잘못된 신호가 발생할 수 있으며, 흔들림 지표 필터를 추가하는 것이 좋습니다.
  2. 슬라이드 포인트 위험: 거래량 조건의 제약 하에, 실행 슬라이드 포인트에 직면할 수 있으며, 실제 상황에 따라 거래량 값을 조정할 필요가 있습니다.
  3. 자금 관리 위험: 고정된 비율의 상쇄 손실은 특정 상황에서 충분히 유연하지 않을 수 있으며, 변동율에 따라 동적으로 조정하는 것이 좋습니다.
  4. 트렌드 의존성: 전략은 명백한 트렌드에서 잘 작동하지만, 트렌드 전환 기간 동안 연속적인 손실이 발생할 수 있습니다.
  5. 매개 변수 감수성: 여러 매개 변수들의 조합은 과도한 적합성의 위험을 증가시키고, 다른 시간 주기에서 재검토 검증이 필요합니다.

전략 최적화 방향

  1. 역동적 스톱 최적화: 시장의 변동에 대한 적응력을 높이기 위해 ATR 지표를 도입하여 역동적으로 스톱 거리를 조정하는 것이 좋습니다.
  2. 트렌드 강도 측정: ADX와 같은 트렌드 강도 지표를 추가하여 강한 트렌드 동안 포지션을 늘리고 약한 트렌드 동안 거래를 줄일 수 있습니다.
  3. 거래량 분석의 심화: 거래량 평균선 및 비정상적인 거래량 분석을 추가하여 거래량 분석의 정확성을 향상시키는 것이 좋습니다.
  4. 진입 시점을 최적화: RSI와 같은 변동 지표와 결합하여 트렌드 방향에서 오버 바이 오버 셀 기회를 찾을 수 있습니다.
  5. 포지션 관리 개선: 트렌드 강도 및 시장 변동률에 따라 포지션 비율을 조정하는 것이 좋습니다.

요약하다

이것은 고전적인 기술 분석 도구와 결합하여 세 개의 분석 프레임 워크를 구축하는 잘 설계된 다층 트렌드 추적 전략입니다. 전략의 장점은 신호 확인의 엄격성과 위험 관리의 완전성에 있습니다. 그러나 동시에 흔들리는 시장에서의 성과에 주의를 기울여야합니다. 제안된 최적화 방향, 특히 동적 위험 관리 및 트렌드 강도 측정에 대한 개선으로 전략의 안정성과 수익성은 더욱 향상될 것으로 예상됩니다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ALD Fib Ema SAKALAM", overlay=true)

// Inputs
lookback = input.int(30, title="Lookback Period for Fibonacci", minval=10)
volumeThreshold = input.float(500000, title="24h Volume Threshold", step=50000)
stopLossPct = input.float(3.0, title="Stop Loss %", minval=0.5)
takeProfitPct = input.float(6.0, title="Take Profit %", minval=1.0)
maLength = input.int(50, title="Trend Filter MA Length", minval=1)

// Moving Average (Trend Filter)
ma = ta.sma(close, maLength)

// High and Low for Fibonacci Levels
var float swingHigh = na
var float swingLow = na

if bar_index > lookback
    swingHigh := ta.highest(high, lookback)
    swingLow := ta.lowest(low, lookback)

// Fibonacci Levels Calculation
fib0 = swingLow
fib1 = swingHigh
fib382 = swingHigh - 0.382 * (swingHigh - swingLow)
fib618 = swingHigh - 0.618 * (swingHigh - swingLow)

// 24-hour Volume Calculation
volume24h = ta.sma(volume, 24)

// Plot Fibonacci Levels
plot(fib0, title="Fib 0", color=color.new(color.red, 80))
plot(fib382, title="Fib 0.382", color=color.new(color.green, 50))
plot(fib618, title="Fib 0.618", color=color.new(color.blue, 50))
plot(fib1, title="Fib 1", color=color.new(color.red, 80))
plot(ma, title="Trend Filter MA", color=color.orange)

// Entry Condition: Buy Signal
longCondition = (close <= fib382) and (volume24h > volumeThreshold) and (close > ma)
if (longCondition)
    strategy.entry("Buy", strategy.long)
    label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)

// Exit Conditions
takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPct / 100)
stopLossPrice = strategy.position_avg_price * (1 - stopLossPct / 100)

// Place Exit Orders
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=takeProfitPrice, stop=stopLossPrice)

// Add Labels for Exits
if (strategy.position_size > 0)
    if (high >= takeProfitPrice)
        label.new(bar_index, high, "EXIT (Take Profit)", style=label.style_label_down, color=color.blue, textcolor=color.white)

    if (low <= stopLossPrice)
        label.new(bar_index, low, "EXIT (Stop Loss)", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Selling Conditions
shortCondition = (close >= fib618) and (volume24h > volumeThreshold) and (close < ma)
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white)

// Short Exit Conditions
if (strategy.position_size < 0)
    strategy.exit("Short Take Profit/Stop Loss", from_entry="Sell", limit=strategy.position_avg_price * (1 - takeProfitPct / 100), stop=strategy.position_avg_price * (1 + stopLossPct / 100))

// Add EMA 20/50/100/200
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color=color.orange, title="EMA 20")
plot(short, color=color.red, title="EMA 50")
plot(longer, color=color.black, title="EMA 100")
plot(longest, color=color.green, title="EMA 200")