यह रणनीति ईएमए (एक्सपोनेंशियल मूविंग एवरेज) और एमएएमए (एमईएसए एडाप्टिव मूविंग एवरेज) संकेतकों पर आधारित है ताकि प्रवृत्ति की दिशा निर्धारित की जा सके और उनके क्रॉसओवर के अनुसार ट्रेडिंग सिग्नल उत्पन्न किए जा सकें। ईएमए का उपयोग अक्सर बाजार की प्रवृत्ति की दिशा का न्याय करने के लिए किया जाता है, जबकि एमएएमए अधिक सटीक रूप से बाजार के मोड़ बिंदुओं को पकड़ सकता है। दोनों का उपयोग रणनीति के प्रदर्शन में सुधार कर सकता है।
तेजी से ईएमए और धीमी ईएमए की गणना करें, जो क्रमशः बाजार के अल्पकालिक और दीर्घकालिक रुझानों को दर्शाते हैं।
MAMA और FAMA रेखाओं की गणना करें, जो अनुकूलनशील चलती औसत हैं।
जब तेज ईएमए धीमे ईएमए से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है।
जब तेज ईएमए धीमे ईएमए से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
जब MAMA FAMA के ऊपर से गुजरता है, तो एक खरीद संकेत उत्पन्न होता है।
जब MAMA FAMA से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
एमएएमए और एफएएमए के क्रॉसओवर का उपयोग ईएमए संकेतों की पुष्टि करने या प्रवृत्ति मोड़ का प्रारंभिक पता लगाने के लिए किया जा सकता है।
विशेष रूप से, रणनीति पहले लघु और दीर्घकालिक रुझानों को प्रतिबिंबित करते हुए तेजी से ईएमए (एफएल) और धीमी ईएमए (एसएल) की गणना करती है।
फिर यह जॉन एहलर्स के सूत्र के आधार पर एमएएमए और एफएएमए की गणना करता हैः
मूल्य के हिल्बर्ट परिवर्तन की गणना करें और संकेत की चरण जानकारी निकालें।
चरण सूचना के आधार पर क्षणिक आवृत्ति p की गणना करें।
पी मान के आधार पर भारन कारक α की गणना की जाए।
α के आधार पर MAMA और FAMA की गणना करें।
अंत में, ईएमए और एमएएमए/एफएएमए क्रॉसओवर के आधार पर ट्रेडिंग सिग्नल उत्पन्न किए जाते हैंः
यह रणनीति व्यापार संकेतों की सटीकता में सुधार के लिए ईएमए और एमएएमए संकेतकों के लाभों को जोड़ती है।
ईएमए के फायदे:
एमएएमए के फायदे:
इनका संयोजन करने के फायदे:
इस रणनीति के मुख्य जोखिम:
समाधान:
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
इस रणनीति में ईएमए और एमएएमए संकेतकों की ताकत को एकीकृत किया गया है ताकि प्रवृत्ति का पालन किया जा सके और समय पर मोड़ को पकड़ लिया जा सके। पैरामीटर अनुकूलन और जोखिम नियंत्रण के साथ, यह बेहतर जीत दर और लाभप्रदता प्राप्त कर सकता है। लेकिन उपयोगकर्ताओं को अभी भी व्यक्तिगत जोखिम वरीयता के आधार पर सावधानी बरतनी चाहिए।
/*backtest start: 2023-09-30 00:00:00 end: 2023-10-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMAMA strategy", overlay=true) //This entire strategy is courtesy of LazyBear for programming the original EMAMA system, I simply added a strategy element to everything to round things out. src=input(hl2, title="Source") fl=input(.5, title="Fast Limit") sl=input(.05, title="Slow Limit") 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])) 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) 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) longCondition = crossover(mama, fama) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(mama, fama) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)