यह रणनीति विभिन्न पैरामीटर सेटिंग्स के साथ दो चलती औसत की गणना करके और उनके क्रॉसओवर स्थितियों की तुलना करके मूल्य प्रवृत्ति की दिशा निर्धारित करती है, ताकि ट्रेडिंग के बाद प्रवृत्ति को लागू किया जा सके। जब तेजी से चलती औसत नीचे से धीमी गति से चलती औसत को तोड़ती है, तो इसे तेजी का संकेत माना जाता है। जब तेजी से चलती औसत ऊपर से धीमी गति से चलती औसत को तोड़ती है, तो इसे मंदी का संकेत माना जाता है। यह रणनीति मापदंडों को समायोजित करके विभिन्न चक्रों के रुझानों का न्याय प्राप्त कर सकती है।
यह रणनीति तुलना के लिए विभिन्न पैरामीटर सेटिंग्स के साथ चलती औसत के दो सेट का उपयोग करती है। पहला चलती औसत पैरामीटर len1 और type1 द्वारा सेट किया जाता है, और दूसरा चलती औसत पैरामीटर len2 और type2 द्वारा सेट किया जाता है। जहां len1 और len2 क्रमशः दो चलती औसत की चक्र लंबाई का प्रतिनिधित्व करते हैं, और type1 और type2 चलती औसत के एल्गोरिथ्म प्रकार का प्रतिनिधित्व करते हैं।
जब तेजी से चलती औसत स्वर्ण क्रॉस बनाने के लिए धीमी गति से चलती औसत से ऊपर जाती है, तो इसे तेजी का संकेत माना जाता है। जब तेजी से चलती औसत धीमी गति से चलती औसत से नीचे जाती है और मृत क्रॉस बनाती है, तो इसे मंदी का संकेत माना जाता है।
क्रॉसओवर सिग्नल की दिशा के अनुसार, लंबी या छोटी पोजीशन निष्पादित की जाएंगी। जब एक तेजी का संकेत ट्रिगर किया जाता है, यदि needlong पैरामीटर सही है, तो एक लंबी स्थिति default_qty_value या प्रतिशत_अक्च्यूटी_ऑफ_इक्विटी मात्रा के साथ खोली जाएगी। जब एक मंदी का संकेत ट्रिगर किया जाता है, यदि needshort पैरामीटर सही है, तो एक छोटी स्थिति default_qty_value या प्रतिशत_ऑफ_इक्विटी मात्रा के साथ खोली जाएगी।
मूविंग एवरेज के पीछे के गुण होते हैं और मूल्य उलट बिंदुओं को याद कर सकते हैं
समाधानः चलती औसत चक्रों को उचित रूप से छोटा करें या अन्य संकेतकों के साथ संयोजन में उपयोग करें
उच्च अस्थिरता और लगातार उलटफेर वाले बाजारों के लिए उपयुक्त नहीं
समाधानः दोहराने वाले बाजारों में व्यापार से बचने के लिए फ़िल्टरिंग शर्तें जोड़ें
झूठे संकेतों के कुछ जोखिम हैं
समाधानः सिग्नल विश्वसनीयता में सुधार के लिए संयोजन के लिए अन्य फ़िल्टरिंग संकेतक जोड़ें
यह रणनीति दो चलती औसत के क्रॉसओवर की तुलना करके मूल्य प्रवृत्ति का न्याय करती है, और रुझानों को पकड़ने और लाभ उठाने के लिए संबंधित लंबे और छोटे संचालन करती है। लाभ यह है कि संकेत नियम सरल और स्पष्ट हैं, पैरामीटर समायोज्य हैं, प्रयोज्यता मजबूत है, और इसे विभिन्न बाजार वातावरण के लिए अनुकूलित और समायोजित किया जा सकता है। चलती औसत और चंचल बाजारों के पिछड़े जोखिमों को रोकने के लिए ध्यान दें, जिन्हें संकेत की गुणवत्ता में सुधार के लिए फ़िल्टरिंग के लिए अन्य संकेतकों को जोड़कर कम किया जा सकता है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Cross Tests v1.0", shorttitle = "MAs Cross tests 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0) needlong = input(true, "long") needshort = input(true, "short") len2 = input(15, defval = 15, minval = 2, maxval = 1000, title = "Fast MA length") type2 = input(1, defval = 1, minval = 1, maxval = 7, title = "Fast MA Type") src2 = input(close, defval = close, title = "Fast MA Source") len1 = input(30, defval = 30, minval = 2, maxval = 1000, title = "Slow MA length") type1 = input(1, defval = 1, minval = 1, maxval = 7, title = "Slow MA Type") src1 = input(close, defval = close, title = "Slow MA Source") col = input(false, defval = false, title = "Color of bar") o = input(false, title = "1 SMA, 2 EMA, 3 VWMA, 4 DEMA, 5 TEMA, 6 KAMA, 7 Price Channel") //DEMA 1 dema1 = 2 * ema(src1, len1) - ema(ema(close, len1), len1) //TEMA 1 xEMA1 = ema(src1, len1) xEMA2 = ema(xEMA1, len1) xEMA3 = ema(xEMA2, len1) tema1 = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA 1 xvnoise = abs(src1 - src1[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src1 - src1[len1]) nnoise = sum(xvnoise, len1) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama1 = nz(kama1[1]) + nsmooth * (src1 - nz(kama1[1])) //PriceChannel 1 lasthigh1 = highest(src1, len1) lastlow1 = lowest(src1, len1) center1 = (lasthigh1 + lastlow1) / 2 //DEMA 2 dema2 = 2 * ema(src2, len2) - ema(ema(close, len2), len2) //TEMA 2 xEMA12 = ema(src2, len2) xEMA22 = ema(xEMA12, len2) xEMA32 = ema(xEMA22, len2) tema2 = 3 * xEMA12 - 3 * xEMA22 + xEMA32 //KAMA 2 xvnoise2 = abs(src2 - src2[1]) nfastend2 = 0.20 nslowend2 = 0.05 nsignal2 = abs(src2 - src2[len2]) nnoise2 = sum(xvnoise2, len2) nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0) nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2) kama2 = nz(kama2[1]) + nsmooth2 * (src2 - nz(kama2[1])) //PriceChannel 2 lasthigh2 = highest(src2, len2) lastlow2 = lowest(src2, len2) center2 = (lasthigh2 + lastlow2) / 2 //MAs ma1 = type1 == 1 ? sma(src1, len1) : type1 == 2 ? ema(src1, len1) : type1 == 3 ? vwma(src1, len1) : type1 == 4 ? dema1 : type1 == 5 ? tema1 : type1 == 6 ? kama1 : type1 == 7 ? center1 : 0 ma2 = type2 == 1 ? sma(src2, len2) : type2 == 2 ? ema(src2, len2) : type2 == 3 ? vwma(src2, len2) : type2 == 4 ? dema2 : type2 == 5 ? tema2 : type2 == 6 ? kama2 : type2 == 7 ? center2 : 0 plot(ma1, color = blue, linewidth = 3, transp = 0) plot(ma2, color = red, linewidth = 3, transp = 0) //Signals trend = ma2 > ma1 ? 1 : ma2 < ma1 ? -1 : trend[1] up = trend == 1 and ((close < open and close[1] < open[1]) or col == false) dn = trend == -1 and ((close > open and close[1] > open[1]) or col == false) if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na)