मूविंग एवरेज क्रॉसओवर ट्रेडिंग रणनीति एक अपेक्षाकृत आम मात्रात्मक ट्रेडिंग रणनीति है। यह रणनीति विभिन्न अवधियों के मूविंग एवरेज की गणना करके और उनके क्रॉसओवर स्थितियों के अनुसार ट्रेडिंग सिग्नल उत्पन्न करती है। विशेष रूप से, यह 4 अवधियों, 8 अवधियों और 20 अवधियों के घातीय मूविंग एवरेज (ईएमए) की गणना करती है। जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से ऊपर पार हो जाता है, तो लंबा हो जाता है; जब अल्पकालिक ईएमए दीर्घकालिक ईएमए से नीचे पार हो जाता है, तो छोटा हो जाता है।
इस रणनीति का मूल तर्क यह हैः
इस पद्धति के माध्यम से, हम बाजार के संकेतों का न्याय करने के लिए विभिन्न अवधि के चलती औसत के बीच क्रॉसओवर का लाभ उठाते हैं, और झूठे संकेतों को फ़िल्टर करने के लिए सबसे लंबी अवधि के चलती औसत की दिशा का उपयोग करते हैं, एक स्थिर ट्रेडिंग रणनीति का निर्माण करते हैं।
इस रणनीति के मुख्य लाभ इस प्रकार हैंः
इस रणनीति के साथ कुछ जोखिम भी हैंः
मुख्य समाधान इस प्रकार हैंः
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
अवधि अनुकूलन: विभिन्न किस्मों के अनुसार इष्टतम एमए अवधि संयोजन निर्धारित करें।
स्टॉप लॉस ऑप्टिमाइजेशन: एकल हानि को नियंत्रित करने के लिए उचित रूप से स्टॉप लॉस प्वाइंट सेट करें।
पैरामीटर अनुकूलन: आनुवंशिक एल्गोरिदम, मार्कोव श्रृंखला आदि का उपयोग करके पैरामीटर को गतिशील रूप से अनुकूलित करें।
मॉडल संलयनः अधिक अल्फा निकालने के लिए LSTM, RNN और अन्य गहरे सीखने के मॉडल के साथ एकीकृत करें।
पोर्टफोलियो अनुकूलनः रणनीतिक पोर्टफोलियो बनाने के लिए अन्य तकनीकी संकेतक रणनीतियों के साथ संयोजन करें।
सामान्य तौर पर, चलती औसत क्रॉसओवर रणनीति एक अपेक्षाकृत क्लासिक और आमतौर पर उपयोग की जाने वाली मात्रात्मक ट्रेडिंग रणनीति है। इस रणनीति में सरल तर्क है और इसे समझना और लागू करना आसान है, कुछ स्थिरता के साथ। लेकिन कुछ समस्याएं भी हैं, जैसे कि झूठे संकेत उत्पन्न करना, बाजार में बदलाव के अनुकूल होने में असमर्थता, आदि। इन मुद्दों को पैरामीटर अनुकूलन, स्टॉप लॉस अनुकूलन, मॉडल संलयन और अन्य तरीकों के माध्यम से सुधार किया जा सकता है। कुल मिलाकर, चलती औसत रणनीति का उपयोग रणनीति टूलबॉक्स में एक बुनियादी मॉड्यूल के रूप में किया जा सकता है, जो मजबूत जटिल रणनीतियों के निर्माण के लिए अधिक जटिल रणनीतियों के साथ संयुक्त है।
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //future strategy //strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05) //stock strategy strategy(title = "stub", overlay = true) //forex strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true) //crypto strategy //strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000) testStartYear = input(1900, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = input(2018, "Backtest Start Year") testEndMonth = input(12, "Backtest Start Month") testEndDay = input(1, "Backtest Start Day") testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testPeriod() => true ema1 = ema(close,4) ema2 = ema(close,8) ema3 = ema(close,20) go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1] exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1] go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1] exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1] if testPeriod() strategy.entry("simpleBuy", strategy.long, when=go_long) strategy.exit("simpleBuy", "simpleSell",when=exit_long) strategy.entry("simpleSell", strategy.short,when=go_short) strategy.exit("simpleSell", "simpleSell",when=exit_short)