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

피보나치 0.7 레벨 트렌드 돌파를 기반으로 한 양적 거래 전략

저자:차오장, 날짜: 2024-12-27 15:51:13
태그:SLTP

img

전반적인 설명

이 전략은 피보나치 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")


관련

더 많은