औसत प्रतिगमन ट्रेडिंग रणनीति व्यापारिक निर्णय लेने के लिए चलती औसत से मूल्य विचलन पर आधारित होती है। यह कीमतों के अल्पकालिक विचलन और दीर्घकालिक प्रतिगमन पैटर्न का लाभ उठाता है जब कीमतें चलती औसत से काफी नीचे या ऊपर होती हैं और कीमतें वापस लौटती हैं तो बंद हो जाती हैं।
यह रणनीति पहले एक निश्चित अवधि में चलती औसत की गणना करती है ताकि लंबी अवधि के मूल्य रुझान का प्रतिनिधित्व किया जा सके। फिर यह चलती औसत से मूल्य के विचलन के आधार पर पदों के समय और आकार को निर्धारित करती है।
जब कीमत एक निश्चित प्रतिशत तक चलती औसत से नीचे गिर जाती है, तो यह संकेत देता है कि कीमत दीर्घकालिक प्रवृत्ति से विचलित हो जाती है। इस मामले में, विचलन के विस्तार के साथ धीरे-धीरे आकार बढ़ते हुए लंबी स्थिति बनाई जाती है। जब कीमत चलती औसत से ऊपर वापस उछलती है, तो औसत में रिवर्स का सुझाव देती है, तो लाभ लेने के लिए लंबी स्थिति बंद हो जाती है।
इसी प्रकार, जब कीमत एक सीमा से चलती औसत से ऊपर बढ़ जाती है, तो शॉर्ट पोजीशन बनाई जाती है। जब कीमत चलती औसत की ओर वापस गिर जाती है, तो शॉर्ट पोजीशन मुनाफे के साथ बंद हो जाती हैं।
स्टॉक की कीमतों के दीर्घकालिक संतुलन की प्रवृत्ति का अनुसरण करने और प्रमुख प्रवृत्ति दिशा की पहचान करने के लिए चलती औसत की प्रवृत्ति पहचान क्षमता का उपयोग करें।
पदों में स्केल करके औसत लागत को कम करें, बेहतर प्रवेश मूल्य प्राप्त करें।
जोखिम को कम करते हुए औसत प्रतिगमन के विभिन्न स्तरों पर लाभ सुनिश्चित करने के लिए चरणबद्ध लाभ लेने को अपनाएं।
एकल व्यापार हानि के आकार को सीमित करने के लिए निश्चित प्रतिशत द्वारा नियंत्रण स्थिति का आकार।
विभिन्न उत्पादों के आधार पर चलती औसत अवधि और स्थिति आकार जैसी लचीली पैरामीटर सेटिंग्स।
कीमतों में उतार-चढ़ाव होने पर लगातार स्टॉप लॉस। स्टॉप लॉस रेंज को बढ़ा सकते हैं या अन्य फ़िल्टर जोड़ सकते हैं।
एक मजबूत प्रवृत्ति चलती औसत के माध्यम से टूट सकती है, औसत प्रतिगमन पर बंद करने में असमर्थ हो सकती है। प्रवृत्ति शक्ति संकेतकों द्वारा पहचाने जाने वाले पद के आकार को कम कर सकती है।
गलत पैरामीटर सेटिंग्स के परिणामस्वरूप अत्यधिक आक्रामक प्रविष्टियां या स्टॉप हो सकते हैं। बाजार की स्थितियों के आधार पर सावधानीपूर्वक बैकटेस्टिंग और समायोजन आवश्यक है।
उच्च व्यापारिक आवृत्ति के कारण व्यापारिक लागतें काफी होती हैं। पैरामीटर अनुकूलन में लागत कारकों पर विचार किया जाना चाहिए।
उत्पाद की विशेषताओं के अनुरूप चलती औसत अवधि का अनुकूलन करना।
जोखिम और रिटर्न को संतुलित करने के लिए स्थिति आकार को अनुकूलित करें।
अनावश्यक लेनदेन से बचने के लिए अन्य तकनीकी फ़िल्टर जोड़ें।
बाजार के उतार-चढ़ाव के स्तर के आधार पर स्थिति के आकार को समायोजित करने के लिए अस्थिरता उपायों को शामिल करें।
जोखिम को कम करने और रिटर्न बढ़ाने के लिए लाभ लक्ष्य स्केलिंग शुरू करें।
औसत प्रतिगमन रणनीति चलती औसत से विचलन पर प्रवेश करके स्टॉक की संतुलन प्रतिगमन प्रवृत्ति का उपयोग करती है और प्रतिगमन पर लाभ लेती है। उचित पैरामीटर ट्यूनिंग और फिल्टर के साथ, यह बाजार में परिवर्तन के अनुकूल हो सकता है और जोखिम नियंत्रण के तहत अच्छे रिटर्न प्राप्त कर सकता है। रणनीति में प्रवृत्ति का पालन और जोखिम प्रबंधन दोनों शामिल हैं, जिससे यह निवेशकों के लिए शोध और आवेदन के लायक है।
/*backtest start: 2022-10-19 00:00:00 end: 2023-10-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("YJ Mean Reversion", overlay=true) //Was designed firstly to work on an index like the S&P 500 , which over time tends to go up in value. //Avoid trading too frequently (e.g. Daily, Weekly), to avoid getting eaten by fees. //If you change the underlying asset, or time frame, tweaking the moving average may be necessary. //Can work with a starting capital of just $1000, optimise the settings as necessary. //Accepts floating point values for the amount of units to purchase (e.g. Bitcoin ). //If price of units exceeds available capital, script will cancel the buy. //Adjusted the input parameters to be more intuitive. //input variables movingAverage = input(title="Moving Average (bars)", type=input.integer, defval=28, minval=1, maxval=1000) //riskPercentage = input(title="Amount to Risk (%)", type=input.integer, defval=1, minval=1, maxval=50) deviation = input(title="Deviation Increment (%)", type=input.float, defval=5, minval=0.01, maxval=100) / 100 unitsLevel1 = input(title="Level 1 (units)", type=input.float, defval=1, minval=0.0001, maxval=10000) unitsLevel2 = input(title="Level 2 (units)", type=input.float, defval=2, minval=0.0001, maxval=10000) unitsLevel3 = input(title="Level 3 (units)", type=input.float, defval=4, minval=0.0001, maxval=10000) unitsLevel4 = input(title="Level 4 (units)", type=input.float, defval=8, minval=0.0001, maxval=10000) unitsLevel5 = input(title="Level 5 (units)", type=input.float, defval=16, minval=0.0001, maxval=10000) //moving average and ma slope (use on weekly chart) ma = sma(close, movingAverage) //sl = ma > ma[4] //units to buy //amount = riskPercentage / 100 * (strategy.initial_capital + strategy.netprofit) //units = floor(amount / close) //mode 1 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (strategy.position_size < 10)) //strategy.order("sell", false, strategy.position_size, when = (close > 1.05 * ma) and (strategy.position_size > 0)) //mode 2 //strategy.order("buy", true, 1, when = close < 0.8 * ma) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 3 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("buy", true, 16, when = (close < 0.75 * ma)) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 4 //strategy.order("buy", true, 1, when = (close < 0.98 * ma) and (close > 0.96 * ma) and (sl)) //strategy.order("buy", true, 2, when = (close < 0.96 * ma) and (close > 0.94 * ma) and (sl)) //strategy.order("buy", true, 4, when = (close < 0.94 * ma) and (close > 0.92 * ma) and (sl)) //strategy.order("buy", true, 8, when = (close < 0.92 * ma) and (close > 0.90 * ma) and (sl)) //strategy.order("buy", true, 16, when = (close < 0.90 * ma) and (sl)) //strategy.order("sell", false, strategy.position_size, when = (close > 310) and (strategy.position_size > 0)) //mode 5 //strategy.order("buy", true, 1, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("buy", true, 2, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("buy", true, 4, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("buy", true, 8, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("buy", true, 16, when = (close < 0.75 * ma)) //strategy.order("sell", false, 1, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 2, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 4, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 8, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("sell", false, 16, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //mode 6 //strategy.order("B1", true, unitsLevel1 * units, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("B2", true, unitsLevel2 * units, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("B3", true, unitsLevel3 * units, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("B4", true, unitsLevel4 * units, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("B5", true, unitsLevel5 * units, when = (close < 0.75 * ma)) //strategy.order("S1", false, unitsLevel1 * units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("S2", false, unitsLevel2 * units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("S3", false, unitsLevel3 * units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("S4", false, unitsLevel4 * units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("S5", false, unitsLevel5 * units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //mode 7 //strategy.order("B1", true, units, when = (close < 0.95 * ma) and (close > 0.9 * ma)) //strategy.order("B2", true, units, when = (close < 0.9 * ma) and (close > 0.85 * ma)) //strategy.order("B3", true, units, when = (close < 0.85 * ma) and (close > 0.8 * ma)) //strategy.order("B4", true, units, when = (close < 0.8 * ma) and (close > 0.75 * ma)) //strategy.order("B5", true, units, when = (close < 0.75 * ma)) //strategy.order("S1", false, units, when = (close > 1.05 * ma) and (close < 1.1 * ma) and (strategy.position_size > 0)) //strategy.order("S2", false, units, when = (close > 1.1 * ma) and (close < 1.15 * ma) and (strategy.position_size > 0)) //strategy.order("S3", false, units, when = (close > 1.15 * ma) and (close < 1.2 * ma) and (strategy.position_size > 0)) //strategy.order("S4", false, units, when = (close > 1.2 * ma) and (close < 1.25 * ma) and (strategy.position_size > 0)) //strategy.order("S5", false, units, when = (close > 1.25 * ma) and (close < 1.3 * ma) and (strategy.position_size > 0)) //banding calculations aH = 1.0 - deviation aL = aH - deviation bH = aL bL = bH - deviation cH = bL cL = cH - deviation dH = cL dL = dH - deviation eH = dL strategy.initial_capital = 50000 //mode 8 strategy.order("B1", true, unitsLevel1, when = (close < aH * ma) and (close > aL * ma) and (unitsLevel1 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B2", true, unitsLevel2, when = (close < bH * ma) and (close > bL * ma) and (unitsLevel2 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B3", true, unitsLevel3, when = (close < cH * ma) and (close > cL * ma) and (unitsLevel3 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B4", true, unitsLevel4, when = (close < dH * ma) and (close > dL * ma) and (unitsLevel4 * close < (strategy.initial_capital + strategy.netprofit))) strategy.order("B5", true, unitsLevel5, when = (close < eH * ma) and (unitsLevel5 * close < (strategy.initial_capital + strategy.netprofit))) //banding calculations fL = 1.0 + deviation fH = fL + deviation gL = fH gH = gL + deviation hL = gH hH = hL + deviation iL = hH iH = iL + deviation jL = iH strategy.order("S1", false, unitsLevel1, when = (close > fL * ma) and (close < fH * ma) and (strategy.position_size > 0)) strategy.order("S2", false, unitsLevel2, when = (close > gL * ma) and (close < gH * ma) and (strategy.position_size > 0)) strategy.order("S3", false, unitsLevel3, when = (close > hL * ma) and (close < hH * ma) and (strategy.position_size > 0)) strategy.order("S4", false, unitsLevel4, when = (close > iL * ma) and (close < iH * ma) and (strategy.position_size > 0)) strategy.order("S5", false, unitsLevel5, when = (close > jL * ma) and (strategy.position_size > 0)) plot(ma, color=#666666, linewidth=5)