Ehlers MESA अनुकूलनशील चलती औसत ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांक: 2023-09-28 15:37:13
टैगः

अवलोकन

यह रणनीति Ehlers MESA एडाप्टिव मूविंग एवरेज पर आधारित है और एक ट्रेंड ट्रेडिंग रणनीति डिज़ाइन की गई है जो दो मूविंग एवरेज के बीच क्रॉसओवर को ट्रैक करती है। यह लंबी जाती है जब फास्ट लाइन स्लो लाइन के ऊपर पार करती है, और छोटी जाती है जब फास्ट लाइन स्लो लाइन के नीचे पार करती है। यह एक विशिष्ट दोहरी मूविंग एवरेज क्रॉसओवर रणनीति है।

रणनीति तर्क

इस रणनीति का मूल दो अनुकूलनशील चलती औसत की गणना करना हैः एमएएमए रेखा और एफएएमए रेखा। एमएएमए रेखा की गणना इस प्रकार की जाती हैः

alpha = fl / dphase
alpha = iff(alpha < sl, sl, iff(alpha > fl, fl, alpha))  
mama = alpha*src + (1 - alpha)*nz(mama[1])

जहां fl तेज सीमा है, sl धीमी सीमा है, और dphase चरण अंतर है। अनुकूलन चिकनाई प्राप्त करने के लिए चरण अंतर के आधार पर अल्फा अनुकूली रूप से समायोजित होता है।

एफएएमए रेखा की गणना इस प्रकार की जाती हैः

fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])

एफएएमए लाइन एमएएमए लाइन का एक कम पास फ़िल्टर्ड चिकनाई है।

रणनीति यह निर्धारित करने के लिए MAMA और FAMA रेखाओं के बीच परिमाण संबंध की तुलना करती है कि बाजार वर्तमान में एक अपट्रेंड या डाउनट्रेंड में है, और इसके आधार पर ट्रेडिंग सिग्नल उत्पन्न करता है।

लाभ विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैंः

  1. अनुकूली चलती औसत का प्रयोग करता है जहां पैरामीटर स्वचालित रूप से बाजार परिवर्तनों के आधार पर समायोजित होते हैं, बिना निश्चित मैन्युअल रूप से सेट पैरामीटर की आवश्यकता होती है।

  2. कम पास फ़िल्टर एफएएमए लाइन झूठे ब्रेकआउट को फ़िल्टर कर सकती है।

  3. दोहरी चलती औसत डिजाइन का उपयोग मध्यम से दीर्घकालिक रुझानों को ट्रैक कर सकता है।

  4. सरल और स्पष्ट रणनीति तर्क जिसे समझना और संशोधित करना आसान है।

  5. दृश्य संकेतक जो स्पष्ट रूप से व्यापार संकेत दिखाते हैं।

जोखिम विश्लेषण

इस रणनीति में कुछ जोखिम भी हैं:

  1. डबल लाइन क्रॉसओवर रणनीतियों से अत्यधिक ट्रेडिंग सिग्नल उत्पन्न हो सकते हैं, उचित ड्रॉडाउन और अंतराल नियंत्रण की सिफारिश की जाती है।

  2. जटिल एमएएमए और एफएएमए गणनाएं, अनुचित पैरामीटर सेटिंग्स वक्र विकृतियों का कारण बन सकती हैं।

  3. अनुकूली मापदंडों के कारण ओवरफिटिंग हो सकती है, अन्य तकनीकी संकेतकों के साथ सत्यापन की आवश्यकता है।

  4. डबल लाइन क्रॉसओवर में समय की देरी होती है, ट्रेंड टर्निंग पॉइंट्स को मिस कर सकते हैं।

  5. झूठे ब्रेकआउट से स्टॉप लॉस जोखिमों से सावधान रहने की जरूरत है।

अनुकूलन दिशाएँ

इस रणनीति को निम्नलिखित क्षेत्रों में अनुकूलित किया जा सकता हैः

  1. सबसे अच्छा तेज सीमा और धीमी सीमा संयोजन खोजने के लिए पैरामीटर सेटिंग्स का अनुकूलन करें.

  2. स्टॉप लॉस रणनीतियों को प्रति ट्रेड स्टॉप लॉस पर सख्ती से नियंत्रण करने के लिए जोड़ें।

  3. झूठे ब्रेकआउट से बचने के लिए सिग्नल को फ़िल्टर करने के लिए अन्य संकेतक जोड़ें, जैसे कि एमएसीडी, आरएसआई आदि।

  4. विपरीत रुझान के व्यापार से बचने के लिए रुझान आकलन करने वाले संकेतक जोड़ें।

  5. अत्यधिक आवर्ती व्यापार को कम करने के लिए क्रॉसओवर आवश्यकताओं को समायोजित करके प्रवेश गति को अनुकूलित करना।

  6. प्रवृत्ति की ताकत के अनुसार लाभ लेने की रणनीतियों का अनुकूलन करें।

  7. इष्टतम पैरामीटर संयोजन खोजने के लिए विभिन्न उत्पादों के बीच पैरामीटर अंतर का परीक्षण करें।

