피보나치 0.7 수준에 기반한 트렌드 브레이크아웃 양적 거래 전략

SL TP
생성 날짜: 2024-12-27 15:51:13 마지막으로 수정됨: 2024-12-27 15:51:13
복사: 4 클릭수: 532
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

피보나치 0.7 수준에 기반한 트렌드 브레이크아웃 양적 거래 전략

개요

이 전략은 피보나치 0.7 수정 수준을 기반으로 하는 트렌드 돌파 거래 시스템입니다. 지정된 추적 기간 동안의 최고가와 최저가를 계산하여 피보나치 0.7 수준을 결정하고 가격이 해당 수준을 돌파할 때 거래 신호를 생성합니다. 이 전략은 위험을 관리하기 위해 고정된 비율의 이익실현과 손절매를 사용하고, 기본적으로 총 계좌 가치의 5%를 단일 거래 금액으로 사용합니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.

  1. 피보나치 수준을 동적으로 계산합니다. 지정된 추적 기간(기본값은 20기간) 동안 가장 높은 가격과 가장 낮은 가격을 지속적으로 추적하고 0.7 피보나치 수정 위치를 계산합니다.
  2. 브레이크아웃 신호 확인: 롱 신호는 종가가 0.7 레벨을 아래에서 돌파할 때 생성되고, 숏 신호는 종가가 위에서 돌파할 때 생성됩니다.
  3. 위험 관리: 시스템은 대칭적 이익 실현 및 손절매 조건을 설정하는데, 기본 이익 실현은 1.8%이고 손절매는 1.2%입니다. 이 설정은 양의 기대 가치라는 개념을 구현합니다.
  4. 포지션 관리: 총 계좌 가치의 고정된 비율을 개설 금액으로 사용하면 자금을 동적으로 관리하고 위험 관리를 안정화하는 데 도움이 됩니다.

전략적 이점

  1. 기술 지표의 과학적 선택: 피보나치 수정은 시장에서 널리 인정받는 기술 분석 도구이며, 0.7 수준은 일반적으로 강력한 지지 또는 저항을 나타냅니다.
  2. 명확한 신호 논리: 가격 돌파를 거래 트리거로 사용하면 복잡한 신호 조합으로 인해 발생할 수 있는 지연을 피할 수 있습니다.
  3. 합리적인 위험-수익 비율: 이익실현 비율과 손절매 비율의 설정은 긍정적인 기대값을 반영하며, 이는 장기적으로 안정적인 수익에 도움이 됩니다.
  4. 유연한 자금 관리: 계좌 비율에 따라 포지션이 개설되고, 계좌 규모가 변경되면 거래량이 자동으로 조정됩니다.

전략적 위험

  1. 시장 환경에 따른 의존성: 변동성이 큰 시장에서는 거짓 돌파 신호가 자주 발생할 수 있으며, 이로 인해 거래 비용이 증가할 수 있습니다.
  2. 매개변수 민감도: 회고 기간, 이익실현 비율, 손절매 비율과 같은 매개변수를 선택하는 것은 전략의 성과에 상당한 영향을 미칩니다.
  3. 슬리피지 영향: 거래량이 적은 시장에서는 슬리피지 위험이 더 클 수 있습니다.
  4. 기술적 한계: 단일 기술 지표로는 시장의 다차원적 정보를 완벽하게 포착하지 못할 수 있습니다.

전략 최적화 방향

  1. 신호 필터링: 거래량과 변동성과 같은 보조 지표를 도입하여 거짓 돌파 신호를 걸러낼 수 있습니다.
  2. 동적 매개변수: 시장 변동성에 따라 추적 기간, 이익 실현 비율 및 손절매 비율을 동적으로 조정하는 것을 고려하세요.
  3. 시간 필터링: 거래 시간 창의 한도를 늘려 변동성이 높은 기간을 피하세요.
  4. 다중 주기 검증: 여러 시간대에 대한 확인 메커니즘을 추가하여 신호 안정성을 개선합니다.

요약하다

이 전략은 고전적인 피보나치 이론을 기반으로 하며 추세 돌파와 위험 관리의 핵심 요소를 결합합니다. 몇 가지 한계는 있지만, 적절한 매개변수 최적화와 신호 필터링을 통해 다양한 시장 환경에서 안정적인 성능을 유지할 것으로 기대됩니다. 전략을 성공적으로 실행하려면 트레이더가 시장 특성을 깊이 이해하고 실제 상황에 따라 적절한 조정 및 최적화를 해야 합니다.

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

//@version=5
strategy("Fibonacci 0.7 Strategy - 60% Win Rate", overlay=true)

// Input parameters
fibonacci_lookback = input.int(20, minval=1, title="Fibonacci Lookback Period")
take_profit_percent = input.float(1.8, title="Take Profit (%)")
stop_loss_percent = input.float(1.2, title="Stop Loss (%)")

// Calculating Fibonacci levels
var float high_level = na
var float low_level = na
if (ta.change(ta.highest(high, fibonacci_lookback)))
    high_level := ta.highest(high, fibonacci_lookback)
if (ta.change(ta.lowest(low, fibonacci_lookback)))
    low_level := ta.lowest(low, fibonacci_lookback)

fib_level_0_7 = high_level - ((high_level - low_level) * 0.7)

// Entry Conditions
buy_signal = close > fib_level_0_7 and close[1] <= fib_level_0_7
sell_signal = close < fib_level_0_7 and close[1] >= fib_level_0_7

// Risk management
long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100)
long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100)
short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100)
short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100)

// Execute trades
if (buy_signal)
    strategy.entry("Buy", strategy.long)
if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Take Profit and Stop Loss
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", "Buy", stop=long_stop_loss, limit=long_take_profit)
if (strategy.position_size < 0)
    strategy.exit("Take Profit/Stop Loss", "Sell", stop=short_stop_loss, limit=short_take_profit)

// Plot Fibonacci Level
plot(fib_level_0_7, color=color.blue, title="Fibonacci 0.7 Level")