
Chiến lược này sử dụng sự kết hợp của chỉ số MACD và chỉ số RSI để thực hiện cơ chế nhập cảnh xác nhận kép, cân bằng giữa khả năng kiếm lợi nhuận và kiểm soát rủi ro, nhằm đạt được lợi nhuận ổn định trên đường dài trung bình.
Chiến lược này chủ yếu sử dụng chỉ số MACD để xác định xu hướng thị trường và thời gian vào thị trường. Đường MACD phá vỡ đường tín hiệu được coi là tín hiệu mua, và đường MACD phá vỡ đường tín hiệu bán. Ngoài ra, khu vực quá mua quá bán của chỉ số RSI được sử dụng để lọc phá vỡ giả.
Để đảm bảo độ tin cậy của tín hiệu giao dịch, chiến lược này cũng đưa ra phán đoán về khối lượng giao dịch. Chiến lược sẽ chỉ phát tín hiệu giao dịch khi khối lượng giao dịch lớn hơn khối lượng giao dịch trung bình 20 ngày. Điều này có thể tránh tín hiệu sai khi khối lượng giao dịch trên thị trường không đủ.
Cuối cùng, chiến lược cũng sử dụng hướng của thực thể K-line như một cách để theo dõi dừng và xác nhận. Khi hướng của thực thể K-line thay đổi, nó sẽ xóa vị trí hiện tại. Điều này có thể khóa lợi nhuận và ngăn chặn lợi nhuận quay trở lại.
Chiến lược này có thể được cải thiện hơn nữa bằng cách tối ưu hóa tham số và thêm các chỉ số kỹ thuật khác. Cần lưu ý rằng không nên theo đuổi sự phức tạp quá mức, giữ chiến lược đơn giản và ổn định là rất quan trọng.
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Al-Sat Sinyali ve Teyidi", overlay=true)
// MACD (Hareketli Ortalama Yakınsaklık Sapma)
[macdLine, signalLine, _] = ta.macd(close, 5, 13, 5)
// RSI (Göreceli Güç Endeksi)
rsiValue = ta.rsi(close, 14)
// Hacim
volumeAverage = ta.sma(volume, 20)
// RSI ve MACD Filtreleri
rsiOverbought = rsiValue > 70
rsiOversold = rsiValue < 30
macdBuySignal = ta.crossover(macdLine, signalLine) and not rsiOverbought
macdSellSignal = ta.crossunder(macdLine, signalLine) and not rsiOversold
// Al-Sat Stratejisi
shouldBuy = ta.crossover(close, open) and not ta.crossover(close[1], open[1]) and macdBuySignal and volume > volumeAverage
shouldSell = ta.crossunder(close, open) and not ta.crossunder(close[1], open[1]) and macdSellSignal and volume > volumeAverage
strategy.entry("Buy", strategy.long, when=shouldBuy)
strategy.entry("Sell", strategy.short, when=shouldSell)
// Teyit için bir sonraki mumu bekleme
strategy.close("Buy", when=ta.crossover(close, open))
strategy.close("Sell", when=ta.crossunder(close, open))
// Görselleştirmeyi devre dışı bırakma
plot(na)
// Al-Sat Etiketleri
plotshape(series=shouldBuy, title="Al Sinyali", color=color.green, style=shape.triangleup, location=location.belowbar, size=size.small, text="Al")
plotshape(series=shouldSell, title="Sat Sinyali", color=color.red, style=shape.triangledown, location=location.abovebar, size=size.small, text="Sat")
// Varsayımsal bir sonraki mumun kapanış fiyatını hesapla
nextBarClose = close[1]
plot(nextBarClose, color=color.blue, linewidth=2, title="Tahmin Edilen Kapanış Fiyatı")