
موافقت پذیر صفر تاخیر ایکسپونینشل مووینگ ایوریج کوانٹیٹیٹو ٹریڈنگ اسٹریٹجی ایک کوانٹیٹیو ٹریڈنگ حکمت عملی ہے جو ایہلرز کے صفر تاخیر ایکسپونینشل مووینگ ایوریج کے نظریہ پر مبنی ہے۔ اس حکمت عملی میں انڈیکس چلنے والی اوسط کو بیس لائن اشارے کے طور پر استعمال کیا گیا ہے ، اور فوری تعدد کی پیمائش کے موافقت پذیر طریقہ کار کو شامل کیا گیا ہے تاکہ انڈیکس چلنے والی اوسط کی مدت کو متحرک طور پر بہتر بنایا جاسکے۔
اس حکمت عملی کا بنیادی نظریہ جان ایہلرز کے صفر تاخیر فلٹر نظریہ سے ماخوذ ہے۔ اگرچہ اشاریہ منتقل اوسط ایک معروف تکنیکی اشارے ہے ، لیکن اس میں فطری طور پر تاخیر کا مسئلہ ہے۔ ایہلرز نے اشاریہ منتقل اوسط کے حساب کتاب میں ایک غلطی کی اصلاح کا عنصر شامل کرکے تاخیر کو مؤثر طریقے سے ختم کیا ، جس سے صفر تاخیر اشاریہ منتقل اوسط قیمت کی تبدیلیوں کو زیادہ حساس طریقے سے ٹریک کرسکتی ہے۔
ہم نے اپنی مرضی کے مطابق صفر تاخیر EMA حکمت عملی میں ، ہم نے اپنے آپ کو بہتر بنانے کے لئے فوری طور پر تعدد کی پیمائش کے طریقوں کا استعمال کیا صفر تاخیر اشاریہ منتقل اوسط کے دورانیہ پیرامیٹرز. فوری طور پر تعدد کی پیمائش دو قسموں میں تقسیم کیا گیا ہے: پسماندہ طریقہ اور مثبت تبادلہ طریقہ ، جس سے قیمتوں کی ترتیب میں تبدیلی کے غالب دورانیے کی پیمائش کی جاسکتی ہے۔ ہم ان دونوں پیمائش کے طریقوں کے حساب سے بہترین دورانیے کو حقیقی وقت میں ٹریک کرتے ہیں ، اور متحرک طور پر صفر تاخیر اشاریہ منتقل اوسط کے دورانیہ پیرامیٹرز کو مرتب کرتے ہیں ، تاکہ یہ موجودہ مارکیٹ کے ماحول کے مطابق ہو۔
جب تیز لائن ((نکلا ہوا اشاریہ منتقل اوسط) پر سست لائن ((عام اشاریہ منتقل اوسط) پر زیادہ سے زیادہ ، نیچے کی طرف سے خالی ، اس طرح ایک ٹریڈنگ حکمت عملی کا اشارہ بناتا ہے جو چلتی اوسط کے کراس کی طرح ہے۔
صفر تاخیر سے متعلق خود کار طریقے سے ای ایم اے کی حکمت عملی میں صفر تاخیر فلٹر اور خود کار طریقے سے سائیکل کی اصلاح کا ایک طریقہ شامل ہے جس میں مندرجہ ذیل فوائد ہیں:
صفر تاخیر سے متعلق EMA کی حکمت عملی کے ساتھ بھی کچھ خطرات موجود ہیں ، بنیادی طور پر اس میں ظاہر ہوتا ہے:
ان خطرات کو کنٹرول کرنے کے لئے، ہمیں مختلف مارکیٹ کے ماحول میں پیرامیٹرز کی ترتیبات کو اچھی طرح سے جانچنے کی ضرورت ہے، مناسب طریقے سے سٹاپ نقصان کی روک تھام کو ایڈجسٹ کریں، اور اس بات کی تصدیق کریں کہ ریئل اسٹیک ماحول کو ممکنہ طور پر ریئل اسٹیک ماحول میں ماڈیول کیا جائے.
صفر تاخیر سے متعلق ای ایم اے کی حکمت عملی کو اپنانے کے لئے وسیع پیمانے پر اصلاحات کی گنجائش موجود ہے ، جس میں اہم نکات شامل ہیں:
ان اصلاحات کے ذریعہ ، حکمت عملی کی جیت کی شرح ، منافع کی شرح ، خطرے سے متعلق ایڈجسٹمنٹ کے اشارے وغیرہ کو مزید بہتر بنانے کی امید ہے۔
صفر تاخیر کے ساتھ خود کو اپنانے والی ای ایم اے حکمت عملی کامیابی کے ساتھ صفر تاخیر فلٹر اور متحرک سائیکل کی اصلاح کی سوچ کو جوڑتی ہے۔ یہ کم پیرامیٹرز ، آسان آپریشن اور اصلاح کے ساتھ ایک مقداری تجارت کی حکمت عملی ہے۔ اس میں ردعمل کی حساس ، خود سے مطابقت پذیر خصوصیات ہیں ، جو رجحان سازی والی منڈیوں میں بہتر کارکردگی کا مظاہرہ کرتی ہیں۔ مناسب اسٹاپ نقصان اور پوزیشن مینجمنٹ ٹولز کے ساتھ مل کر ، اس کی استحکام اور منافع بخش صلاحیت کو بہتر بنایا جاسکتا ہے۔ اس حکمت عملی میں ابھی بھی بہت زیادہ اصلاح کی گنجائش ہے ، اور اس پر مزید تحقیق کے قابل ہے۔
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Adaptive Zero Lag EMA v2", shorttitle="AZLEMA", overlay = true)
src = input(title="Source", defval=close)
Period = input(title="Period", defval = 20)
adaptive = input(title="Adaptive Method", options=["Off", "Cos IFM", "I-Q IFM", "Average"], defval="Off")
GainLimit = input(title="Gain Limit", defval = 10)
Threshold = input(title="Threshold", type = float, defval=0.05, step=0.01)
fixedSL = input(title="SL Points", defval=70)
fixedTP = input(title="TP Points", defval=5)
risk = input(title='Risk', defval=0.01, step=0.01)
//##############################################################################
//I-Q IFM
//#############################################################################
range = input(title="Max Period", defval=60, minval=8, maxval=100)
PI = 3.14159265359
imult = 0.635
qmult = 0.338
inphase = 0.0
quadrature = 0.0
re = 0.0
im = 0.0
deltaIQ = 0.0
instIQ = 0.0
lenIQ = 0.0
V = 0.0
P = src - src[7]
inphase := 1.25*(P[4] - imult*P[2]) + imult*nz(inphase[3])
quadrature := P[2] - qmult*P + qmult*nz(quadrature[2])
re := 0.2*(inphase*inphase[1] + quadrature*quadrature[1]) + 0.8*nz(re[1])
im := 0.2*(inphase*quadrature[1] - inphase[1]*quadrature) + 0.8*nz(im[1])
if (re!= 0.0)
deltaIQ := atan(im/re)
for i=0 to range
V := V + deltaIQ[i]
if (V > 2*PI and instIQ == 0.0)
instIQ := i
if (instIQ == 0.0)
instIQ := nz(instIQ[1])
lenIQ := 0.25*instIQ + 0.75*nz(lenIQ[1])
//##############################################################################
//COSINE IFM
//#############################################################################
s2 = 0.0
s3 = 0.0
deltaC = 0.0
instC = 0.0
lenC = 0.0
v1 = 0.0
v2 = 0.0
v4 = 0.0
v1 := src - src[7]
s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1])
s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1])
if (s2 != 0)
v2 := sqrt(s3/s2)
if (s3 != 0)
deltaC := 2*atan(v2)
for i = 0 to range
v4 := v4 + deltaC[i]
if (v4 > 2*PI and instC == 0.0)
instC := i - 1
if (instC == 0.0)
instC := instC[1]
lenC := 0.25*instC + 0.75*nz(lenC[1])
if (adaptive == "Cos IFM")
Period := round(lenC)
if (adaptive == "I-Q IFM")
Period := round(lenIQ)
if (adaptive == "Average")
Period := round((lenC + lenIQ)/2)
//##############################################################################
//ZERO LAG EXPONENTIAL MOVING AVERAGE
//##############################################################################
LeastError = 1000000.0
EC = 0.0
Gain = 0.0
EMA = 0.0
Error = 0.0
BestGain = 0.0
alpha =2/(Period + 1)
EMA := alpha*src + (1-alpha)*nz(EMA[1])
for i = -GainLimit to GainLimit
Gain := i/10
EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1])
Error := src - EC
if(abs(Error)<LeastError)
LeastError := abs(Error)
BestGain := Gain
EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1])
plot(EC, title="EC", color=orange, linewidth=2)
plot(EMA, title="EMA", color=red, linewidth=2)
buy = crossover(EC,EMA) and 100*LeastError/src > Threshold
sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold
strategy.initial_capital = 50000
if (time>timestamp(2016, 1, 1 , 0, 0))
//LONG
balance = strategy.initial_capital + strategy.netprofit
lots = ((risk * balance)/fixedSL)*1
strategy.entry("BUY", strategy.long, qty=lots, oca_name="BUY", when=buy)
strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)
//SHORT
strategy.entry("SELL", strategy.short, qty=lots, oca_name="SELL", when=sell)
strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)