सापेक्ष गति रणनीति व्यापक बाजार के लिए स्टॉक की सापेक्ष ताकत का न्याय करने के लिए व्यक्तिगत स्टॉक और सूचकांक की गति की तुलना करती है। यह खरीदता है जब स्टॉक गति सूचकांक की तुलना में अधिक होती है, और बेचता है जब स्टॉक गति सूचकांक की तुलना में कम होती है, ताकि व्यक्तिगत स्टॉक के विकास शिखर को पकड़ लिया जा सके।
इस रणनीति का मूल तर्क यह है कि बाजार के मुकाबले व्यक्तिगत शेयरों की सापेक्ष ताकत का आकलन किया जाए, विशेष रूप सेः
इस तर्क के माध्यम से, हम शेयरों में खरीद सकते हैं जब उनकी वृद्धि संपन्न हो रही है और बिक्री कर सकते हैं जब विकास गति फीकी पड़ जाती है, शेयरों की वृद्धि के चरम अवधि के दौरान अतिरिक्त रिटर्न को लॉक करते हैं।
सापेक्ष गति की रणनीति के मुख्य फायदे:
सापेक्ष गति की रणनीति के साथ कुछ जोखिम भी हैंः
इन जोखिमों को उचित लाभ लेने, स्टॉप लॉस, पैरामीटर ट्यूनिंग आदि से प्रबंधित किया जा सकता है।
सापेक्ष गति रणनीति को मुख्य रूप से निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
सापेक्ष गति रणनीति अल्फा उत्पन्न करने के लिए समग्र बाजार के मुकाबले व्यक्तिगत शेयरों के अतिरिक्त विकास चरणों को पकड़ती है। इसके सरल, स्पष्ट खरीद / बिक्री तर्क और संचालन में आसानी के साथ, और जब पैरामीटर अनुकूलन और जोखिम नियंत्रण के साथ जोड़ा जाता है, तो यह रणनीति बहुत अच्छी तरह से प्रदर्शन कर सकती है।
/*backtest start: 2024-01-21 00:00:00 end: 2024-01-28 00:00:00 period: 15m basePeriod: 5m 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/ // © HeWhoMustNotBeNamed //@version=4 strategy("Relative Returns Strategy", overlay=false, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true) index_ticker=input("BTC_USDT:swap") Loopback = input(40, step=20) useStopAndIndexReturns = input(true) useStopAndIndexReturnsMa = input(true) useDifference = not useStopAndIndexReturns MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"]) MALength = input(10, minval=10,step=10) i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Backtest Start Time", type = input.time) i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "Backtest End Time", type = input.time) inDateRange = true f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on) f_getMovingAverage(source, MAType, length)=> ma = sma(source, length) if(MAType == "ema") ma := ema(source,length) if(MAType == "hma") ma := hma(source,length) if(MAType == "rma") ma := rma(source,length) if(MAType == "vwma") ma := vwma(source,length) if(MAType == "wma") ma := wma(source,length) ma index = f_secureSecurity(index_ticker, '1D', close, 0) stock_return = (close - close[Loopback])*100/close index_return = (index - index[Loopback])*100/index stock_return_ma = f_getMovingAverage(stock_return, MAType, MALength) index_return_ma = f_getMovingAverage(index_return, MAType, MALength) relativeReturns = stock_return - index_return relativeReturns_ma = f_getMovingAverage(relativeReturns, MAType, MALength) plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma : stock_return : na, title="StockReturn", color=color.green, linewidth=1) plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? index_return_ma : index_return : na, title="IndexReturn", color=color.red, linewidth=1) plot(useDifference?relativeReturns:na, title="Relative-Returns", color=color.blue, linewidth=1) plot(useDifference?relativeReturns_ma:na, title="MA", color=color.red, linewidth=1) buyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma > index_return_ma : stock_return > index_return : relativeReturns > relativeReturns_ma) closeBuyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma < index_return_ma : stock_return < index_return : relativeReturns < relativeReturns_ma) strategy.entry("Buy", strategy.long, when=buyCondition and inDateRange, oca_name="oca") strategy.close("Buy", when=closeBuyCondition)