Chiến lược đảo ngược Fibonacci Retracement là một chiến lược giao dịch định lượng dựa trên mức độ đảo ngược Fibonacci và chỉ số chỉ số sức mạnh tương đối (RSI). Chiến lược này kết hợp lý thuyết kênh Fibonacci và chỉ số mua quá mức / bán quá mức để thực hiện các giao dịch đảo ngược chống lại xu hướng chính để kiếm lợi nhuận trong các chu kỳ ngắn hạn.
Chiến lược đầu tiên tính toán hai vùng giá quan trọng dựa trên mức Fibonacci 0,618 - điểm cao gấp 0,618 lần và điểm thấp gấp 0,618 lần.
Ngoài ra, chiến lược cũng sử dụng chỉ số RSI để xác định điều kiện mua quá mức / bán quá mức. RSI dưới 30 cho thấy tình trạng bán quá mức trong khi RSI trên 70 cho thấy tình trạng mua quá mức. Chúng cũng ngụ ý khả năng đảo ngược giá.
Kết hợp hai điều kiện, tín hiệu mua được kích hoạt khi: đóng cửa vượt quá điểm thấp 0,618 lần và RSI dưới 30; tín hiệu bán được kích hoạt khi: đóng cửa vượt quá điểm cao 0,618 lần và RSI vượt quá 70.
Khi tín hiệu mua, chiến lược sẽ dài ở giá thị trường. Khi tín hiệu bán, nó sẽ ngắn ở giá thị trường. Ngoài ra, mức lợi nhuận và dừng lỗ được thiết lập để vị trí sẽ được đóng khi giá di chuyển thuận lợi bằng một tỷ lệ phần trăm nhất định (lấy lợi nhuận) hoặc di chuyển bất lợi bằng một tỷ lệ phần trăm nhất định (đừng lỗ).
Chiến lược kết hợp cả hai kịch bản xu hướng và đảo ngược, tính đến xu hướng chính trong khi hưởng lợi từ việc khôi phục ngắn hạn.
Có một số rủi ro cần được nhận thức:
Chiến lược có thể được tối ưu hóa thêm bằng cách:
Thu thập nhiều dữ liệu lịch sử hơn để kiểm tra và điều chỉnh các thông số chính như phạm vi vùng Fibonacci và các đường mua quá mức / bán quá mức RSI để phù hợp hơn với thị trường thực.
Kết hợp nhiều chỉ số hơn để tạo ra các tín hiệu mạnh mẽ hơn, như các mô hình nến, thay đổi khối lượng vv
Điều chỉnh các tham số hoặc quy tắc theo các đặc điểm của các công cụ giao dịch khác nhau.
Thêm cơ chế dừng lỗ năng động để theo dõi giá theo thời gian thực.
Chiến lược đảo ngược Fibonacci Retracement cân bằng các kịch bản xu hướng và đảo ngược để kiếm lợi nhuận trong ngắn hạn trong khi kiểm soát rủi ro.
/*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.")