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

피보나치 리트레이싱 및 확장 다중 지표 양적 거래 전략

저자:차오장, 날짜: 2024-11-12 10:51:02
태그:EMA

img

전반적인 설명

이 전략은 EMA 트렌드 결정과 결합된 피보나치 리트레이싱 및 확장 레벨을 기반으로 한 복합 양적 거래 시스템입니다. 이 전략은 시장에서 중요한 지원 및 저항 수준을 식별하고 트렌드 신호를 기반으로 거래를 실행합니다. 시스템은 시장 트렌드를 결정하기 위해 20 기간 및 50 기간 EMA를 사용하고 최적의 거래 기회를 찾기 위해 피보나치 리트레이싱 레벨을 사용합니다.

전략 원칙

핵심 논리는 세 가지 주요 구성 요소로 구성됩니다. 첫째, 가격 범위를 결정하기 위해 지난 10 기간 동안 가장 높고 가장 낮은 가격을 계산합니다. 둘째,이 범위에 기반하여 다섯 가지 주요 피보나치 리트레이싱 레벨 (0.236, 0.382, 0.5, 0.618, 0.786) 을 계산합니다. 마지막으로, 20 및 50 기간 EMA의 교차를 통해 트렌드 방향을 결정합니다. 가격이 상승 추세에서 리트레이싱 수준을 넘을 때 구매 신호가 생성되며, 가격이 하락 추세에서 리트레이싱 수준을 넘을 때 판매 신호가 유발됩니다.

전략적 장점

  1. 트렌드 추적 및 가격 리트레이싱 개념을 결합하여 거래 정확성을 향상시킵니다.
  2. 시장에서 강한 심리적 의미를 가진 주요 가격 수준으로 피보나치 순서를 사용합니다.
  3. 트렌드 식별을 위해 EMA 크로스오버를 사용하여 다양한 시장에서 빈번한 거래를 피합니다.
  4. 이해와 유지보수가 쉬운 깔끔한 시스템 디자인
  5. 다양한 시간 프레임에 적응할 수 있으며, 강력한 다재다능성을 보여줍니다.

전략 위험

  1. 매우 변동적인 시장에서 잘못된 신호를 생성할 수 있습니다.
  2. 추세의 지속에 의존하고, 다양한 시장에서 잠재적으로 저조한 성과를 내고
  3. 역사적인 최고와 최저에 기초한 리트랙션 레벨 계산은 시장에서 뒤쳐질 수 있습니다.
  4. 입구 지점 선택은 충분히 정확하지 않을 수 있습니다. 더 넓은 중지 손실로 이어집니다.
  5. 시스템에는 동적 위치 관리 메커니즘이 없습니다.

전략 최적화 방향

  1. 트렌드 결정의 정확성을 향상시키기 위해 부피 지표를 포함
  2. 더 나은 위험 통제를 위해 동적 스톱 로스 메커니즘을 구현합니다.
  3. 시장 리듬에 더 잘 맞춰 retracement level 계산 기간을 최적화
  4. 높은 변동성 기간 동안 거래를 피하기 위해 변동성 필터를 추가합니다.
  5. 시장 조건에 따라 지분을 조정하는 보다 유연한 위치 관리 시스템을 설계

요약

이 전략은 고전적인 기술 분석 도구를 결합하여 비교적 완전한 거래 시스템을 구축합니다. 최적화의 영역이 있지만 전반적인 프레임워크는 좋은 시장 적응력을 보여줍니다. 지속적인 최적화와 개선으로 전략은 실제 거래에서 더 나은 성능을 얻을 수 있습니다. 실시간 거래 전에 철저한 역사 데이터 백테스팅과 매개 변수 최적화를 수행하는 것이 좋습니다.


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

//@version=5
strategy("Fibonacci Retracement and Extension Strategy", overlay=true)

// Define the Fibonacci levels for retracement and extension
fibRetracementLevels = array.new_float(5)
array.set(fibRetracementLevels, 0, 0.236)
array.set(fibRetracementLevels, 1, 0.382)
array.set(fibRetracementLevels, 2, 0.5)
array.set(fibRetracementLevels, 3, 0.618)
array.set(fibRetracementLevels, 4, 0.786)

fibExtensionLevels = array.new_float(5)
array.set(fibExtensionLevels, 0, 1.618)
array.set(fibExtensionLevels, 1, 2.618)
array.set(fibExtensionLevels, 2, 3.618)
array.set(fibExtensionLevels, 3, 4.236)
array.set(fibExtensionLevels, 4, 5.618)

// Calculate the high and low prices for the last 10 bars
highPrice = ta.highest(high, 10)
lowPrice = ta.lowest(low, 10)

// Calculate the Fibonacci retracement levels
fibRetracement = array.new_float(5)
for i = 0 to 4
    array.set(fibRetracement, i, highPrice - (highPrice - lowPrice) * array.get(fibRetracementLevels, i))

// Calculate the trend using the Exponential Moving Average (EMA)
shortEMA = ta.ema(close, 20)
longEMA = ta.ema(close, 50)

// Define the trend conditions
isUptrend = shortEMA > longEMA
isDowntrend = shortEMA < longEMA

// Generate buy and sell signals
var float lastFibRetracementLevel = na
var float lastFibExtensionLevel = na

// Buy condition: price crosses above the highest retracement level
if (isUptrend)
    for i = 0 to 4
        if (close > array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Buy", strategy.long)

// Sell condition: price crosses below the lowest retracement level
if (isDowntrend)
    for i = 0 to 4
        if (close < array.get(fibRetracement, i))
            lastFibRetracementLevel := array.get(fibRetracement, i)
            strategy.entry("Sell", strategy.short)

// Plotting the Fibonacci levels on the chart
// for i = 0 to 4
//     line.new(bar_index[10], array.get(fibRetracement, i), bar_index, array.get(fibRetracement, i), color=color.new(color.blue, 70), width=1)

// Plot the EMAs
plot(shortEMA, color=color.red, title="Short EMA")
plot(longEMA, color=color.blue, title="Long EMA")

관련

더 많은