यह रणनीति दो प्रसिद्ध संकेतकों पर आधारित हैः एमएसीडी और सापेक्ष शक्ति (आरएस) । उन्हें जोड़कर, हम शक्तिशाली खरीद संकेत प्राप्त करते हैं। वास्तव में, इस रणनीति की विशेष विशेषता यह है कि यह एक संकेतक से एक संकेतक बनाता है। इस प्रकार, हम एक एमएसीडी का निर्माण करते हैं जिसका स्रोत आरएस का मूल्य है। रणनीति केवल खरीद संकेतों को लेती है, बिक्री संकेतों को अनदेखा करती है क्योंकि वे ज्यादातर हारे हुए हैं। एक मनी मैनेजमेंट विधि भी है जो हमें लाभ का एक हिस्सा फिर से निवेश करने या पर्याप्त नुकसान की स्थिति में आदेशों के आकार को कम करने में सक्षम बनाती है।
आरएस एक संकेतक है जो गति और बाजार दक्षता की धारणा के बीच विसंगति को मापता है। यह पेशेवरों द्वारा उपयोग किया जाता है और सबसे मजबूत संकेतक में से एक है। विचार उन परिसंपत्तियों के स्वामित्व में है जो उनके पिछले प्रदर्शन के आधार पर औसत से बेहतर करते हैं। हम इस सूत्र का उपयोग करके आरएस की गणना करते हैंः
आरएस = वर्तमान मूल्य / आरएस अवधि में उच्चतम उच्चतम
इस प्रकार हम वर्तमान मूल्य को उस उपयोगकर्ता-परिभाषित अवधि के दौरान उसके उच्चतम मूल्य के संबंध में स्थित कर सकते हैं।
एमएसीडी सबसे प्रसिद्ध संकेतकों में से एक है, जो दो घातीय चलती औसत के बीच की दूरी को मापता हैः एक तेज और एक धीमी। एक विस्तृत दूरी तेजी से गति को इंगित करती है और इसके विपरीत। हम इस दूरी के मूल्य को प्लॉट करेंगे और इस रेखा को मैकडलाइन कहेंगे। एमएसीडी पहले दो की तुलना में कम अवधि के साथ तीसरे चलती औसत का उपयोग करता है। यह अंतिम चलती औसत मैकडलाइन को पार करने पर संकेत देगा। इसलिए इसे मैकडलाइन के मूल्यों को अपने स्रोत के रूप में उपयोग करके बनाया गया है।
यह ध्यान रखना महत्वपूर्ण है कि पहले दो एमए अपने स्रोत के रूप में आरएस मूल्यों का उपयोग करके बनाए जाते हैं। इसलिए हमने अभी एक संकेतक का एक संकेतक बनाया है। इस तरह की विधि बहुत शक्तिशाली है क्योंकि इसका उपयोग शायद ही कभी किया जाता है और रणनीति के लिए मूल्य लाता है।
यह रणनीति दो व्यक्तिगत रूप से बहुत शक्तिशाली संकेतकों को जोड़ती हैः एमएसीडी और आरएस। एमएसीडी अल्पकालिक रुझानों और गति के बदलावों को पकड़ने में सक्षम है जबकि आरएस मध्यम से दीर्घकालिक रुझानों की मजबूती को दर्शाता है। उनका एक साथ उपयोग करने से अल्पकालिक और दीर्घकालिक दोनों कारकों पर विचार होता है, जिससे खरीद संकेत अधिक विश्वसनीय होते हैं।
इसके अतिरिक्त, रणनीति आरएस संकेतक से एमएसीडी प्राप्त करके बहुत ही अद्वितीय है, रचनात्मक रूप से रणनीति के प्रभाव को बढ़ाती है। इस तरह के अभिनव डिजाइन से अल्फा रिटर्न होने की संभावना है क्योंकि कुछ ही लोग इस दृष्टिकोण का उपयोग करते हैं।
अंत में, रणनीति में जोखिम प्रबंधन और स्टॉप लॉस तंत्र हैं जो जोखिमों को प्रभावी ढंग से नियंत्रित करते हैं और प्रति व्यापार घाटे को सीमित करते हैं।
इस रणनीति का सबसे बड़ा जोखिम यह है कि आरएस और एमएसीडी संकेतक गलत संकेत देने की संभावना है। भले ही दोनों संकेतक मजबूत हों, कोई भी तकनीकी संकेतक 100% भविष्य की भविष्यवाणी नहीं कर सकता है और संकेत कभी-कभी विफल हो सकते हैं। इसके अलावा, आरएस स्वयं मध्यम-लंबी अवधि के रुझान निर्णय के प्रति पक्षपाती है और अल्पावधि में भ्रामक संकेत उत्पन्न कर सकता है।
जोखिमों को कम करने के लिए, आरएस और एमएसीडी के मापदंडों को विशिष्ट व्यापारिक उपकरणों और बाजार के वातावरण में बेहतर ढंग से फिट करने के लिए समायोजित किया जा सकता है। इसके अलावा, अधिक सख्त स्टॉप लॉस रेंज लागू की जा सकती है। सामान्य तौर पर, प्रति व्यापार हानि को नियंत्रित करने के लिए स्टॉप लॉस का उपयोग करना इस रणनीति के जोखिमों को संबोधित करने का सबसे अच्छा तरीका है।
सबसे पहले, परीक्षण करें कि कौन सा बाजार (जैसे स्टॉक, विदेशी मुद्रा, क्रिप्टो आदि) इस रणनीति का सबसे अच्छा प्रभाव देता है, फिर उस इष्टतम संपत्ति पर ध्यान केंद्रित करें।
दूसरा, मैन्युअल रूप से उन्हें तय करने के बजाय आरएस और एमएसीडी मापदंडों को स्वचालित रूप से अनुकूलित करने के लिए मशीन लर्निंग एल्गोरिदम का उपयोग करने का प्रयास करें। इससे मापदंडों की अनुकूलन क्षमता में काफी सुधार हो सकता है।
तीसरा, व्यापार संकेतों को स्थापित करने के लिए अन्य संकेतकों को शामिल करने पर विचार करें, संकेत की सटीकता में सुधार के लिए एक बहु-कारक मॉडल का गठन करें। उदाहरण के लिए, मात्रा संकेतकों आदि को जोड़ना।
यह रणनीति मजबूत खरीद संकेतों की आपूर्ति करने के लिए एमएसीडी और आरएस संकेतकों को तालमेल से लाभान्वित करती है। इसकी नवीनता आरएस संकेतक से एमएसीडी प्राप्त करने में निहित है, दक्षता बढ़ाने के लिए संकेतकों के बीच युग्मन का एहसास करती है। रणनीति में स्पष्ट प्रवेश, स्टॉप लॉस और धन प्रबंधन तंत्र हैं जो जोखिमों को प्रभावी ढंग से नियंत्रित करते हैं। अगले चरण पैरामीटर अनुकूलन, परिष्कृत संकेत पीढ़ी, अन्य कारकों को जोड़ने आदि के माध्यम से रणनीति में और सुधार कर सकते हैं।
/*backtest start: 2022-12-14 00:00:00 end: 2023-12-20 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/ // © gsanson66 //This strategy calculates the Relative Strength and plot the MACD of this Relative Strenght //We take only buy signals send by MACD //@version=5 strategy("MACD OF RELATIVE STRENGHT STRATEGY", shorttitle="MACD RS STRATEGY", precision=4, overlay=false, initial_capital=1000, default_qty_type=strategy.cash, default_qty_value=950, commission_type=strategy.commission.percent, commission_value=0.18, slippage=3) //------------------------------TOOL TIPS--------------------------------// t1 = "Relative Strength length i.e. number of candles back to find the highest high and compare the current price with this high." t2 = "Relative Strength fast EMA length used to plot the MACD." t3 = "Relative Strength slow EMA length used to plot the MACD." t4 = "Macdline SMA length used to plot the MACD." t5 = "The maximum loss a trade can incur (in percentage of the trade value)" t6 = "Each gain or losse (relative to the previous reference) in an amount equal to this fixed ratio will change quantity of orders." t7 = "The amount of money to be added to or subtracted from orders once the fixed ratio has been reached." //----------------------------------------FUNCTIONS---------------------------------------// //@function Displays text passed to `txt` when called. debugLabel(txt, color, loc) => label.new(bar_index, loc, text=txt, color=color, style=label.style_label_lower_right, textcolor=color.black, size=size.small) //@function which looks if the close date of the current bar falls inside the date range inBacktestPeriod(start, end) => (time >= start) and (time <= end) //---------------------------------------USER INPUTS--------------------------------------// //Technical parameters rs_lenght = input.int(defval=300, minval=1, title="RS Length", group="Technical parameters", tooltip=t1) fast_length = input(title="MACD Fast Length", defval=14, group="Technical parameters", tooltip=t2) slow_length = input(title="MACD Slow Length", defval=26, group="Technical parameters", tooltip=t3) signal_length = input.int(title="MACD Signal Smoothing", minval=1, maxval=50, defval=10, group="Technical parameters", tooltip=t4) //Risk Management slMax = input.float(8, "Max risk per trade (in %)", minval=0, group="Risk Management", tooltip=t5) //Money Management fixedRatio = input.int(defval=400, minval=1, title="Fixed Ratio Value ($)", group="Money Management", tooltip=t6) increasingOrderAmount = input.int(defval=200, minval=1, title="Increasing Order Amount ($)", group="Money Management", tooltip=t7) //Backtesting period startDate = input(title="Start Date", defval=timestamp("1 Jan 2020 00:00:00"), group="Backtesting Period") endDate = input(title="End Date", defval=timestamp("1 July 2024 00:00:00"), group="Backtesting Period") //----------------------------------VARIABLES INITIALISATION-----------------------------// strategy.initial_capital = 50000 //Relative Strenght Calculation rs = close/ta.highest(high, rs_lenght) //MACD of RS Calculation [macdLine, signalLine, histLine] = ta.macd(rs, fast_length, slow_length, signal_length) //Money management equity = math.abs(strategy.equity - strategy.openprofit) var float capital_ref = strategy.initial_capital var float cashOrder = strategy.initial_capital * 0.95 //Backtesting period bool inRange = na //------------------------------CHECKING SOME CONDITIONS ON EACH SCRIPT EXECUTION-------------------------------// //Checking if the date belong to the range inRange := true //Checking performances of the strategy if equity > capital_ref + fixedRatio spread = (equity - capital_ref)/fixedRatio nb_level = int(spread) increasingOrder = nb_level * increasingOrderAmount cashOrder := cashOrder + increasingOrder capital_ref := capital_ref + nb_level*fixedRatio if equity < capital_ref - fixedRatio spread = (capital_ref - equity)/fixedRatio nb_level = int(spread) decreasingOrder = nb_level * increasingOrderAmount cashOrder := cashOrder - decreasingOrder capital_ref := capital_ref - nb_level*fixedRatio //Checking if we close all trades in case where we exit the backtesting period if strategy.position_size!=0 and not inRange strategy.close_all() debugLabel("END OF BACKTESTING PERIOD : we close the trade", color=color.rgb(116, 116, 116), loc=macdLine) //-----------------------------------EXIT SIGNAL------------------------------// if strategy.position_size>0 and histLine<0 strategy.close("Long") //-------------------------------BUY CONDITION-------------------------------------// if histLine>0 and not (strategy.position_size>0) and inRange qty = cashOrder/close stopLoss = close*(1-slMax/100) strategy.entry("Long", strategy.long, qty) strategy.exit("Exit Long", "Long", stop=stopLoss) //---------------------------------PLOTTING ELEMENT----------------------------------// hline(0, "Zero Line", color=color.new(#787B86, 50)) plot(macdLine, title="MACD", color=color.blue) plot(signalLine, title="Signal", color=color.orange) plot(histLine, title="Histogram", style=plot.style_columns, color=(histLine>=0 ? (histLine[1] < histLine ? #26A69A : #B2DFDB) : (histLine[1] < histLine ? #FFCDD2 : #FF5252))) plotchar(rs, "Relative Strenght", "", location.top, color=color.yellow)