विसंगति मैट्रिक्स ट्रेंड फॉलोइंग रणनीति एक मात्रात्मक ट्रेडिंग रणनीति है जो प्रवृत्ति, विसंगति और चलती औसत विश्लेषण को जोड़ती है। यह रणनीति बाजार की प्रवृत्ति की दिशा और प्रवेश संकेत उत्पन्न करने के लिए मैट्रिक्स चलती औसत का न्याय करने के लिए दोहरी आरएसआई संकेतकों का उपयोग करती है। मैट्रिक्स चलती औसत मूल्य विसंगति की डिग्री के आधार पर स्थिति आकार को समायोजित करती है। कुल मिलाकर, इस रणनीति का लाभ कई संकेतकों के साथ ट्रेडिंग संकेतों की पुष्टि करना है, जो प्रभावी रूप से झूठे ब्रेकआउट से बच सकता है। इस बीच, मैट्रिक्स तंत्र उच्च रिटर्न में लॉक कर सकता है।
विचलन मैट्रिक्स ट्रेंड फॉलो करने की रणनीति में निम्नलिखित मुख्य भाग शामिल हैंः
रुझान आकलन के लिए दोहरी आरएसआई
बाजार की प्रवृत्ति दिशा निर्धारित करने के लिए तेज आरएसआई और धीमे आरएसआई का प्रयोग करें। जब तेज आरएसआई ओवरबॉट या ओवरसोल्ड स्तर दिखाता है, तो प्रवृत्ति दिशा के लिए धीमे आरएसआई की जाँच करें।
ट्रेडिंग सिग्नल के लिए मैट्रिक्स चलती औसत
प्रवेश मूल्य के आधार पर मैट्रिक्स मूविंग एवरेज का एक समूह सेट करें। जब मूल्य एक मूविंग एवरेज लाइन को छूता है, तो तदनुसार स्थिति को समायोजित करें। इससे रुझानों में अधिक लाभ प्राप्त करने की अनुमति मिलती है।
द्विदिशात्मक व्यापार
डिफ़ॉल्ट द्विदिश व्यापार है. केवल लंबे समय तक जाने के लिए चुन सकते हैं.
व्यापार का विशिष्ट तर्क हैः
बाजार में अस्थायी ओवरबॉट/ओवरसोल्ड स्तरों का पता लगाने के लिए तेजी से आरएसआई का प्रयोग करें।
बाजार की मध्यम से दीर्घकालिक प्रवृत्ति दिशा निर्धारित करने के लिए धीमे आरएसआई का प्रयोग करें।
जब तेज आरएसआई चरमता दिखाता है और धीमी आरएसआई रुझान उलटने का संकेत देती है, तो धीमी आरएसआई द्वारा लंबी/लघु प्रवृत्ति के आधार पर स्थिति लें।
पदों में प्रवेश करने के बाद, मैट्रिक्स मूविंग एवरेज का एक समूह सेट करें। ये मैट्रिक्स लाइनें प्रवेश मूल्य के आसपास आधारित हैं,
जब मूल्य एक मैट्रिक्स लाइन को छूता है, तो स्थिति का आकार तदनुसार समायोजित करें। उदाहरण के लिए, ऊपर के ब्रेकआउट्स पर लॉन्ग बढ़ाएं, नीचे के ब्रेकआउट्स पर शॉर्ट्स कम करें।
जब मूल्य में बड़े समायोजन होते हैं, तो पदों को प्रारंभिक स्तर पर रीसेट किया जाएगा।
उपरोक्त इस रणनीति के मुख्य व्यापार तर्क का वर्णन करता है। मैट्रिक्स तंत्र अधिक प्रवृत्ति लाभ में लॉक करने की अनुमति देता है।
विचलन मैट्रिक्स ट्रेंड फॉलो करने की रणनीति के निम्नलिखित फायदे हैंः
दोहरे आरएसआई संकेत अधिक विश्वसनीय होते हैं. तेज आरएसआई झूठे ब्रेकआउट से बचाता है और धीमा आरएसआई मुख्य प्रवृत्ति को सही सुनिश्चित करता है.
मैट्रिक्स चलती औसत रुझानों से लाभान्वित होती है। मूल्य विचलन के आधार पर स्थिति के आकार को समायोजित करने से निरंतर लाभ प्राप्त करने की अनुमति मिलती है।
द्वि-दिशात्मक व्यापार का समर्थन करता है। डिफ़ॉल्ट द्वि-दिशात्मक व्यापार है, लेकिन केवल लंबे समय तक भी जा सकता है। यह अधिक बाजार वातावरण के अनुकूल है।
स्थिति रीसेट तंत्र जोखिमों को नियंत्रित करता है। जब कीमत में बड़े समायोजन होते हैं तो स्थिति को रीसेट करने से समय पर स्टॉप लॉस की अनुमति मिलती है।
लचीली पैरामीटर सेटिंग्स। उपयोगकर्ता ऐतिहासिक डेटा, ट्रेडिंग इंस्ट्रूमेंट आदि के आधार पर इष्टतम पैरामीटर संयोजन का चयन कर सकते हैं।
स्पष्ट कोड संरचना. जिम्मेदारियों का स्पष्ट पृथक्करण कोड को समझने, अनुकूलित करने और विस्तारित करने में आसान बनाता है।
संक्षेप में, इस रणनीति का सबसे बड़ा लाभ कई तंत्रों के माध्यम से सिग्नल की गुणवत्ता में सुधार करना है जबकि नियंत्रित जोखिमों के तहत उच्च रिटर्न का पीछा करना है। यह एक रणनीति है जो जोखिम और इनाम को संतुलित करती है।
विचलन मैट्रिक्स ट्रेंड फॉलोइंग रणनीति में भी कुछ जोखिम हैं, मुख्य रूप से निम्नलिखित क्षेत्रों मेंः
दोहरे आरएसआई संकेतों की विफलता का जोखिम। जब बाजार सीमा से बंधा होता है, तो आरएसआई अक्सर झूठे संकेत देता है। मापदंडों को समायोजित करने या व्यापार को निलंबित करने के लिए मैन्युअल हस्तक्षेप की आवश्यकता होती है।
अनुचित मैट्रिक्स चलती औसत जोखिम। यदि मैट्रिक्स मापदंडों को ठीक से सेट नहीं किया जाता है, तो स्थिति समायोजन बहुत आक्रामक हो सकते हैं, जिससे नुकसान बढ़ जाता है। रूढ़िवादी पैरामीटर परीक्षण आवश्यक है।
अत्यधिक लाभप्रद पदों का जोखिम। अत्यधिक पद आकार समायोजन भी घाटे को बढ़ाएगा। अधिकतम पद आकार पैरामीटर को सावधानीपूर्वक निर्धारित करने की आवश्यकता है।
रुझान उलटने का जोखिम। यदि रुझान उलटने पर शीघ्रता से स्थिति बंद करने में विफल रहता है, तो बड़े नुकसान हो सकते हैं। इससे दीर्घकालिक रुझान संकेतकों की निगरानी की आवश्यकता होती है।
सीमित अनुकूलन अंतरिक्ष जोखिम. यह रणनीति पहले से ही काफी परिपक्व है. निरंतर अनुकूलन क्षमता सीमित है. यदि बाजार के शासन में भारी बदलाव होता है तो प्रमुख उन्नयन की आवश्यकता हो सकती है।
इन जोखिमों को कम करने के लिए रणनीति का आकलन और अनुकूलन महत्वपूर्ण है - मापदंडों को समायोजित करना, दीर्घकालिक संकेतकों की निगरानी करना आदि कुछ हद तक जोखिमों को कम कर सकते हैं।
विभेदकता मैट्रिक्स प्रवृत्ति को आगे बढ़ाने के लिए निम्नलिखित रणनीति की आवश्यकता है:
दोहरे आरएसआई मापदंडों का अनुकूलन करें। अधिक मापदंड संयोजनों का परीक्षण करें और उच्चतम सटीकता के साथ आरएसआई अवधि का चयन करें।
अनुकूलन योग्य मैट्रिक्स लाइनें. उपयोगकर्ताओं को विभिन्न उपकरणों के आधार पर मैट्रिक्स सेटिंग्स को उनके विशेषताओं के अनुरूप करने की अनुमति दें।
स्टॉप लॉस तंत्र जोड़ें. उदाहरण के लिए, यदि कीमत उन लाइनों को तोड़ती है तो पदों को रोकने के लिए बाहर निकलने की लाइनें सेट करें.
अधिक वैज्ञानिक स्थिति आकार नियम जोड़ें. अधिक लेवलिंग को रोकने के लिए अधिक क्रमिक तरीके से स्थिति आकार समायोजन का प्रबंधन करें.
सिग्नल की सटीकता में सुधार के लिए अतिरिक्त संकेतकों जैसे एमएसीडी, केडी आदि को शामिल करें।
कोड संरचना को अनुकूलित करना। कोड की विस्तार, रखरखाव और निष्पादन दक्षता में और सुधार करना।
विचलन मैट्रिक्स ट्रेंड फॉलोइंग रणनीति एक परिष्कृत मात्रात्मक ट्रेडिंग रणनीति है जिसमें कई तंत्र शामिल हैं - ट्रेंड दिशा के लिए दोहरे आरएसआई और रुझानों से लाभ उठाने के लिए मैट्रिक्स लाइनों का उपयोग करना। एकल-निर्देशक रणनीतियों की तुलना में, यह अधिक स्थिर और कुशल ट्रेडिंग संकेत प्रदान करता है। पैरामीटर ट्यूनिंग और अनुकूलन एक्सटेंशन के साथ, यह रणनीति अधिक बाजार की स्थितियों और शासनों के अनुकूल हो सकती है, जिससे यह अत्यधिक बहुमुखी हो जाती है। कुल मिलाकर, यह रणनीति जोखिम और रिटर्न के बीच एक अच्छा संतुलन बनाती है, और निवेशकों द्वारा सक्रिय अनुप्रयोग और निरंतर सुधार का हकदार है।
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("The Matrix 7.0 Strategy", overlay=false) //Matrix Settings entry_size = input(title="Entry Size", defval = 1) max_size = input(title="Max Size", defval = 10000) matrix = input(title="Matrix Interval %", defval = 2) matrix_price_overwrite = input(title="Matrix Overwrite $", defval = 0.0) adjustment = input(title="Adjustment Size", defval = 1000) trade_short = input(title="Trade Short", type=bool, defval = true) //RSI Settings periods = input(title="RSI Periods", defval = 14) overbought_short = input(title="RSI Overbought", defval = 65) oversold_short = input(title="RSI Oversold", defval = 30) //RSI Trend Settings resolution_long = input(title="Resolution Trend", defval = "D") periods_long = input(title="RSI Trend Periods", defval = 14) overbought_long = input(title="RSI Trend Overbought", defval = 64) oversold_long = input(title="RSI Trend Oversold", defval = 30) //Round Off to 2 decimals round2(x) => a = x * 10 * 10 a := floor(a + 0.5) a := a / 10 / 10 a //RSI Function RSI = rsi(close, periods) //RSI Market Function rsi_oversold = RSI < oversold_short rsi_overbought = RSI > overbought_short market_rsi = 0.0 market_rsi := if (rsi_oversold) RSI - oversold_short else if (rsi_overbought) RSI - overbought_short else 0 //RSI Trend Function rsi_long = request.security(syminfo.tickerid,resolution_long,rsi(close,periods_long)) trend_rsi_long = rsi_long < oversold_long trend_rsi_short = rsi_long > overbought_long trend_rsi = 0 trend_rsi := if (trend_rsi_short) -1 else if (trend_rsi_long) 1 else trend_rsi[1] // // Shorter time resolution to make "close" crosses give faster positives. // short_resolution = security(tickerid, "1", close) // quick = round2(short_resolution) //ROUND OFF TO 2 DECIMAL PLACES. //Declare Other Variables entry_price = 0.0 entry_price := nz(entry_price[1]) position_size = 0.0 position_size := nz(position_size[1]) last_traded_price = 0.0 last_traded_price := nz(last_traded_price[1]) matrix_price = 0.0 if matrix_price_overwrite > 0.0 matrix_price := matrix_price_overwrite else matrix_price := round2((matrix/100) * entry_price) level = 0 level := nz(level[1]) level_price = entry_price if not na(level_price[1]) level_price := level_price[1] // Calculate Level if close > level_price level_change = floor((high - level_price)/matrix_price) level := level + level_change else if close < level_price level_change = ceil((low - level_price)/matrix_price) level := level + level_change // Calculate Level Price level_price := (level * matrix_price) + entry_price // Calculate Matrix Position matrix_position = 0.0 if position_size > 0 matrix_position := ((-1 * level) * adjustment) + entry_size else if position_size < 0 matrix_position := ((-1 * level) * adjustment) - entry_size //Trend Entry or Reversal Conditions trend_reversal_up = trend_rsi == 1 and (trend_rsi[1] == -1 or trend_rsi == 0) and position_size <= 0 trend_reversal_down = trend_rsi == -1 and (trend_rsi[1] == 1 or trend_rsi == 0) and position_size >= 0 and trade_short == true flatten_position = trend_rsi == -1 and (trend_rsi[1] == 1 or trend_rsi == 0) and position_size >= 0 and trade_short == false //Reset Conditions reset_long = (position_size > 0) and (close - entry_price > matrix_price) and (market_rsi < 0) and (position_size != entry_size) reset_short = (position_size < 0) and (entry_price - close > matrix_price) and (market_rsi > 0) and (position_size != (-1 * entry_size)) //Adjustment Conditions increase_long = (position_size > 0) and (matrix_position > position_size) and (market_rsi < 0) and (matrix_position <= max_size) decrease_long = (position_size > 0) and (matrix_position < position_size) and (market_rsi > 0) increase_short = (position_size < 0) and (matrix_position < position_size) and (market_rsi > 0) and (matrix_position >= (-1 * max_size)) decrease_short = (position_size < 0) and (matrix_position > position_size) and (market_rsi < 0) //Transactions //Trend Reversals if trend_reversal_up strategy.entry("OL", strategy.long, qty=entry_size) position_size := entry_size matrix_position := entry_size level := 0 else if trend_reversal_down strategy.entry("OS", strategy.short, qty=entry_size) position_size := -1 * entry_size matrix_position := -1 * entry_size level := 0 //Reset Positions else if reset_long order = entry_size - position_size[1] strategy.order("RL", strategy.long, qty=order) position_size := entry_size matrix_position := entry_size level := 0 else if reset_short order = position_size[1] - (-1* entry_size) strategy.order("RS", strategy.short, qty=order) position_size := -1 * entry_size matrix_position := -1 * entry_size level := 0 //Position Adjustments else if increase_long order = matrix_position - position_size[1] strategy.order("IL", strategy.long, qty=order) position_size := position_size[1] + order else if decrease_long order = position_size[1] - matrix_position strategy.order("DL", strategy.short, qty=order) position_size := position_size[1] - order else if increase_short order = position_size[1] - matrix_position strategy.order("IS", strategy.short, qty=order) position_size := position_size[1] - order else if decrease_short order = matrix_position - position_size[1] strategy.order("DS", strategy.long, qty=order) position_size := position_size[1] + order else if flatten_position strategy.close_all() position_size := 0.0 matrix_position := 0.0 level := 0 //Grouped Actions if trend_reversal_up or trend_reversal_down or reset_short or reset_long entry_price := round2(close) last_traded_price := round2(close) if increase_long or decrease_long or increase_short or decrease_short last_traded_price := round2(close) // //RSI Trend & Adjustment Moments. (strategy) p1 = plot(market_rsi, color = trend_rsi > 0 ? green : red, linewidth = 4, title='Market', transp =0) p2 = plot(trend_rsi, color = trend_rsi > 0 ? green : red, linewidth = 4, title='Trend', transp = 0) fill(p1,p2, color=trend_rsi > 0 ? green : red, transp=0) p3 = plot((rsi_long - 50) *2, color = white, title="Trend Index") fill(p2,p3, color=white) hline((overbought_long -50) * 2) hline((oversold_long -50) * 2) //Position Plots (strategy) plot(matrix_position / 100, title='Matrix', color=white, linewidth = 4) plot(position_size / 100, title='Position', color=blue, linewidth = 4) plot(strategy.position_size / 100, title='Strategy', color=orange, linewidth = 4) // //Price Plots (study) // plot(level_price, title="Matrix Level Price", linewidth=4) // plot(last_traded_price, title="Last Traded Price", linewidth=2, color=orange) // plot(entry_price + (4 * matrix_price), title='Adjustment 4', color=white, linewidth = 1) // plot(entry_price + (3 * matrix_price), title='Adjustment 3', color=white, linewidth = 1) // plot(entry_price + (2 * matrix_price), title='Adjustment 2', color=white, linewidth = 1) // plot(entry_price + matrix_price, title='Adjustment 1', color=white, linewidth = 1) // plot(entry_price, title='Entry Price', color=white, linewidth = 3) // plot(entry_price - matrix_price, title='Adjustment -1', color=white, linewidth = 1) // plot(entry_price - (2 * matrix_price), title='Adjustment -2', color=white, linewidth = 1) // plot(entry_price - (3 * matrix_price), title='Adjustment -3', color=white, linewidth = 1) // plot(entry_price - (4 * matrix_price), title='Adjustment -4', color=white, linewidth = 1) // //Alerts (study only) // alertcondition(trend_reversal_up, title='Trend Reversal Up', message='Market Oversold, Lets Buy') // alertcondition(trend_reversal_down, title='Trend Reversal Down', message='Market Overbought, Lets Sell') // alertcondition(reset_long, title='Reset Long', message='Higher Bottom, Lets Buy') // alertcondition(reset_short, title='Reset Short', message='Lower Top, Lets Sell') // alertcondition(increase_long, title='Increase Long', message='Price Dropped, Lets Buy') // alertcondition(decrease_long, title='Decrease Long', message='Price Spiked, Lets Sell') // alertcondition(increase_short, title='Increase Short', message='Price Spiked, Lets Sell') // alertcondition(decrease_short, title='Decrease Short', message='Price Dropped, Lets Buy') // //Grouped Conditions // condition_buy = trend_reversal_up or increase_long or decrease_short or reset_long // condition_sell = trend_reversal_down or decrease_long or increase_short or reset_short // adjustment_matrix = trend_reversal_up or increase_long or decrease_short or trend_reversal_down or decrease_long or increase_short or reset_long or reset_short // //Grouped Alerts // alertcondition(condition_buy, title='Condition Buy', message='You Need to Buy') // alertcondition(condition_sell, title='Condition Sell', message='You Need to Sell!') // alertcondition(adjustment_matrix, title='Adjustment Matrix', message='You Need to Adjust')