피보나치 수정 및 확장 다중 지표 양적 거래 전략

EMA
생성 날짜: 2024-11-12 10:51:02 마지막으로 수정됨: 2024-11-12 10:51:02
복사: 1 클릭수: 514
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

피보나치 수정 및 확장 다중 지표 양적 거래 전략

개요

이 전략은 피보나치 회수 및 연장 수준을 기반으로 한 복합형 정량 거래 시스템이며, EMA 평준 트렌드 판단과 결합되어 있습니다. 전략은 시장의 중요한 지지 저항 지점을 식별하여 트렌드 신호와 결합하여 거래합니다. 시스템은 20주기 및 50주기 EMA 평준을 사용하여 시장의 추세를 판단하고, 피보나치 회수 수준을 기반으로 최적의 거래 기회를 찾습니다.

전략 원칙

전략의 핵심 논리는 세 가지 주요 부분으로 구성됩니다. 첫째, 가격 변동 범위를 결정하기 위해 10 주기의 최고 가격과 최저 가격을 계산합니다. 두 번째는 가격 변동 범위를 결정하기 위해 10 주기의 최고 가격과 최저 가격을 계산합니다. 두 번째는 가격 변동 범위를 결정하기 위해 가격 변동 범위를 결정하기 위해 가격 변동 범위를 결정합니다. 그 다음은 가격 변동 범위를 결정하기 위해 가격 변동 범위를 결정하기 위해 가격 변동 범위를 결정합니다.

전략적 이점

  1. 트렌드 추적과 가격 회수 두 가지 거래 개념을 결합하여 거래의 정확성을 향상시킵니다.
  2. 피보나치 수를 핵심 가격 수준으로 사용하는 것, 시장에서 강한 심리적 의미를 갖는 수준
  3. 트렌드를 EMA 평균선으로 판단하여 상자 시장에서 자주 거래되는 것을 피합니다.
  4. 시스템 설계는 간결하고 이해하기 쉽고 유지 관리하기 쉽습니다.
  5. 다양한 시간대에 적용할 수 있으며, 강한 적응력을 가지고 있다.

전략적 위험

  1. 시장의 격렬한 변동 속에서 잘못된 신호가 발생할 수 있습니다.
  2. 동향의 지속성에 따라 변동하는 시장에서 부진할 수 있습니다.
  3. 철수수준의 계산은 역사적으로 높은 하락점을 기반으로 하고 시장에 뒤쳐질 수 있습니다.
  4. 입구 지점 선택이 정확하지 않을 수 있으며, 이로 인해 손실 지점이 멀리 떨어져 있습니다.
  5. 시스템에서 역동성이 부족한 포지션 관리 장치

전략 최적화 방향

  1. 트렌드 판단의 정확성을 높이기 위해 거래량 지표를 도입했습니다.
  2. 더 많은 동적 손해 방지 장치와 더 나은 위험 관리
  3. 회수수준의 계산주기를 최적화하여 시장에 더 적합하게 만듭니다.
  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")