
یہ حکمت عملی ایک مقداری تجارتی نظام ہے جو رشتہ دار طاقت انڈیکس (RSI) اور موونگ ایوریج (MA) کو یکجا کرتا ہے تاکہ بازار کے رجحانات اور دو اشاریوں کی ہم آہنگی کے ذریعے تجارتی مواقع کی نشاندہی کی جا سکے۔ تجارتی سگنلز کی وشوسنییتا کو بڑھانے کے لیے یہ نظام حجم اور اتار چڑھاؤ کے فلٹرز کو بھی شامل کرتا ہے۔ حکمت عملی کا بنیادی خیال یہ ہے کہ فاسٹ موونگ ایوریج اور سلو موونگ ایوریج کے کراس اوور کے ذریعے رجحان کی سمت کا تعین کیا جائے اور رفتار کی تصدیق کے لیے RSI کا استعمال کیا جائے، بالآخر تجارتی فیصلے کا ایک مکمل فریم ورک تشکیل دیا جائے۔
حکمت عملی دو پرت سگنل کی تصدیق کے طریقہ کار کو اپناتی ہے:
یہ حکمت عملی رجحان اور رفتار کے اشارے کا جامع استعمال کرتے ہوئے ایک نسبتاً مکمل تجارتی نظام قائم کرتی ہے۔ سسٹم کے فوائد اس کے ملٹی لیول سگنل کنفرمیشن میکانزم اور پرفیکٹ رسک مینجمنٹ سسٹم میں پوشیدہ ہیں، لیکن اصل اطلاق میں، حکمت عملی کی کارکردگی پر مارکیٹ کے ماحول کے اثرات پر توجہ دینا اور حقیقی حالات کی بنیاد پر پیرامیٹرز کو بہتر بنانا ضروری ہے۔ مسلسل بہتری اور اصلاح کے ذریعے، حکمت عملی سے مارکیٹ کے مختلف ماحول میں مستحکم کارکردگی کو برقرار رکھنے کی توقع ہے۔
/*backtest
start: 2024-01-17 00:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
// © Boba2601
//@version=5
strategy("RSI-MA Synergy", overlay=true, margin_long=100, margin_short=100)
// === Налаштування індикаторів ===
length_rsi = input.int(14, title="RSI Period", group="Індикатори")
fastMALength = input.int(9, title="Fast MA Length", group="Індикатори")
slowMALength = input.int(21, title="Slow MA Length", group="Індикатори")
// === Налаштування стоп-лосу і тейк-профіту ===
useStopLossTakeProfit = input.bool(true, title="Використовувати стоп-лос і тейк-профіт", group="Стоп-лос і Тейк-профіт")
stopLossPercent = input.float(2.0, title="Стоп-лос (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")
takeProfitPercent = input.float(4.0, title="Тейк-профіт (%)", minval=0.1, step=0.1, group="Стоп-лос і Тейк-профіт")
// === Налаштування об'єму та волатильності ===
useVolumeFilter = input.bool(false, title="Використовувати фільтр об'єму", group="Об'єм та Волатильність")
volumeThreshold = input.int(50000, title="Мінімальний об'єм", group="Об'єм та Волатильність")
useVolatilityFilter = input.bool(false, title="Використовувати фільтр волатильності", group="Об'єм та Волатильність")
atrLength = input.int(14, title="Період ATR для волатильності", group="Об'єм та Волатильність")
volatilityThreshold = input.float(1.5, title="Мінімальна волатильність (ATR)", step=0.1, group="Об'єм та Волатильність")
// === Розрахунок індикаторів ===
rsiValue = ta.rsi(close, length_rsi)
fastMA = ta.sma(close, fastMALength)
slowMA = ta.sma(close, slowMALength)
// === Розрахунок об'єму та волатильності ===
averageVolume = ta.sma(volume, 20)
atrValue = ta.atr(atrLength)
// === Умови входу в позицію ===
longCondition = ta.crossover(fastMA, slowMA) and rsiValue < 50
if useVolumeFilter
longCondition := longCondition and volume > volumeThreshold
if useVolatilityFilter
longCondition := longCondition and atrValue > volatilityThreshold
shortCondition = ta.crossunder(fastMA, slowMA) and rsiValue > 50
if useVolumeFilter
shortCondition := shortCondition and volume > volumeThreshold
if useVolatilityFilter
shortCondition := shortCondition and atrValue > volatilityThreshold
// === Логіка входу та виходу з позиції ===
if (longCondition)
strategy.entry("Long", strategy.long)
if (useStopLossTakeProfit)
stopLossPrice = close * (1 - stopLossPercent / 100)
takeProfitPrice = close * (1 + takeProfitPercent / 100)
strategy.exit("Exit Long", "Long", stop = stopLossPrice, limit = takeProfitPrice)
if (shortCondition)
strategy.entry("Short", strategy.short)
if (useStopLossTakeProfit)
stopLossPrice = close * (1 + stopLossPercent / 100)
takeProfitPrice = close * (1 - takeProfitPercent / 100)
strategy.exit("Exit Short", "Short", stop = stopLossPrice, limit = takeProfitPrice)
// === Закриття позицій за зворотнім сигналом ===
if (strategy.position_size > 0 and (ta.crossunder(fastMA, slowMA) or rsiValue > 50))
strategy.close("Long", comment="Закрито по сигналу")
if (strategy.position_size < 0 and (ta.crossover(fastMA, slowMA) or rsiValue < 50))
strategy.close("Short", comment="Закрито по сигналу")