피보나치 리트랙먼트 역전 전략

저자:차오장, 날짜: 2023-12-07 15:15:26
태그:

img

전반적인 설명

피보나치 리트레이싱 역전 전략은 피보나치 리트레이싱 수준과 상대적 강도 지표 (RSI) 지표에 기반한 양적 거래 전략이다. 이 전략은 피보나치 채널 이론과 과잉 구매 / 과잉 판매 지표를 결합하여 단기 주기에 이익을 얻기 위해 주요 추세에 대한 역전 거래를 수행합니다.

전략 논리

전략은 먼저 0.618 피보나치 레벨을 기반으로 두 가지 중요한 가격 영역을 계산합니다. 0.618 배 높은 포인트와 0.618 배 낮은 포인트입니다. 가격이이 영역에 접근하면 반전이 발생할 수 있다고 믿습니다.

또한, 전략은 또한 RSI 지표를 사용하여 과잉 구매 / 과잉 판매 조건을 결정합니다. 30 이하의 RSI는 과잉 판매 상태를 나타냅니다. 70 이상의 RSI는 과잉 구매 상태를 나타냅니다. 이것은 또한 잠재적 인 가격 반전을 암시합니다.

두 조건을 결합하면 구매 신호는: 0.618 배 낮은 지점 이상으로 닫고 RSI는 30 이하가 될 때 발동됩니다. 판매 신호는: 0.618 배 높은 지점 아래로 닫고 RSI는 70 이상으로 갈 때 발동됩니다.

구매 신호에 따라 전략은 시장 가격에 길게 갈 것입니다. 판매 신호에 따라 시장 가격에 짧게 갈 것입니다. 또한 수익을 취하고 손실을 멈추는 수준이 설정되어 가격이 특정 비율로 유리한 방향으로 움직일 때 (이익을 취) 또는 특정 비율로 부정적인 방향으로 움직일 때 포지션이 종료됩니다.

장점

이 전략은 트렌드와 역전 시나리오를 결합하여 주요 트렌드를 고려하고 단기 리트랙시에서 이익을 얻습니다. 주요 장점은 다음과 같습니다.

  1. 피보나치 레벨은 내재적인 지지/저항 특성을 가지고 있으며 효과적인 가격 영역 지표로 작용합니다.
  2. RSI의 과잉 구매/ 과잉 판매 상태는 잠재적인 전환점을 시사합니다.
  3. 긴/단 신호가 명확해, 역전 기회를 잡습니다.
  4. 이윤/손실 중지 통제 위험을 취합니다.

위험성

주의해야 할 몇 가지 위험 요소가 있습니다.

  1. 단기적 반등에도 불구하고 큰 트렌드 반전이 일어나지 않으면 손실이 발생할 수 있습니다. 더 큰 시간 프레임 분석은 이것을 피하는 데 도움이 될 수 있습니다.
  2. 역전 전에 스톱 손실을 유발할 수 있습니다. 더 넓은 스톱 손실 영역이 도움이 될 수 있습니다.
  3. 반전은 오랫동안 지속될 수 있고 충분한 자본 지원이 필요합니다.

최적화

이 전략은 다음과 같이 더 최적화 될 수 있습니다.

  1. 더 많은 역사적 데이터를 수집하여 피보나치 영역 범위와 RSI 과잉 구매/ 과잉 판매 라인 등의 주요 매개 변수를 테스트하고 조정하여 실제 시장에 더 잘 맞게합니다.

  2. 촛불 패턴, 볼륨 변화 등과 같은 더 강력한 신호를 생성하기 위해 더 많은 지표를 포함합니다.

  3. 다른 거래 도구의 특성에 따라 매개 변수 또는 규칙을 조정합니다.

  4. 동적 스톱 로스 메커니즘을 실시간 가격에 추가합니다.

결론

피보나치 리트레이스먼트 역전 전략은 단기적으로 수익을 내기 위해 추세와 역전 시나리오를 균형을 맞추고 위험을 통제합니다. 추가 최적화는 더 큰 수익을 가져올 수 있습니다.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBS Trade", overlay=true)

// Fibonacci seviyeleri
fibonacciLevels = input(0.618, title="Fibonacci Düzeltme Seviyesi")

// RSI ayarları
rsiLength = input(14, title="RSI Periyodu")
overboughtLevel = input(70, title="RSI Satış Sinyali Seviyesi")
oversoldLevel = input(30, title="RSI Alış Sinyali Seviyesi")

// Take Profit ve Stop Loss yüzdesi
takeProfitPercent = input(1, title="Take Profit Yüzdesi") / 100
stopLossPercent = input(1, title="Stop Loss Yüzdesi") / 100

// Fibonacci seviyelerini hesapla
highFibo = high * (1 + fibonacciLevels)
lowFibo = low * (1 - fibonacciLevels)

// RSI hesaplama
rsiValue = ta.rsi(close, rsiLength)

// Alış ve satış koşulları
buyCondition = close > lowFibo and rsiValue < 30
sellCondition = close < highFibo and rsiValue > overboughtLevel

// Take Profit ve Stop Loss seviyeleri
takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLong = strategy.position_avg_price * (1 - stopLossPercent)

takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
stopLossShort = strategy.position_avg_price * (1 + stopLossPercent)

// Alış ve satış işlemleri
if (buyCondition)
    strategy.entry("Buy", strategy.long)
if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Take Profit ve Stop Loss seviyeleri
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Close Buy", from_entry="Buy", limit=takeProfitLong, stop=stopLossLong)
if (strategy.position_size < 0)
    strategy.exit("Take Profit/Close Sell", from_entry="Sell", limit=takeProfitShort, stop=stopLossShort)

// Sadece mumları ve buy/sell işlemlerini göster
plot(close, color=color.black, title="Close")

// Destek ve direnç bölgeleri
supportLevel = input(27, title="Fibonacci Destek Seviyesi")
resistanceLevel = input(200, title="Direnç Seviyesi")

hline(supportLevel, "Fibonacci Destek Seviyesi", color=color.green)
hline(resistanceLevel, "Direnç Seviyesi", color=color.red)

// Trend çizgileri
var line trendLine = na
if (ta.crossover(close, highFibo))
    trendLine := line.new(bar_index[1], highFibo[1], bar_index, highFibo, color=color.green, width=2)
if (ta.crossunder(close, lowFibo))
    trendLine := line.new(bar_index[1], lowFibo[1], bar_index, lowFibo, color=color.red, width=2)

// RSI ve Fibo'yu grafiğe çizme
hline(overboughtLevel, "RSI Satış Sinyali", color=color.red, linestyle=hline.style_dashed)
hline(oversoldLevel, "RSI Alış Sinyali", color=color.green, linestyle=hline.style_dashed)
plot(rsiValue, color=color.purple, title="RSI")

// 15 dakikalıkta 3 mumda bir alarm
is15MinBar = ta.change(time('15'), 1)
if (is15MinBar % 3 == 0)
    alert("15 dakikalıkta 3 mum geçti.")


더 많은