यह रणनीति व्यापार करने के लिए चलती औसत के क्रॉसओवर सिद्धांत पर आधारित है। यह दो चलती औसत का उपयोग करता है, खरीद संकेत उत्पन्न करता है जब अल्पकालिक चलती औसत नीचे से लंबी अवधि के चलती औसत के ऊपर पार करता है। बिक्री संकेत उत्पन्न होते हैं जब कीमत किसी अन्य चलती औसत से नीचे टूट जाती है। यह रणनीति ट्रेंडिंग बाजारों के लिए उपयुक्त है, कुछ शोर ट्रेडों को प्रभावी ढंग से फ़िल्टर करने और मुख्य प्रवृत्ति को पकड़ने में सक्षम है।
यह रणनीति उपयोगकर्ता द्वारा अनुकूलित अल्पकालिक और दीर्घकालिक चलती औसत अवधि, बाहर निकलने वाली चलती औसत अवधि और चलती औसत गणना विधियों का उपयोग करती है।
जब अल्पकालिक चलती औसत नीचे से लंबी अवधि के चलती औसत से ऊपर पार करती है, तो एक खरीद संकेत उत्पन्न होता है। यह इंगित करता है कि अल्पकालिक प्रवृत्ति एक अपट्रेंड में बदल गई है, और हम खरीद सकते हैं।
जब बंद मूल्य बाहर निकलने वाले चलती औसत से नीचे टूट जाता है, तो एक बिक्री संकेत उत्पन्न होता है। यह एक प्रवृत्ति उलट का संकेत देता है, इसलिए हमें स्थिति से बाहर निकलना चाहिए।
इसलिए, रणनीति के व्यापार संकेत अल्पकालिक और दीर्घकालिक चलती औसत के क्रॉसओवर से आते हैं, और समापन मूल्य और निकास चलती औसत के बीच संबंध।
इस रणनीति के लाभ इस प्रकार हैंः
सरल और लागू करने में आसान।
अनुकूलन योग्य मापदंड विभिन्न बाजार स्थितियों के अनुरूप हैं।
चलती औसत शोर को फ़िल्टर करती है और मुख्य प्रवृत्ति को पकड़ती है।
आगे अनुकूलन के लिए प्रवृत्ति, समर्थन/प्रतिरोध जैसे अन्य तकनीकी संकेतकों को शामिल कर सकता है।
नियंत्रित जोखिम-लाभ अनुपात, स्टॉप लॉस तंत्र है।
जोखिम निम्नलिखित हैं:
नॉन-ट्रेंडिंग समेकन बाजारों में झूठे संकेतों के लिए प्रवण।
अनुचित पैरामीटर सेटिंग्स के कारण अनुपलब्ध रुझान या बहुत अधिक अमान्य ट्रेड हो सकते हैं।
गलत स्टॉप लॉस प्लेसमेंट से नुकसान बढ़ सकता है।
असफल भागने से नुकसान हो सकता है।
बाजार के परिवर्तनों के अनुरूप मापदंडों को समय पर समायोजित करने की आवश्यकता है।
समाधानों में पैरामीटर अनुकूलित करना, अन्य फ़िल्टर शामिल करना, स्टॉप को समायोजित करना, ट्रेडिंग से पहले प्रवृत्ति की पुष्टि का इंतजार करना आदि शामिल हैं।
इस रणनीति को निम्न के द्वारा बेहतर किया जा सकता हैः
प्रवृत्ति निर्धारण तंत्र विकसित करना और प्रवृत्ति की पुष्टि के बाद ही व्यापार करना।
फ़िल्टर संकेतों के लिए वॉल्यूम या अस्थिरता जैसे फ़िल्टर जोड़ना।
चलती औसत अवधि का गतिशील अनुकूलन।
स्टॉप-लॉस तंत्र को अनुकूलित करना ताकि एक ट्रेलिंग स्टॉप का उपयोग किया जा सके।
संकेतों की पुष्टि के लिए समर्थन/प्रतिरोध और अन्य संकेतकों को शामिल करना।
विभिन्न उत्पादों और समय सीमाओं के आधार पर मापदंडों को समायोजित करना।
कुल मिलाकर यह चलती औसत क्रॉसओवर रणनीति एक सरल और व्यावहारिक प्रवृत्ति निम्नलिखित प्रणाली है। यह मापदंडों को ट्विक करके बाजार की स्थिति में समायोजित किया जा सकता है और प्रवृत्ति बाजारों में मुख्य प्रवृत्ति दिशा को पकड़ सकता है। लेकिन प्रवृत्ति की गलत पहचान जैसे जोखिमों को ध्यान में रखा जाना चाहिए, और बदलते बाजारों के अनुकूल होने के लिए निरंतर अनुकूलन की आवश्यकता होती है। सामान्य तौर पर, इस रणनीति में अच्छी व्यवहार्यता है।
/*backtest start: 2022-10-30 00:00:00 end: 2023-11-05 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/ // © TwoChiefs //@version=4 strategy("John EMA Crossover Strategy", overlay=true) //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2020, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// //CREATE USER-INPUT VARIABLES periodShort = input(13, minval=1, title="Enter Period for Short Moving Average") smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"]) periodLong = input(48, minval=1, title="Enter Period for Long Moving Average") smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"]) periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average") smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"]) src1 = close pivot = (high + low + close) / 3 //MA CALCULATION FUNCTION ma(smoothing, src, length) => if smoothing == "RMA" rma(src, length) else if smoothing == "SMA" sma(src, length) else if smoothing == "EMA" ema(src, length) else if smoothing == "WMA" wma(src, length) else if smoothing == "VWMA" vwma(src, length) else if smoothing == "SMMA" na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length else if smoothing == "HullMA" wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length))) //ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE shortMA=ma(smoothingShort, pivot, periodShort) longMA=ma(smoothingLong, pivot, periodLong) exitMA=ma(smoothingExit, pivot, periodExit) //PLOT THOSE VARIABLES plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average") plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average") plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average") //BUY STRATEGY buy = crossover(shortMA,longMA) ? true : na exit = crossunder(close,exitMA) ? true : na strategy.entry("long",true,when=buy and time_cond) strategy.close("long",when=exit and time_cond) if (not time_cond) strategy.close_all()