
La stratégie est un système de trading dynamique multidimensionnel qui combine les indicateurs d’énergie de transaction (OBV), les moyennes mobiles (SMA) et les indicateurs relativement faibles (RSI). La stratégie capture la dynamique du marché en surveillant les signaux croisés de l’OBV avec ses moyennes mobiles, tout en utilisant le RSI pour filtrer et éviter efficacement les chasses excessives. La stratégie intègre également des mécanismes d’arrêt de pourcentage et de prise de profit, permettant une gestion équilibrée des risques et des gains.
La logique centrale de la stratégie est basée sur trois dimensions:
La stratégie utilise un pourcentage fixe de stop loss (< 2%) et de profit (< 4%) et ce cadre de gestion du risque symétrique aide à maintenir un ratio de risque/revenu stable.
Il s’agit d’une stratégie de trading dynamique multidimensionnelle conçue de manière rationnelle, qui combine les avantages des indicateurs techniques pour construire un système de trading complet. L’avantage central de la stratégie réside dans son mécanisme de confirmation de signal à plusieurs niveaux et son cadre de gestion des risques normalisé. Bien que certains risques potentiels existent, la stabilité et l’adaptabilité de la stratégie peuvent être encore améliorées par l’orientation de l’optimisation proposée. La valeur pratique de la stratégie se traduit principalement par sa logique claire, sa facilité d’implémentation et de maintenance.
/*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)