मूविंग एवरेज क्रॉसओवर पर आधारित ट्रेंड फॉलोइंग रणनीति


निर्माण तिथि: 2024-02-23 12:21:40 अंत में संशोधित करें: 2024-02-23 12:21:40
कॉपी: 4 क्लिक्स: 619
1
ध्यान केंद्रित करना
1617
समर्थक

मूविंग एवरेज क्रॉसओवर पर आधारित ट्रेंड फॉलोइंग रणनीति

अवलोकन

यह रणनीति दो अलग-अलग पैरामीटर सेट की एक चलती औसत की गणना करके और उनके क्रॉसिंग की तुलना करके मूल्य की प्रवृत्ति की दिशा का न्याय करने के लिए ट्रेडों को ट्रेंड ट्रैक करने के लिए सक्षम है। जब तेजी से चलती औसत नीचे से धीमी गति से चलती औसत को तोड़ता है, तो यह एक आशावादी संकेत है; जब तेजी से चलती औसत ऊपर से नीचे से धीमी गति से चलती औसत को तोड़ता है, तो यह एक आशावादी संकेत है।

रणनीति सिद्धांत

इस रणनीति में दो अलग-अलग पैरामीटर सेट के साथ चलती औसत की तुलना की गई है, पहला चलती औसत पैरामीटर len1 और type1 द्वारा सेट किया गया है, दूसरा चलती औसत पैरामीटर len2 और type2 द्वारा सेट किया गया है। len1 और len2 क्रमशः दो चलती औसत की अवधि की लंबाई का प्रतिनिधित्व करते हैं, और type1 और type2 चलती औसत के एल्गोरिथ्म प्रकार का प्रतिनिधित्व करते हैं।

जब एक तेज चलती औसत नीचे से धीमी चलती औसत को तोड़कर गोल्ड फोर्क बनाता है, तो इसे एक bullish संकेत माना जाता है; जब एक तेज चलती औसत ऊपर से नीचे से धीमी चलती औसत को तोड़कर एक मृत फोर्क बनाता है, तो इसे एक bearish संकेत माना जाता है।

क्रॉस सिग्नल की दिशा के आधार पर, अधिक या कम कार्रवाई करें। जब पूल सिग्नल ट्रिगर किया जाता है, तो यदि needlong पैरामीटर सही है, तो डिफ़ॉल्ट_qty_value की संख्या या पोजीशन प्रतिशत_of_equity के प्रतिशत के अनुसार अधिक करें; जब गिरावट सिग्नल ट्रिगर किया जाता है, तो यदि needshort पैरामीटर सही है, तो डिफ़ॉल्ट_qty_value की संख्या या पोजीशन प्रतिशत_of_equity के अनुसार शून्य करें।

रणनीतिक लाभ

  1. 7 अलग-अलग प्रकार के चलती औसत के संयोजन का समर्थन करता है, जो बाजार की स्थिति के लिए लचीला है
  2. लंबी अवधि के रुझानों और मध्यम अवधि के रुझानों के निर्णय के लिए दो चलती औसत के लिए अनुकूलित पैरामीटर
  3. रणनीतिक संकेत निर्णय नियम सरल, स्पष्ट और आसानी से समझने योग्य हैं
  4. ट्रेडों को ट्रेंड ट्रैक करने के लिए ओवर-और-ड्रॉप ऑपरेशन का समर्थन करता है

जोखिम और समाधान

  1. मूविंग एवरेज में विलंबता है, कीमतों के टर्नओवर से चूक सकता है समाधानः उचित रूप से कम चलती औसत चक्र, या अन्य संकेतकों के साथ संयोजन में उपयोग किया जाता है

  2. उच्च अस्थिरता वाले और अक्सर उलटने वाले बाजारों के लिए उपयुक्त नहीं समाधानः फ़िल्टर को बढ़ाएं और अस्थिरता में व्यापार करने से बचें

  3. गलत संकेतों का खतरा समाधानः सिग्नल की विश्वसनीयता बढ़ाने के लिए अन्य फ़िल्टरिंग मापदंडों के साथ संयोजन

अनुकूलन दिशा

  1. एक लंबी और छोटी अवधि के पैरामीटर के लिए रणनीति पर रिटर्न के प्रभाव का परीक्षण करने के लिए एक चलती औसत के चक्र संयोजन का अनुकूलन करें
  2. विभिन्न प्रकार के चलती औसत के प्रदर्शन का परीक्षण करने के लिए सबसे अच्छा चलती औसत एल्गोरिदम का पता लगाएं
  3. VARIABLE या बुलिंग चैनल जैसे संकेतक जोड़ें जो सिग्नल की गुणवत्ता में सुधार करते हैं
  4. पोजीशन मैनेजमेंट रणनीति को अनुकूलित करें, स्थिर पोजीशन प्रतिशत_ऑफ_इक्विटी में सुधार करें

संक्षेप

इस रणनीति में दो चलती औसत के क्रॉसिंग की तुलना करके कीमतों के रुझान का आकलन किया गया है, और इसके अनुसार पूर्वावलोकन और पूर्वावलोकन ऑपरेशन किया गया है, ताकि रुझान को पकड़ने और ट्रैक करने के लिए लाभ प्राप्त किया जा सके। रणनीति का लाभ यह है कि सिग्नल नियम सरल और स्पष्ट हैं, पैरामीटर को समायोजित किया जा सकता है, और यह कई प्रकार के बाजार की परिस्थितियों के लिए अनुकूलित समायोजन करने में सक्षम है। चलती औसत के पीछे और उतार-चढ़ाव की स्थिति के जोखिम को रोकने के लिए ध्यान देने की आवश्यकता है, सिग्नल की गुणवत्ता को बढ़ाने के लिए अन्य संकेतकों को जोड़कर फ़िल्टर किया जा सकता है।

रणनीति स्रोत कोड
/*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)