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

다단계 피보나치 EMA 트렌드 다음 전략

저자:차오장, 날짜: 2024-11-29 15:09:56
태그:FIBEMAMASMA

img

전반적인 설명

이 전략은 피보나치 리트레이싱, 다중 지수적인 이동 평균, 볼륨 분석을 결합한 트렌드-추천 거래 시스템이다. 다양한 피보나치 리트레이싱 레벨 (0, 0.382, 0.618, 1) 에서 가격 위치를 분석하고, 다기 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")



관련

더 많은