
Chiến lược này là một hệ thống giao dịch động lượng đa chiều kết hợp các chỉ số năng lượng giao dịch (OBV), đường trung bình di chuyển (SMA) và chỉ số tương đối mạnh (RSI). Chiến lược này nắm bắt động lượng thị trường bằng cách theo dõi tín hiệu chéo của OBV với đường trung bình di chuyển của nó, đồng thời sử dụng chỉ số RSI để lọc và tránh hiệu quả quá mức theo đuổi. Chiến lược giảm giá cũng tích hợp các cơ chế dừng lỗ và thu lợi nhuận phần trăm, thực hiện quản lý cân bằng rủi ro lợi nhuận.
Lập luận cốt lõi của chiến lược được xây dựng trên ba chiều:
Chiến lược sử dụng tỷ lệ dừng cố định (%) và mục tiêu thu lợi nhuận (%), khung quản lý rủi ro đối xứng này giúp duy trì tỷ lệ lợi nhuận / rủi ro ổn định.
Đây là một chiến lược giao dịch động lực đa chiều được thiết kế hợp lý, xây dựng một hệ thống giao dịch hoàn chỉnh bằng cách kết hợp các lợi thế của các chỉ số kỹ thuật. Ưu điểm cốt lõi của chiến lược là cơ chế xác nhận tín hiệu đa tầng và khuôn khổ quản lý rủi ro theo quy định. Mặc dù có một số rủi ro tiềm ẩn, nhưng có thể nâng cao hơn nữa sự ổn định và thích ứng của chiến lược thông qua hướng tối ưu hóa được đề xuất.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("OBV Strategy with SMA, RSI, SL and TP (Improved Visualization)", overlay=true)
// حساب OBV يدويًا
obv = ta.cum(math.sign(close - close[1]) * volume)
// إعداد المتوسط المتحرك البسيط لـ OBV
lengthOBV = input(20, title="OBV SMA Length")
obvSMA = ta.sma(obv, lengthOBV)
// إعداد مؤشر RSI
lengthRSI = input(14, title="RSI Length")
rsi = ta.rsi(close, lengthRSI)
// إعدادات وقف الخسارة وجني الأرباح
stopLossPerc = input(2.0, title="Stop Loss %") / 100 // 2% وقف خسارة
takeProfitPerc = input(4.0, title="Take Profit %") / 100 // 4% جني أرباح
// حساب مستوى وقف الخسارة وجني الأرباح
longStopLoss = close * (1 - stopLossPerc)
longTakeProfit = close * (1 + takeProfitPerc)
shortStopLoss = close * (1 + stopLossPerc)
shortTakeProfit = close * (1 - takeProfitPerc)
// إعداد شروط الشراء
longCondition = ta.crossover(obv, obvSMA) and rsi < 70
if (longCondition)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", stop=longStopLoss, limit=longTakeProfit)
// إعداد شروط البيع
shortCondition = ta.crossunder(obv, obvSMA) and rsi > 30
if (shortCondition)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", stop=shortStopLoss, limit=shortTakeProfit)
// رسم OBV والمؤشرات الأخرى على الرسم البياني
plot(obv, title="OBV", color=color.blue, linewidth=2) // رسم OBV بخط أزرق عريض
plot(obvSMA, title="OBV SMA", color=color.orange, linewidth=2) // رسم SMA بخط برتقالي
// رسم إشارات الشراء والبيع على الرسم البياني
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// رسم RSI في نافذة منفصلة بوضوح أكبر
hline(70, "RSI Overbought", color=color.red, linestyle=hline.style_dashed)
hline(30, "RSI Oversold", color=color.green, linestyle=hline.style_dashed)
plot(rsi, title="RSI", color=color.purple, linewidth=2)
// إضافة منطقة RSI بالألوان
bgcolor(rsi > 70 ? color.new(color.red, 90) : rsi < 30 ? color.new(color.green, 90) : na)