এই কৌশলটি ইএমএ (ইনডেক্সাল মুভিং এভারেজ) এবং এমএএমএ (মেসা অ্যাডাপ্টিভ মুভিং এভারেজ) এর উপর ভিত্তি করে তৈরি করা হয়, যা বাজারের প্রবণতা এবং ট্রেডিং সিগন্যালের উপর ভিত্তি করে। ইএমএ সাধারণত বাজার প্রবণতার দিকনির্দেশের জন্য ব্যবহৃত হয়, এবং এমএএমএ বাজার টার্নপয়েন্টগুলিকে আরও সঠিকভাবে ক্যাপচার করতে পারে, যা কৌশলটির কার্যকারিতা উন্নত করতে পারে।
বিশেষ করে, কৌশলটি প্রথমে একটি দ্রুত EMA ((fl) এবং একটি ধীর EMA ((sl) গণনা করে, যা স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী প্রবণতা প্রতিফলিত করে।
তারপর জন এহলার্সের সূত্র অনুসারে MAMA এবং FAMA গণনা করা হয়ঃ
অবশেষে, কৌশলটি EMA এবং MAMA/FAMA এর ক্রসিংয়ের উপর ভিত্তি করে ট্রেডিং সিগন্যাল তৈরি করেঃ
এই কৌশল EMA এবং MAMA সূচকগুলির সুবিধাগুলিকে একত্রিত করে ট্রেডিং সিগন্যালের নির্ভুলতা বাড়িয়ে তুলতে পারে।
ইএমএর সুবিধাগুলোঃ
MAMA-এর সুবিধাঃ
এই দুইটি ব্যবহারের সুবিধাগুলোঃ
এই কৌশলটি নিম্নলিখিত ঝুঁকির সাথে জড়িতঃ
প্রতিক্রিয়াঃ
এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে উন্নত করা যেতে পারেঃ
এই কৌশলটি ইএমএ এবং মামা উভয় সূচকের সুবিধাগুলিকে একত্রিত করে এবং প্রবণতা পাল্টানোর জন্য একটি নির্ভরযোগ্য ট্রেন্ড ট্র্যাকিং কৌশল হিসাবে কাজ করে। প্যারামিটার অপ্টিমাইজেশন এবং ঝুঁকি নিয়ন্ত্রণের মাধ্যমে কৌশলটির বিজয়ীতা এবং লাভজনকতা বাড়ানো যেতে পারে। তবে ব্যবহারকারীদের এখনও তাদের ঝুঁকি পছন্দ অনুসারে সতর্কতার সাথে কাজ করতে হবে।
/*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)