यह रणनीति तीन संकेतकों को जोड़ती है - चलती औसत, बोलिंगर बैंड और रिलेटिव स्ट्रेंथ इंडेक्स (आरएसआई) बहु-अवधि स्टॉक ट्रेडिंग के लिए। यह तेजी से और धीमी गति से चलती औसत, आरएसआई 50 से नीचे और खरीदते समय बीबी मध्य बैंड से नीचे की कीमत के क्रॉसओवर पर विचार करता है। यह 70 से ऊपर आरएसआई और बिक्री करते समय बीबी ऊपरी बैंड से ऊपर की कीमत पर विचार करता है।
रणनीति मुख्य रूप से निर्णय लेने के लिए तीन संकेतकों का उपयोग करती है। सबसे पहले, एमएसीडी संकेतक में तेजी से और धीमी गति से चलने वाले औसत शामिल हैं। धीमी रेखा के ऊपर तेजी से रेखा के क्रॉसओवर खरीद संकेत उत्पन्न करते हैं। दूसरा, मध्य, ऊपरी और निचले बैंड के साथ बोलिंगर बैंड। निचले बैंड के पास कीमतें स्विंग लो में खरीदने के अवसर प्रस्तुत करती हैं, जबकि ऊपरी बैंड के पास कीमतें स्विंग हाई पर बेचने के अवसर प्रस्तुत करती हैं। अंत में, आरएसआई मूल्य कार्रवाई की गति और परिवर्तन की दर को दर्शाता है और संभावित स्विंग हाई और स्विंग लो की पहचान करता है।
विशेष रूप से, रणनीति के लिए सबसे पहले धीमी गति से चलती औसत के ऊपर तेजी से चलती औसत पार करने की आवश्यकता होती है, जो कि खरीद का सुझाव देने वाली उछाल की प्रवृत्ति को मजबूत करने का संकेत देती है। इसके लिए 50 से नीचे के आरएसआई की भी आवश्यकता होती है, जो कि कीमत को ओवरसोल्ड स्तरों में हो सकती है और खरीदने के अवसर पेश करती है। इसके अलावा, इसके लिए बीबी मध्य बैंड के नीचे बंद मूल्य की आवश्यकता होती है, जो मूल्य स्विंग कम और एक अच्छा प्रवेश बिंदु दर्शाता है।
लाभ लेने और स्टॉप लॉस के लिए, जब आरएसआई 70 से ऊपर बढ़ता है, तो यह इंगित करता है कि कीमत ओवरबॉट स्तरों में हो सकती है और अपट्रेंड गति कम हो रही है, लाभ लेने के लिए उपयुक्त है।
यह रणनीति प्रवेश और निकास बिंदुओं को अधिक सटीक रूप से निर्धारित करने के लिए चलती औसत, बोलिंगर बैंड और आरएसआई की ताकतों को जोड़ती है। मुख्य लाभ हैंः
चलती औसत कीमत के उदय की गति को निर्धारित करती है। बीबी मध्य बैंड प्रवेश के लिए स्विंग लो को इंगित करता है। आरएसआई मूल्य शिखर पर खरीदने से बचता है। तीनों एक साथ मूल्य उदय के दौरान अपेक्षाकृत आदर्श खरीद अवसर प्रदान करते हैं।
आरएसआई और बीबी ऊपरी बैंड का संयोजन ओवरबॉट स्थितियों से बचने के लिए लाभ लेने के लिए अच्छी तरह से मूल्य स्विंग उच्च को पकड़ता है।
बहु-अवधि मूल्यांकन लाभ को अधिकतम करने के लिए समय सीमाओं में व्यापार के अवसरों को पकड़ने की अनुमति देता है।
तर्कसंगत व्यापारिक नियम इस रणनीति को मध्यम से दीर्घकालिक निवेश के लिए आसानी से समझने योग्य बनाते हैं।
निर्णय सटीकता में सुधार के लिए संकेतकों के संयोजन के बावजूद, प्रमुख जोखिम मौजूद हैंः
पैरामीटर सेटिंग जोखिम। संकेतकों के लिए मापदंडों को अनुभवजन्य समायोजन की आवश्यकता है। अपर्याप्त समायोजन रणनीति प्रदर्शन को प्रभावित करता है।
बुल बाजारों के लिए अधिक उपयुक्त। भालू बाजारों में, कीमतों में गिरावट की गति स्टॉप लॉस को अप्रभावी बना सकती है।
पोर्टफोलियो के बावजूद एकल शेयर जोखिम बरकरार है।
संभावित रूप से अत्यधिक व्यापारिक आवृत्ति। इष्टतम पैरामीटर सेटिंग के परिणामस्वरूप अक्सर व्यापार हो सकता है, जिससे अधिक लेनदेन लागत और कर उत्पन्न हो सकते हैं।
समाधान:
उपयुक्त संकेत आवृत्ति प्राप्त करने के लिए बैकटेस्ट के आधार पर मापदंडों को समायोजित करें।
चलती औसत अवधि को मध्यम प्रवेश आवृत्ति पर ट्यून करें और नुकसान को कम करें।
एकल शेयर जोखिम को कम करने के लिए अधिक संपत्ति में निवेश को विविधता प्रदान करें।
व्यापारिक आवृत्ति को कम करने के लिए खरीद और लाभ लेने के मानदंडों को मामूली रूप से कम करें।
अनुकूलन के लिए और अधिक जगह बनी हुई हैः
वॉल्यूम जैसे अधिक फ़िल्टर जोड़ें ताकि खरीदारी पर वॉल्यूम बढ़ाया जा सके, निर्णय की सटीकता में सुधार हो सके।
बाजार की स्थितियों के आधार पर गतिशील रूप से पदों का आकार देने के लिए स्थिति आकार मॉड्यूल को शामिल करें।
बड़े डेटा सेटों में प्रशिक्षण के माध्यम से पैरामीटरों को स्वचालित रूप से ट्यून करने के लिए डीप लर्निंग एल्गोरिदम का उपयोग करें।
लागू करने की क्षमता को बढ़ाने के लिए फैसलों के लिए अधिक समय सीमाएं लागू करें।
कुल मिलाकर, रणनीति में स्पष्ट, समझने में आसान तर्क है, झूठे संकेतों को कम करने के लिए संकेतकों का तालमेल है। आगे पैरामीटर ट्यूनिंग और संकेतकों को जोड़ने से मजबूती और निर्णय सटीकता में वृद्धि जारी रह सकती है। यह मध्यम से दीर्घकालिक निवेश और मात्रात्मक व्यापार के लिए उपयुक्त है। फिर भी, कोई भी रणनीति बाजार जोखिमों को पूरी तरह से समाप्त नहीं करती है। उचित स्थिति आकार और स्टॉप लॉस स्तर हमेशा आवश्यक होते हैं।
/*backtest start: 2023-11-25 00:00:00 end: 2023-12-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // //@author Alorse //@version=4 strategy("MACD + BB + RSI [Alorse]", shorttitle="BB + MACD + RSI [Alorse]", overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01) txtVer = "1.0.1" version = input(title="Version", type=input.string, defval=txtVer, options=[txtVer], tooltip="This is informational only, nothing will change.") src = input(title="Source", type=input.source, defval=close) // MACD fast_length = input(title="Fast Length", type=input.integer, defval=12, group="MACD") slow_length = input(title="Slow Length", type=input.integer, defval=26, group="MACD") signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group="MACD") sma_source = input(title="Oscillator MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD") sma_signal = input(title="Signal Line MA Type", type=input.string, defval="EMA", options=["SMA", "EMA"], group="MACD") fast_ma = sma_source == "SMA" ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source == "SMA" ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal == "SMA" ? sma(macd, signal_length) : ema(macd, signal_length) // Bollinger Bands bbGroup = "Bollindger Bands" length = input(20, title="Length", group=bbGroup) mult = input(2.0, title="StdDev", minval=0.001, maxval=5, group=bbGroup) basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev // RSI rsiGroup = "RSI" lenRSI = input(14, title="Length", minval=1, group=rsiGroup) // lessThan = input(50, title="Less than", minval=1 , maxval=100, group=rsiGroup) RSI = rsi(src, lenRSI) // Strategy Conditions buy = crossover(macd, signal) and RSI < 50 and close < basis sell = RSI > 70 and close > upper // Stop Loss slGroup = "Stop Loss" useSL = input(false, title="╔══════ Enable ══════╗", group=slGroup, tooltip="If you are using this strategy for Scalping or Futures market, we do not recommend using Stop Loss.") SLbased = input(title="Based on", type=input.string, defval="Percent", options=["ATR", "Percent"], group=slGroup, tooltip="ATR: Average True Range\nPercent: eg. 5%.") multiATR = input(10.0, title="ATR Mult", type=input.float, group=slGroup, inline="atr") lengthATR = input(14, title="Length", type=input.integer, group=slGroup, inline="atr") SLPercent = input(10, title="Percent", type=input.float, group=slGroup) * 0.01 longStop = 0.0 shortStop = 0.0 if SLbased == "ATR" longStop := valuewhen(buy, low, 0) - (valuewhen(buy, rma(tr(true), lengthATR), 0) * multiATR) longStopPrev = nz(longStop[1], longStop) longStop := close[1] > longStopPrev ? max(longStop, longStopPrev) : longStop shortStop := (valuewhen(sell, rma(tr(true), lengthATR), 0) * multiATR) + valuewhen(sell, high, 0) shortStopPrev = nz(shortStop[1], shortStop) shortStop := close[1] > shortStopPrev ? max(shortStop, shortStopPrev) : shortStop if SLbased == "Percent" longStop := strategy.position_avg_price * (1 - SLPercent) shortStop := strategy.position_avg_price * (1 + SLPercent) strategy.entry("Long", true, when=buy) strategy.close("Long", when=sell, comment="Exit") if useSL strategy.exit("Stop Loss", "Long", stop=longStop)