आरएसआई और एमए क्रॉसओवर के लिए ट्रेंड-फॉलोइंग रणनीति


निर्माण तिथि: 2024-02-20 15:31:15 अंत में संशोधित करें: 2024-02-20 15:31:15
कॉपी: 1 क्लिक्स: 850
1
ध्यान केंद्रित करना
1617
समर्थक

आरएसआई और एमए क्रॉसओवर के लिए ट्रेंड-फॉलोइंग रणनीति

अवलोकन

यह रणनीति दो अलग-अलग चक्रों के एमए औसत के साथ आरएसआई संकेतक के क्रॉसिंग के माध्यम से बाजार की प्रवृत्ति और एंट्री समय को निर्धारित करती है। रणनीति केवल तब अधिक करती है जब आरएसआई अपने स्वयं के 26 चक्रों के औसत से ऊपर होता है, और जोखिम को नियंत्रित करने के लिए जब आरएसआई अपने स्वयं के 26 चक्रों के औसत से नीचे होता है।

रणनीति सिद्धांत

यह रणनीति 12 चक्र और 26 चक्र दो एमए औसत रेखाओं का उपयोग करती है। जब 12 चक्र तेज रेखा पर 26 चक्र धीमी रेखा को पार करता है, तो यह माना जाता है कि बाजार एक उछाल की ओर बढ़ रहा है; जब तेज रेखा धीमी रेखा को पार करती है, तो यह माना जाता है कि बाजार एक गिरावट की ओर बढ़ रहा है। रणनीति गोल्ड क्रॉस होने पर अधिक करती है और डेड क्रॉस होने पर खाली करती है।

उसी समय, रणनीति में आरएसआई सूचकांक को शामिल किया गया है जो ओवरबॉट ओवरसोल्ड क्षेत्र को निर्धारित करता है। केवल जब आरएसआई अपने स्वयं के 26 चक्र औसत रेखा से ऊपर होता है, तो गोल्ड क्रॉसिंग पर औसत रेखा पर अधिक स्थिति खोलें; केवल जब आरएसआई अपने स्वयं के 26 चक्र औसत रेखा से नीचे होता है, तो डेथ क्रॉसिंग पर शून्य स्थिति खोलें। इससे ओवरबॉट या ओवरसोल्ड होने पर स्थिति को मजबूर करने से बचा जा सकता है, जिससे जोखिम को नियंत्रित किया जा सकता है।

श्रेष्ठता विश्लेषण

इस रणनीति में औसत रेखा और आरएसआई संकेतक का संयोजन होता है जो प्रवृत्ति और प्रवेश के समय को निर्धारित करता है, जिससे प्रवृत्ति को प्रभावी ढंग से ट्रैक किया जा सकता है। आरएसआई संकेतक को फ़िल्टर शर्त के रूप में पेश करने से, स्थिति खोलने की संख्या को कम किया जा सकता है, और उतार-चढ़ाव की स्थिति में बंद होने से बचा जा सकता है। स्टॉप लॉस सेट किए बिना, प्रवृत्ति को अधिक से अधिक लाभ प्राप्त करने के लिए ट्रैक किया जा सकता है।

जोखिम विश्लेषण

क्योंकि कोई रोक नहीं है, यदि गलत निर्णय लिया जाता है, तो नुकसान बढ़ सकता है। यदि बाजार में भारी उतार-चढ़ाव होता है, तो यह अधिक नुकसान का कारण बन सकता है। इसके अलावा, आरएसआई फ़िल्टरिंग शर्तों को गलत तरीके से सेट किया गया है, तो यह बेहतर प्रवेश समय से चूक सकता है।

अधिकतम नुकसान को नियंत्रित करने के लिए स्टॉप लॉस सेट करने पर विचार किया जा सकता है। बेहतर फ़िल्टरिंग स्थितियों की तलाश में आरएसआई के मापदंडों को उचित रूप से समायोजित किया जा सकता है। यदि बाजार में उतार-चढ़ाव अधिक है, तो औसत के मापदंडों को उचित रूप से समायोजित किया जा सकता है और एक धीमी औसत का उपयोग करके प्रवृत्ति का आकलन किया जा सकता है।

अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  1. विभिन्न चक्रों के एमए औसत रेखा संयोजनों का परीक्षण करें, औसत रेखा पैरामीटर की तलाश करें जो वर्तमान बाजार की विशेषताओं से अधिक मेल खाते हों।

  2. आरएसआई के विभिन्न चक्र मापदंडों का परीक्षण, विभिन्न फ़िल्टरिंग स्थितियों, प्रवेश समय का अनुकूलन।

  3. सिस्टम की स्थिरता को बढ़ाने के लिए अन्य संकेतकों या फ़िल्टरिंग शर्तों को जोड़ें। जैसे कि प्रवृत्ति के निर्णय से संबंधित संकेतकों को जोड़ने की क्षमता, लेनदेन की मात्रा, आदि।

  4. रुझानों को ट्रैक करने के साथ-साथ जोखिम को नियंत्रित करने के लिए स्टॉप रणनीति का अनुकूलन करें। स्टॉप रणनीति जैसे ट्रैक स्टॉप, प्रतिशत स्टॉप, गतिशील स्टॉप आदि का परीक्षण किया जा सकता है।

संक्षेप

इस रणनीति को सरल और प्रत्यक्ष है, और RSI के माध्यम से प्रवृत्ति के क्रॉस-रेखा निर्धारण के लिए प्रवृत्ति को बेहतर करने के लिए प्रवृत्ति का पालन करने के लिए स्थिति खोलने के लिए मजबूर करने से बचता है। इस रणनीति को और अधिक परिष्कृत किया जा सकता है, जैसे कि पैरामीटर अनुकूलन, अन्य संकेतकों को जोड़ना, और इसे अधिक जटिल और परिवर्तनीय बाजार के वातावरण के लिए उपयुक्त बनाना।

रणनीति स्रोत कोड
/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(false,"UseStopLoss")
//rsiLong = true
rsi1 = rsi(close, 14)

window() => true

stopLoss = input(20, title = "Stop loss percentage(0.1%)")
//stopLoss = input(200, title = "Stop loss percentage(0.1%)")

maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)

//12 and 26=9%; 3 and8=2%; 26 and 55=2%; when selling on a cross under
//maFastRSI = ema(rsi1, 12)
//maSlowRSI = ema(rsi1, 26)

fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow) // 5% in 2018
//exitLong = crossunder(close, maFast) // 15% in 2018
//exitLong = crossunder(rsi1, maFastRSI) // 13%

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)

//if (rsi1 < ema(rsi1,7))
//rsiLong = false

//if (longEMA and (rsi1 >= highest(rsi1,10)))
//if (longEMA)
if (longEMA and (rsi1 > ema(rsi1,26)))  //RSI ema values optimal from 19 to 35
    strategy.entry("LongId", strategy.long, when=window())

//strategy.close_all(when = rsi1 > 60) // 80=26%, 90=n/a, 70=15%, 60=16% long only
//strategy.close_all(when = (shortEMA and (rsi1 <= ema(rsi1,26)))) //10% gain in 2018 long only
//strategy.close_all(when = (rsi1 <= ema(rsi1,120))) //26=17% 14=2% 42=15%
//strategy.close_all(when = (shortEMA)) // 5% gain in 2018 long only
//strategy.close_all(when = exitLong) 

//if (shortEMA and not(rsiLong))
//if (shortEMA)
if (shortEMA and (rsi1 <= ema(rsi1,26)))
    strategy.entry("ShortId", strategy.short, when=window())

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)