یہ حکمت عملی ایہلرز MESA ایڈجسٹمنٹ موونگ ایوینز پر مبنی ہے ، جس میں ایک رجحان ٹریڈنگ حکمت عملی تیار کی گئی ہے جو دو اوسط کی کراسنگ کی پیروی کرتی ہے۔ جب تیز لائن پر سست لائن کو عبور کرتے ہو تو زیادہ کریں ، اور جب تیز لائن کے نیچے سست لائن کو عبور کرتے ہو تو خالی کریں ، جو ایک عام ڈبل منتقل اوسط کراسنگ حکمت عملی ہے۔
اس حکمت عملی کا مرکز دو انکولی حرکت پذیر اوسطوں کا حساب لگانا ہے: MAMA لائن اور FAMA لائن۔ ان میں سے ، MAMA لائن کا حساب لگانے کا فارمولا مندرجہ ذیل ہے:
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 لائن کے حساب کا فارمولا مندرجہ ذیل ہے:
fama = .5*alpha*mama + (1 - .5*alpha)*nz(fama[1])
FAMA لائن MAMA لائن کی کم گزرنے والی لہر ہموار لائن ہے۔
اس حکمت عملی کا مقصد MAMA لائن اور FAMA لائن کے مابین بڑے پیمانے پر تعلقات کا موازنہ کرنا ہے تاکہ یہ معلوم کیا جاسکے کہ آیا یہ بڑھتی ہوئی رجحان میں ہے یا گرتی ہوئی رجحان میں ہے۔
اس حکمت عملی کے کچھ فوائد یہ ہیں:
اس کا استعمال کرتے ہوئے ایک خود کار طریقے سے منتقل اوسط، پیرامیٹرز کو مارکیٹ میں تبدیلیوں کے مطابق خود کار طریقے سے ایڈجسٹ کیا جائے گا، کوئی انسان مقررہ پیرامیٹرز کو قائم کرنے کی ضرورت نہیں.
کم گزرنے والے فلٹر FAMA لائن کو شامل کریں ، جعلی توڑنے کو فلٹر کریں۔
ڈبل چلتی اوسط ڈیزائن کا استعمال کرتے ہوئے ، مارکیٹ میں لمبی لائن رجحانات کو ٹریک کیا جاسکتا ہے۔
حکمت عملی کی منطق سادہ اور واضح ہے، اسے سمجھنا اور تبدیل کرنا آسان ہے۔
انڈیکیٹرز کو بصری طور پر دکھایا گیا ہے تاکہ ٹریڈنگ سگنل واضح طور پر دیکھا جاسکے۔
اس حکمت عملی کے کچھ خطرات بھی ہیں:
دو لائن کراسنگ حکمت عملی میں ایک سے زیادہ ٹریڈنگ سگنل پیدا کرنے کا خطرہ ہوتا ہے ، لہذا مناسب وقفے اور واپسی پر قابو پانے کی سفارش کی جاتی ہے۔
MAMA اور FAMA لائنوں کا حساب کتاب پیچیدہ ہے اور پیرامیٹرز کی غلط ترتیب سے منحنی خطوط میں خرابی پیدا ہوسکتی ہے۔
خود کو اپنانے والے پیرامیٹرز کو زیادہ سے زیادہ اصلاح کی ضرورت ہوسکتی ہے ، جس میں دیگر تکنیکی اشارے کے ساتھ مل کر تصدیق کی ضرورت ہوتی ہے۔
دو لائن کراسنگ میں وقت کی تاخیر ہوتی ہے ، اور اس سے رجحان کی تبدیلی کا نقطہ نظر ضائع ہوسکتا ہے۔
جعلی توڑ پھوڑ سے ہونے والے نقصان کے خطرے پر توجہ دیں۔
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
پیرامیٹرز کی ترتیبات کو بہتر بنائیں اور تیز رفتار اور سست رفتار پیرامیٹرز کا بہترین مجموعہ تلاش کریں۔
اسٹاپ نقصان کی حکمت عملی کو بڑھانا اور ایک اسٹاپ نقصان کو سختی سے کنٹرول کرنا۔
دوسرے اشارے کے فلٹر سگنل کے ساتھ مل کر ، جیسے MACD ، RSI وغیرہ ، جھوٹے توڑ سے بچنے کے لئے
رجحانات کو سمجھنے کے لئے اشارے میں اضافہ کریں اور منفی تجارت سے بچیں.
داخلہ کی رفتار کو بہتر بنائیں ، بائن لائن کراسنگ کے فاصلے کی ضروریات کو ایڈجسٹ کریں ، اور زیادہ بار بار تجارت کو کم کریں۔
سٹاپ کی حکمت عملی کو بہتر بنائیں، رجحان کی طاقت کے مطابق مختلف سٹاپ کا استعمال کریں.
مختلف اقسام کے پیرامیٹرز کی ترتیب میں اختلافات کی جانچ کریں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔
یہ حکمت عملی مجموعی طور پر ایک عام رجحان کی پیروی کرنے والی حکمت عملی ہے ، جس میں ایلرز 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)