रैखिक प्रतिगमन चलती औसत ट्रेडिंग रणनीति एक रैखिक प्रतिगमन रेखा और स्टॉक मूल्य के चलती औसत के बीच क्रॉसओवर के आधार पर खरीद और बिक्री संकेत उत्पन्न करती है। यह रणनीति संभावित उलटफेर की पहचान करने और कम खरीदने और उच्च बेचने के लिए रैखिक प्रतिगमन विश्लेषण के साथ प्रवृत्ति के बाद को जोड़ती है।
यह रणनीति सबसे पहले शेयर की कीमत की n-दिवसीय रैखिक प्रतिगमन रेखा और m-दिवसीय चलती औसत की गणना करती है। प्रतिगमन रेखा दीर्घकालिक सांख्यिकीय रुझानों को पकड़ती है जबकि चलती औसत अल्पकालिक गति को दर्शाती है।
जब चलती औसत प्रतिगमन रेखा के ऊपर से गुजरती है, तो यह ऊपर की ओर गति को मजबूत करने का संकेत देती है और एक खरीद संकेत उत्पन्न करती है। जब चलती औसत नीचे से गुजरती है, तो यह कमजोर ऊपर की ओर संकेत देती है और एक बिक्री संकेत उत्पन्न करती है।
विशेष रूप से, रणनीति व्यापार संकेतों को निर्धारित करने के लिए निम्नलिखित चरणों का पालन करती हैः
कीमतों की n-दिन रैखिक प्रतिगमन रेखा की गणना करें lrLine
lrLine के m-day सरल चलती औसत की गणना करें जिसे lrMA कहा जाता है
ईएमए नामक कीमतों के एम-दिन के घातीय चलती औसत की गणना करें
जब ईएमए आईआरएमए के ऊपर पार करता है, तो खरीद संकेत उत्पन्न करता है
जब ईएमए आईआरएमए के नीचे पार करता है, तो बेचने का संकेत उत्पन्न करता है
केवल जब बाजार तेजी से है खरीद संकेत पर विचार करें
संकेतों के आधार पर ट्रेड निष्पादित करें
प्रविष्टियों को निर्धारित करने के लिए प्रतिगमन और चलती औसत के बीच क्रॉसओवर का उपयोग करके, रणनीति प्रभावी रूप से झूठे ब्रेक को फ़िल्टर कर सकती है और कम खरीदने और उच्च बेचने के लिए उलटफेर की पहचान कर सकती है।
चलती औसत और प्रतिगमन रेखा अवधि को बढ़ाने और व्यापार आवृत्ति को कम करने के लिए मापदंडों को समायोजित किया जाना चाहिए। जोखिमों को नियंत्रित करने के लिए उचित स्टॉप लॉस को लागू किया जाना चाहिए। सटीकता में सुधार के लिए बाजार फिल्टर को बढ़ाया जा सकता है।
इस रणनीति को कई पहलुओं में अनुकूलित किया जा सकता हैः
विभिन्न प्रकार के एमए का परीक्षण करके चलती औसत अनुकूलन
गणना अवधि को समायोजित करके प्रतिगमन रेखा अनुकूलन
विभिन्न संकेतकों का परीक्षण करके बाजार फिल्टर अनुकूलन
कठोर बैकटेस्टिंग के माध्यम से पैरामीटर अनुकूलन
विभिन्न स्टॉप लॉस लॉजिक्स का परीक्षण करके स्टॉप लॉस अनुकूलन
लागत के आधार पर व्यापार आवृत्ति को समायोजित करके लागत अनुकूलन
ये अनुकूलन रणनीति की स्थिरता और लाभप्रदता में और सुधार कर सकते हैं।
रैखिक प्रतिगमन एमए रणनीति प्रभावी उलट पहचान और कम बिक्री उच्च खरीदने के लिए प्रवृत्ति विश्लेषण और रैखिक प्रतिगमन की ताकत को एकीकृत करती है। सरल रणनीति मध्यम से दीर्घकालिक क्षितिज पर स्टॉक पिकिंग के लिए उपयुक्त है। पैरामीटर ट्यूनिंग और जोखिम नियंत्रण के साथ, रणनीति और भी अधिक स्थिरता प्राप्त कर सकती है। यह बाजार विश्लेषण के लिए एक व्यवहार्य तकनीकी व्यापार ढांचा प्रदान करती है।
/*backtest start: 2022-10-18 00:00:00 end: 2023-10-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © lazy_capitalist //@version=5 strategy('Linear Regression MA', overlay=true, initial_capital=10000) datesGroup = "Date Info" startMonth = input.int(defval = 1, title = "Start Month", minval = 1, maxval = 12, group=datesGroup) startDay = input.int(defval = 1, title = "Start Day", minval = 1, maxval = 31, group=datesGroup) startYear = input.int(defval = 2022, title = "Start Year", minval = 1970, group=datesGroup) averagesGroup = "Averages" lrLineInput = input.int(title="Linear Regression Line", defval=55, minval = 1, group=averagesGroup) lrMAInput = input.int(title="Linear Regression MA", defval=55, minval = 1, group=averagesGroup) emaInput = input.int(title="EMA Length", defval=55, minval = 1, group=averagesGroup) tradesGroup = "Execute Trades" executeLongInput = input.bool(title="Execute Long Trades", defval=true) executeShortInput = input.bool(title="Execute Short Trades", defval=true) executeStopLoss = input.bool(title="Execute Stop Loss", defval=true) fourHrSMAExpr = ta.sma(close, 200) fourHrMA = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr) bullish = close > fourHrMA ? true : false maxProfitInput = input.float( title="Max Profit (%)", defval=10.0, minval=0.0) * 0.01 stopLossPercentageInput = input.float( title="Stop Loss (%)", defval=1.75, minval=0.0) * 0.01 start = timestamp(startYear, startMonth, startDay, 00, 00) // backtest start window window() => time >= start ? true : false // create function "within window of time" showDate = input(defval = true, title = "Show Date Range") lrLine = ta.linreg(close, lrLineInput, 0) lrMA = ta.sma(lrLine, lrMAInput) ema = ta.ema(close, emaInput) longEntry = ema < lrMA longExit = lrMA < ema shortEntry = lrMA < ema shortExit = ema < lrMA maxProfitLong = strategy.opentrades.entry_price(0) * (1 + maxProfitInput) maxProfitShort = strategy.opentrades.entry_price(0) * (1 - maxProfitInput) stopLossPriceShort = strategy.position_avg_price * (1 + stopLossPercentageInput) stopLossPriceLong = strategy.position_avg_price * (1 - stopLossPercentageInput) if(executeLongInput and bullish) strategy.entry( id="long_entry", direction=strategy.long, when=longEntry and window(), qty=10, comment="long_entry") strategy.close( id="long_entry", when=longExit, comment="long_exit") // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp") if(executeShortInput and not bullish) strategy.entry( id="short_entry", direction=strategy.short, when=shortEntry and window(), qty=10, comment="short_entry") strategy.close( id="short_entry", when=shortExit, comment="short_exit") // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp") if(strategy.position_size > 0 and executeStopLoss) strategy.exit( id="long_entry", stop=stopLossPriceLong, comment="exit_long_SL") strategy.exit( id="short_entry", stop=stopLossPriceShort, comment="exit_short_SL") // plot(series=lrLine, color=color.green) plot(series=lrMA, color=color.red) plot(series=ema, color=color.blue)