इस रणनीति का नाम
रणनीति बोलिंगर बैंड और आरएसआई संकेतकों को एकीकृत करती है। बोलिंगर बैंड स्पष्ट रूप से उस प्रवृत्ति का न्याय करता है जहां मध्य बैंड के ऊपर एक बैल बाजार का मतलब है और नीचे एक भालू बाजार का मतलब है। आरएसआई ओवरबॉय और ओवरसेलिंग स्थितियों को इंगित करता है। रणनीति बोलिंगर बैंड विचलन और आरएसआई के के मूल्य को भारित करके एक एमआईएक्स संकेतक का निर्माण करती है। एक लंबा संकेत तब उत्पन्न होता है जब एमआईएक्स संकेतक नीचे से 20 के माध्यम से टूट जाता है।
प्रगतिशील डीसीए भाग के लिए, एक प्रारंभिक स्थिति तब खोली जाती है जब एमआईएक्स 20 के माध्यम से टूट जाता है। प्रत्येक बार जब कीमत एक निश्चित प्रतिशत से गिरती है, तो अतिरिक्त पदों को एक निश्चित राशि पर जोड़ा जाता है। यह अधिकतम पदों तक पहुंचने या स्टॉप लॉस / टेक प्रॉफिट को ट्रिगर करने तक जारी रहता है। कई बार बाजार के निचले स्तर पर पदों को जोड़कर, औसत लागत को धीरे-धीरे कम किया जा सकता है।
दो संकेतकों को मिलाकर संकेत की सटीकता में सुधार होता है।
प्रगतिशील डीसीए गिरावट के दौरान लागत आधार को कम करता है, जिससे लाभ सीमा में वृद्धि करते हुए हानि का जोखिम कम होता है।
लाभ लेने और स्टॉप लॉस की शर्तें जोखिमों को तुरंत नियंत्रित करती हैं और आंशिक लाभ में लॉक करती हैं।
जोड़ा गया दिनांक सीमा फ़िल्टर विशिष्ट अवधियों के केंद्रित बैकटेस्ट और अनुकूलन की अनुमति देता है।
बोलिंगर बैंड और आरएसआई दोनों विफल हो सकते हैं। संकेत की सर्वोत्तम सटीकता के लिए विभिन्न पैरामीटर संयोजनों का परीक्षण किया जा सकता है।
प्रगतिशील डीसीए लगातार पदों को जोड़कर बड़े क्रैश के दौरान नुकसान बढ़ा सकता है। जोखिम नियंत्रण के लिए अधिकतम प्रविष्टियों को उचित स्टॉप लॉस स्तर के साथ सेट किया जा सकता है।
ब्लैक स्वान घटनाओं और असामान्य मूल्य आंदोलनों की भविष्यवाणी नहीं की जा सकती है। प्रमुख सूचकांक का उपयोग करके प्रणालीगत जोखिम फिल्टर असामान्य अवधि से बचने में मदद कर सकते हैं।
अधिक सटीक व्यापार संकेत प्राप्त करने के लिए MIX सूचक के लिए मापदंडों का परीक्षण और अनुकूलन करें।
स्टॉप लॉस को अनुकूलित करें, सर्वोत्तम लाभ/हानि अनुपात के लिए लाभ पैरामीटर लें।
इष्टतम संयोजन खोजने के लिए विभिन्न जोड़ने की स्थिति के आकार और आवृत्तियों का परीक्षण करें।
व्यापारिक वॉल्यूम नियंत्रण मॉड्यूल को वॉल्यूम स्थितियों के आधार पर खोलने/बंद करने की रणनीति में जोड़ने पर विचार करें।
बोलिंगर बैंड और आरएसआई को डीसीए रणनीति के साथ मिलाकर कई मात्रात्मक तकनीकों और तरीकों को जोड़ती है। यह एक स्पष्ट प्रवृत्ति न्याय सूचक का निर्माण करती है और प्रगतिशील जोड़ों के माध्यम से लागत आधार को कम करती है। स्टॉप लॉस और ले लाभ सहित सख्त जोखिम नियंत्रण विधियां इसे व्यावहारिक बनाती हैं। आगे के परीक्षण और अनुकूलन लाभदायक ट्रेडिंग प्रणाली में इसके अद्वितीय लाभों को अनलॉक कर सकते हैं। लाभ की तलाश और जोखिम नियंत्रण दोनों को ध्यान में रखते हुए, यह लाइव ट्रेडिंग और अनुप्रयोगों के साथ सत्यापित करने योग्य है।
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © lagobrian23 //@version=4 strategy(title = 'Bollinger Bands and RSI mix with DCA', shorttitle = 'BB/RSI with DCA',pyramiding = 20, calc_on_every_tick = true, overlay = false ) source=close smoothK = input(3, "K", minval=1) smoothD = input(3, "D", minval=1) lengthRSI = input(14, "RSI Length", minval=1) lengthStoch = input(14, "Stochastic Length", minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) // Bollinger Band length = input(20,title = 'BB lookback length', minval=1) mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev BBval = (src - basis)/dev*30+50 offset = input(0, title = "Offset", type = input.integer, minval = -500, maxval = 500) mix=(d + BBval)/2 //plot //plot(k, "K", color=#606060) plot(BBval, "BBval", color=#872323, offset = offset) plot(d, "D", color=#FF6A00) h0 = hline(80, "Upper Band", color=#606060) h1 = hline(20, "Lower Band", color=#606060) plot(mix, "MIX", color=#888888, linewidth=3) //background MIX bgcolor(mix < 20 ? color.green : color.white, transp=50) bgcolor(mix > 80 ? color.red : color.white, transp=50) // Choosing the date range fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) toMonth = input(defval = 1, title = "To Month", type = input.integer, minval = 1, maxval = 12) toDay = input(defval = 1, title = "To Day", type = input.integer, minval = 1, maxval = 31) toYear = input(defval = 2112, title = "To Year", type = input.integer, minval = 1970) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(toYear, toMonth, toDay, 23, 59) // backtest finish window window() => true // Initializing the strategy paraeters P = input(defval = 1, title = 'Amount (P)' , type = input.integer, minval = 1, maxval = 100) X = input(defval = 2, title = '% Price drop for consecutive entries(X)', type = input.float, minval = 1, maxval = 100) B_tp = input(defval = 10, title = '% Level for Take Profit (B)', type = input.float , minval = 1, maxval = 100) D_sl = input(defval = 10, title = '% Level for Stop Loss (D)', type = input.float, minval = 1, maxval = 100) A = input(defval = 5, title = 'Max consecutive entries (A)', type = input.integer, minval = 2, maxval = 20) Z = input(defval = 0.5, title = 'Z', type = input.float , minval = 0, maxval = 10) // Declaring key DCA variables entry_price = 0.0 entry_price := na(entry_price[1]) ? na : entry_price[1] new_entry = 0.0 consec_entryCondition = false // Implementing the strategy longEntry = crossover(mix,20) exitLongs = crossunder(mix, 80) if(longEntry) entry_price := close strategy.entry('main_LE', strategy.long , P, when = window() and longEntry) // Exiting conditions stoploss = strategy.position_avg_price*(1-(D_sl/100)) takeprofit = strategy.position_avg_price*(1+(B_tp/100)) slCondition = crossunder(close, stoploss) tpCondition = crossover(close, takeprofit) // We want to exit if the 'mix' indicator crosses 80, take profit is attained or stop loss is tagged. exitConditions = exitLongs or slCondition or tpCondition // Consecutive entries upto A times // strategy.risk.max_intraday_filled_orders(A) //Dollar-Cost-Averaging // Enter long whenever price goes down X%: amount set to (P+Y)*Z newAmount = (P+X)*Z // If we haven't reached max open trades, buy newAmount immediately price crosses under X% lower the previous entry price new_entry := entry_price - ((X/100)*entry_price) consec_entryCondition := crossunder(close, new_entry) if(consec_entryCondition and strategy.opentrades != A) strategy.entry('consec_LE', strategy.long, newAmount, oca_name = 'consecLongs', when = window() and consec_entryCondition) entry_price := close // Exiting // The main trade is closed only when the main exit conditions are satisfied strategy.close('main_LE', comment = 'Main Long Closed', when = window() and exitConditions) // A consective long is closed only when tp or sl is tagged strategy.exit('ext a consec', 'consec_LE', loss = D_sl*strategy.position_avg_price , profit = B_tp*strategy.position_avg_price, oca_name = 'consecLongs')