सारांश

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


/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// @author LazyBear 
// 
// List of my public indicators: http://bit.ly/1LQaPK8 
// List of my app-store indicators: http://blog.tradingview.com/?p=970 
//
strategy("Ehlers MESA Adaptive Moving Average [LazyBear with ekoronin fix]", shorttitle="EMAMA_LB (ekoronin fix)", overlay=false, calc_on_every_tick=true, precision=0)
src=input(close, title="Source")
fl=input(.4, title="Fast Limit")
sl=input(.04, title="Slow Limit")
pi = 3.1415926
sp = (4*src + 3*src[1] + 2*src[2] + src[3]) / 10.0
dt = (.0962*sp + .5769*nz(sp[2]) - .5769*nz(sp[4])- .0962*nz(sp[6]))*(.075*nz(p[1]) + .54)
q1 = (.0962*dt + .5769*nz(dt[2]) - .5769*nz(dt[4])- .0962*nz(dt[6]))*(.075*nz(p[1]) + .54)
i1 = nz(dt[3])
jI = (.0962*i1 + .5769*nz(i1[2]) - .5769*nz(i1[4])- .0962*nz(i1[6]))*(.075*nz(p[1]) + .54)
jq = (.0962*q1 + .5769*nz(q1[2]) - .5769*nz(q1[4])- .0962*nz(q1[6]))*(.075*nz(p[1]) + .54)
i2_ = i1 - jq
q2_ = q1 + jI
i2 = .2*i2_ + .8*nz(i2[1])
q2 = .2*q2_ + .8*nz(q2[1])
re_ = i2*nz(i2[1]) + q2*nz(q2[1])
im_ = i2*nz(q2[1]) - q2*nz(i2[1])
re = .2*re_ + .8*nz(re[1])
im = .2*im_ + .8*nz(im[1])
//p1 = iff(im!=0 and re!=0, 360/atan(im/re), nz(p[1]))
p1 = iff(im!=0 and re!=0, 2*pi/atan(im/re), nz(p[1]))
p2 = iff(p1 > 1.5*nz(p1[1]), 1.5*nz(p1[1]), iff(p1 < 0.67*nz(p1[1]), 0.67*nz(p1[1]), p1))
p3 = iff(p2<6, 6, iff (p2 > 50, 50, p2))
p = .2*p3 + .8*nz(p3[1])
spp = .33*p + .67*nz(spp[1])
//phase = atan(q1 / i1)
phase = 180/pi * atan(q1 / i1) 
dphase_ = nz(phase[1]) - phase
dphase = iff(dphase_< 1, 1, dphase_)
alpha_ = fl / dphase
alpha = iff(alpha_ < sl, sl, iff(alpha_ > fl, fl, alpha_))
mama = alpha*src + (1 - alpha)*nz(mama[1])
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
//pa=input(false, title="Mark crossover points")
//plotarrow(pa?(cross(mama, fama)?mama<fama?-1:1:na):na, title="Crossover Markers")
//fr=input(false, title="Fill MAMA/FAMA Region")
//duml=plot(fr?(mama>fama?mama:fama):na, style=circles, color=gray, linewidth=0, title="DummyL")
//mamal=plot(mama, title="MAMA", color=red, linewidth=2)
//famal=plot(fama, title="FAMA", color=green, linewidth=2)
//fill(duml, mamal, red, transp=70, title="NegativeFill")
//fill(duml, famal, green, transp=70, title="PositiveFill")
//ebc=input(false, title="Enable Bar colors")
//bc=mama>fama?lime:red
//barcolor(ebc?bc:na)

longSpike=mama>fama? 1:0
shortSpike=mama<fama? 1:0

plot(longSpike, title = "Mama Long", style=line, linewidth=1, color=yellow)
plot(shortSpike, title = "Mama Short", style=line, linewidth=1, color=red)

//possig = iff(reverse and pos == 1, -1,
//          iff(reverse and pos == -1, 1, pos))	   
if (longSpike) 
    strategy.entry("Long", strategy.long)
if (shortSpike)
    strategy.entry("Short", strategy.short)	


अधिक