अवलोकन: यह रणनीति मूविंग एवरेज क्रॉसओवर की क्लासिक ट्रेडिंग रणनीति पर आधारित है। इसमें सिंपल मूविंग एवरेज (एसएमए), एक्सपोनेंशियल मूविंग एवरेज (ईएमए), वेरिएबल वेटेड मूविंग एवरेज (वीडब्ल्यूएमए) और हॉल मूविंग एवरेज (एचएमए) सहित दोहरी मूविंग एवरेज का उपयोग किया जाता है।
सिद्धांत: रणनीति का मूल तर्क दोहरी चलती औसत क्रॉसओवर है। विभिन्न मापदंडों के साथ दो चलती औसत की गणना करके, एक खरीद संकेत उत्पन्न होता है जब तेजी से चलती औसत धीमी से पार हो जाती है, और एक बिक्री संकेत उत्पन्न होता है जब तेजी से चलती औसत धीमी से नीचे पार हो जाती है। चलती औसत क्रॉसओवर कीमतों के अल्पकालिक और दीर्घकालिक रुझानों के मोड़ का प्रतिनिधित्व करता है।
लाभ विश्लेषण: दोहरी चलती औसत क्रॉसओवर रणनीति के मुख्य फायदे सादगी और संचालन में आसानी हैं। केवल एक संकेत के साथ, बहुत अधिक पैरामीटर चयन और समायोजन के बिना सबसे बुनियादी प्रवृत्ति निर्णय प्राप्त किया जा सकता है, जो नौसिखिया व्यापारियों के लिए बहुत उपयुक्त है। इसके अलावा, विभिन्न प्रकार के चलती औसत का परीक्षण विभिन्न संयोजनों को अनुकूलित करने के लिए किया जाता है।
जोखिम विश्लेषण: इस रणनीति का मुख्य जोखिम यह है कि आम चलती औसत क्रॉसओवर रणनीतियों में बहुत सारे झूठे संकेत होंगे, जिसके परिणामस्वरूप कई छोटे लाभ और फ्लैट पद होंगे, जो समग्र रिटर्न को प्रभावित करता है। इसके अलावा, निश्चित तेजी से और धीमी गति से चलती औसत लंबाई सेटिंग्स कुछ चक्रों में विफल हो सकती हैं।
अनुकूलन दिशा-निर्देश: 1) चलती औसत क्रॉस के इष्टतम संयोजन का निर्धारण करने के लिए विभिन्न अवधियों का परीक्षण करें; 2) झूठे संकेतों को कम करने के लिए निर्णय में सहायता के लिए चलती औसत मापदंडों और आरएसआई संकेतकों के दूसरे सेट को पेश करने पर विचार करें; 3) अधिक विश्वसनीय क्रॉसओवर निर्णय प्राप्त करने के लिए सरल क्रॉसओवर के बजाय एमए संकेतक के क्रमिक परिवर्तन के आधार पर स्थिति निर्णय पेश करें।
सारांश: यह रणनीति दोहरी चलती औसत अवधि के इष्टतम संयोजन को खोजने के लिए दोहरी चलती औसत का परीक्षण करने के लिए पारंपरिक चलती औसत क्रॉसओवर रणनीति के ढांचे को अपनाती है। साथ ही, यह आरओसी और चलती औसत की कीमत के आधार पर स्टॉप-लॉस निर्णय जोड़ती है। कुल मिलाकर यह एक सरल और उपयोग करने में आसान दोहरी चलती औसत रणनीति है जो मात्रात्मक व्यापार तर्क के अनुरूप है। इसके अलावा, समृद्ध अनुकूलन विचार भी इस रणनीति के आगे विकास के लिए जगह प्रदान करते हैं।
/*backtest start: 2023-11-27 00:00:00 end: 2023-12-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA Crossover Strategy", overlay = true) strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(5, title="1st MA Length") type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) ma2 = input(7, title="2nd MA Length") type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) f_hma(_src, _length)=> _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length))) price1 = if (type1 == "SMA") sma(price, ma1) else if (type1 == "EMA") ema(price, ma1) else if (type1 == "VWMA") vwma(price, ma1) else f_hma(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else if (type2 == "EMA") ema(price, ma2) else if (type2 == "VWMA") vwma(price, ma2) else f_hma(price, ma2) //plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0) plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0) plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0) longCondition = crossover(price1, price2) if (longCondition) // and time>timestamp(2018,6,1,9,30) strategy.entry("Long", strategy.long) shortCondition = crossunder(price1, price2) if (shortCondition) // and time>timestamp(2018,6,1,9,30) strategy.entry("Short", strategy.short) lookback1 = input(1, "Lookback 1") roc1 = roc(price1, lookback1) ma1up = false ma1down = false ma2up = false ma2down = false ma1up := nz(ma1up[1]) ma1down := nz(ma1down[1]) ma2up := nz(ma2up[1]) ma2down := nz(ma2down[1]) trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01 if crossover(roc1, trendStrength1) ma1up := true ma1down := false if crossunder(roc1, -trendStrength1) ma1up := false ma1down := true shortexitCondition = ma1up and ma1down[1] if (shortexitCondition) strategy.close("Short") longexitCondition = ma1down and ma1up[1] if (longexitCondition) strategy.close("Long")