
यह रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जिसमें औसत मूल्य वापसी और प्रवृत्ति का पालन शामिल है, मुख्य रूप से ट्रेडिंग सिग्नल के उत्पादन और जोखिम नियंत्रण को प्राप्त करने के लिए MA, MACD और ATR के तीन तकनीकी संकेतकों के संयोजन के उपयोग के माध्यम से। रणनीति का मुख्य विचार बाजार में पलटाव के अवसरों को पकड़ने के लिए है जब कीमतें औसत रेखा से विचलित होती हैं, जबकि एटीआर गतिशील स्टॉपलॉस का उपयोग करके जोखिम को नियंत्रित करने के लिए होती है।
इस रणनीति के तहत, ट्रिपल वेरिफिकेशन का उपयोग किया जाता हैः
इस रणनीति के माध्यम से औसत प्रतिगमन और प्रवृत्ति ट्रैकिंग के संयोजन के माध्यम से एक अपेक्षाकृत मजबूत ट्रेडिंग प्रणाली प्राप्त की गई थी। कई संकेतकों के सत्यापन तंत्र ने ट्रेडिंग सिग्नल की विश्वसनीयता को बढ़ाया, जबकि एटीआर गतिशील स्टॉपओवर ने जोखिम को अच्छी तरह से नियंत्रित किया। हालांकि कुछ अनुकूलन के लिए जगह है, लेकिन कुल मिलाकर यह एक तर्कसंगत स्पष्ट और व्यावहारिक रणनीति ढांचा है।
/*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)