मूविंग एवरेज क्रॉसओवर रणनीति एक बहुत ही क्लासिक और आमतौर पर इस्तेमाल की जाने वाली तकनीकी विश्लेषण रणनीति है। इस रणनीति का मुख्य विचार विभिन्न अवधियों के मूविंग एवरेज के बीच क्रॉसओवर का उपयोग ट्रेडिंग सिग्नल के रूप में करना है। जब अल्पकालिक मूविंग एवरेज नीचे से दीर्घकालिक मूविंग एवरेज से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है। जब अल्पकालिक मूविंग एवरेज ऊपर से दीर्घकालिक मूविंग एवरेज से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
यह रणनीति चलती औसत के प्रकार (एसएमए, ईएमए, डब्ल्यूएमए, आरएमए) और अवधि, साथ ही बैकटेस्टिंग समय सीमा को निर्धारित करने के लिए इनपुट का उपयोग करती है।
विभिन्न प्रकार के चलती औसत की गणना वैरिएंट फलन में की जाती है। गणना की गई चलती औसत को ma चर में सहेजा जाता है।
जब समापन मूल्य ma से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है। जब समापन मूल्य ma से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
स्टॉप लॉस सेट करने के लिए, 14-पीरियड औसत सच्ची रेंज atr की गणना की जाती है। क्रॉसओवर बिंदु को संदर्भ के रूप में लें, स्टॉप लॉस रेंज के रूप में 2 गुना atr जोड़ें या घटाएं।
विशिष्ट प्रवेश और निकास तर्क इस प्रकार है:
लंबी प्रविष्टिः ma से ऊपर और बैकटेस्ट समय सीमा के भीतर बंद क्रॉस, स्टॉप लॉस बिंदु प्रवेश बिंदु बंद है
लॉन्ग एग्जिटः स्टॉप लॉस एग्जिट के लिए एमए से घटाकर 2 गुना एटीआर से नीचे क्रॉसिंग बंद करें या स्टॉप प्रॉफिट एग्जिट के लिए उच्चतम मूल्य प्रवेश बिंदु से अधिक बंद करें और 2 गुना एटीआर बंद करें।
संक्षिप्त प्रविष्टिः ma से नीचे और बैकटेस्ट समय सीमा के भीतर बंद क्रॉस, स्टॉप लॉस बिंदु प्रवेश बिंदु बंद है
शॉर्ट एक्जिटः स्टॉप लॉस एक्जिट के लिए एमए प्लस 2 गुना एटीआर से ऊपर के क्रॉस को बंद करें या ले-प्रॉफिट एक्जिट के लिए प्रवेश बिंदु से कम सबसे कम कीमत को बंद करें।
जोखिमों से निपटने के लिए निम्नलिखित पहलुओं में अनुकूलन किया जा सकता हैः
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
मूविंग एवरेज क्रॉसओवर रणनीति एक बहुत ही विशिष्ट और आमतौर पर इस्तेमाल की जाने वाली तकनीकी विश्लेषण रणनीति है। रणनीति का मूल विचार सरल और लागू करने में आसान है, विभिन्न बाजारों के लिए उपयुक्त है, और प्रवेश स्तर की क्वांट ट्रेडिंग रणनीतियों में से एक है। हालांकि, रणनीति में कुछ समस्याएं भी हैं जैसे कि लगातार संकेत उत्पन्न करना और स्टॉप लॉस के लिए प्रवण होना। उचित अनुकूलन के साथ, प्रदर्शन में काफी सुधार किया जा सकता है। कुल मिलाकर, मूविंग एवरेज क्रॉसओवर रणनीति रणनीति विकास के लिए एक बहुत अच्छा ढांचा प्रदान करती है और मात्रात्मक ट्रेडिंग रणनीति सीखने का आधारशिला है।
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA Cross Strategy", overlay=true,commission_value = 0.1) type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"]) length = input(28) source = close // === INPUT BACKTEST RANGE === 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 = 2000, title = "From Year", minval = 2000) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(9999, 1, 1, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" variant(type, src, len) => v1 = sma(src, len) // Simple v2 = ema(src, len) // Exponential v5 = wma(src, len) // Weighted v7 = rma(src, len) // Smoothed type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1 ma = variant(type,source, length) atr = security(syminfo.tickerid, "D", atr(14)) range = valuewhen(cross(close,ma), (atr*2), na) ep = valuewhen(cross(close,ma), close, na) plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1) plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999) plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999) plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999) strategy.entry("Long Entry", true, when = crossover(close,ma) and window() , stop = ep ) strategy.exit("Long Exit", "Long Entry", stop = ep-range) strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) strategy.entry("Short Entry", false, when = crossunder(close,ma) and window() , stop = ep ) strategy.exit("Short Exit", "Short Entry", stop = ep+range) strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )