
یہ حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جس میں اوسط واپسی اور رجحان کی پیروی شامل ہے ، بنیادی طور پر ٹریڈنگ سگنل کی پیداوار اور خطرے پر قابو پانے کے لئے تین تکنیکی اشارے MA ، MACD اور ATR کے تعاون سے استعمال کیا جاتا ہے۔ اس حکمت عملی کا بنیادی خیال یہ ہے کہ جب قیمتیں اوسط سے ہٹ جاتی ہیں تو ، MACD اشارے کے کراس سگنل کے ساتھ مل کر مارکیٹ میں الٹ جانے کے مواقع کو پکڑنے کے لئے ، جبکہ خطرے پر قابو پانے کے لئے اے ٹی آر متحرک اسٹاپ نقصان کا استعمال کریں۔
اس حکمت عملی میں تین قسم کی توثیق کا طریقہ کار استعمال کیا گیا ہے:
اس حکمت عملی میں میڈین ریگریشن اور ٹرینڈ ٹریکنگ کا امتزاج کیا گیا ہے ، جس سے ایک نسبتا robust ٹریڈنگ سسٹم حاصل ہوتا ہے۔ متعدد اشارے کے توثیقی میکانزم سے ٹریڈنگ سگنل کی وشوسنییتا میں اضافہ ہوتا ہے ، جبکہ اے ٹی آر متحرک اسٹاپس نے خطرے کو اچھی طرح سے کنٹرول کیا ہے۔ اگرچہ کچھ اصلاحات کی گنجائش موجود ہے ، لیکن مجموعی طور پر یہ ایک منطقی طور پر واضح ، عملی حکمت عملی کا فریم ورک ہے۔
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Mean Reversion Strategy with ATR, MACD and MA", overlay=true)
// === Настройки для индикаторов ===
// Параметры скользящей средней (MA)
maLength = input.int(30, title="Период скользящей средней (MA)")
maType = input.string("EMA", title="Тип скользящей средней", options=["SMA", "EMA"])
// Параметры ATR
atrLength = input.int(10, title="Период ATR")
atrMultiplier = input.float(10, title="ATR множитель для стоп-лосса")
// Параметры MACD
macdFastLength = input.int(8, title="Период быстрой EMA для MACD")
macdSlowLength = input.int(26, title="Период медленной EMA для MACD")
macdSignalLength = input.int(5, title="Период сигнальной линии MACD")
// === Рассчёт индикаторов ===
// Скользящая средняя
ma = if maType == "SMA"
ta.sma(close, maLength)
else
ta.ema(close, maLength)
// ATR (Средний истинный диапазон)
atr = ta.atr(atrLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
// Условия для входа на покупку и продажу
longCondition = ta.crossover(macdLine, signalLine) and close < ma
shortCondition = ta.crossunder(macdLine, signalLine) and close > ma
// === Управление позициями ===
if (longCondition)
strategy.entry("Buy", strategy.long)
// Стоп-лосс на основе ATR
stopLossLevel = close - atr * atrMultiplier
strategy.exit("Take Profit/Stop Loss", "Buy", stop=stopLossLevel)
if (shortCondition)
strategy.entry("Sell", strategy.short)
// Стоп-лосс на основе ATR
stopLossLevel = close + atr * atrMultiplier
strategy.exit("Take Profit/Stop Loss", "Sell", stop=stopLossLevel)
// Визуализация
plot(ma, title="MA", color=color.blue, linewidth=2)
plot(macdLine, title="MACD Line", color=color.green)
plot(signalLine, title="Signal Line", color=color.red)
hline(0, "Zero Line", color=color.gray)