انکولی صفر تاخیر افقی حرکت پذیر اوسط مقداری تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-19 15:38:02
ٹیگز:

img

جائزہ

موافقت پذیر زیرو لیگ ایکسپونینشیل موونگ ایوریج کوانٹیٹیٹیو ٹریڈنگ حکمت عملی ایک مقداری تجارتی حکمت عملی ہے جو جان ایلرز کے زیرو لیگ ایکسپونینشیل موونگ ایوریج (زی ایل ای ایم اے) کے خیال پر مبنی ہے۔ یہ حکمت عملی ایکسپونینشیل موونگ ایوریج کو ایک بیس لائن اشارے کے طور پر استعمال کرتی ہے اور ایکسپونینشیل موونگ ایوریج کے دورانیے کے پیرامیٹر کو متحرک طور پر بہتر بنانے کے لئے فوری تعدد پیمائش (آئی ایف ایم) کا ایک موافقت پذیر طریقہ شامل کرتی ہے۔

حکمت عملی منطق

اس حکمت عملی کا بنیادی خیال جان ایلرز کے نظریہ صفر تاخیر فلٹرز سے ماخوذ ہے۔ اگرچہ ایکسپونینشل موونگ ایمیری ایک وسیع پیمانے پر مشہور تکنیکی اشارے ہے ، لیکن اس میں فطری طور پر تاخیر کا مسئلہ ہے۔ ایلرز نے تاخیر کے رجحان کو مؤثر طریقے سے ختم کرنے کے لئے ایکسپونینشل موونگ ایمیری کے حساب کتاب کے فارمولے میں غلطی کی اصلاح کا عنصر متعارف کرایا ، جس سے زیرو لیگ ای ایم اے کو قیمت کی تبدیلیوں کو ٹریک کرنے میں زیادہ حساس بنا دیا گیا۔

ایڈیپٹیو زیرو لیگ ای ایم اے کی حکمت عملی میں ، ہم زلیما کے دورانیے کے پیرامیٹر کو موافقت پذیر طریقے سے بہتر بنانے کے لئے فوری تعدد کی پیمائش کے طریقوں کا استعمال کرتے ہیں۔ آئی ایف ایم میں دو تکنیکیں شامل ہیں - کوسین طریقہ اور انفیز اسکواڈریچر طریقہ ، جو قیمتوں میں اتار چڑھاؤ کے غالب چکر کی پیمائش کرسکتے ہیں۔ ان دونوں پیمائشوں کے ذریعہ حساب لگائے جانے والے زیادہ سے زیادہ ادوار کی حقیقی وقت سے باخبر رہنے سے ، ہم متحرک طور پر زلیما کے دورانیے کے پیرامیٹر کو بہتر طور پر موجودہ مارکیٹ کی حالت کے مطابق بناتے ہیں۔

جب تیز EMA (ZLEMA) نیچے سے سست EMA کو عبور کرتا ہے تو ، ایک لمبا سگنل تیار کیا جاتا ہے۔ جب تیز EMA سست EMA سے نیچے عبور کرتا ہے تو ، ایک مختصر سگنل متحرک ہوجاتا ہے۔ یہ چلتی اوسط کراس اوور سسٹم کی طرح ہی تجارتی حکمت عملی تشکیل دیتا ہے۔

فوائد

ایڈیپٹیو زیرو لیگ ای ایم اے حکمت عملی صفر لیگ فلٹر اور موافقت پذیر مدت کی اصلاح کو یکجا کرتی ہے، جس کے مندرجہ ذیل فوائد ہیں:

  1. تاخیر کو ختم کرتا ہے اور زیادہ حساس سگنل بناتا ہے
  2. مارکیٹوں کی ایک وسیع رینج کے لئے موافقت پذیر مدت پیرامیٹر
  3. ٹیسٹنگ اور اصلاح کے لئے آسان کم پیرامیٹرز
  4. بہتر خطرے کے کنٹرول کے لئے ترتیب دینے کے قابل فکسڈ SL / TP

خطرات

اس حکمت عملی میں کچھ خطرات بھی ہیں:

  1. کچھ مارکیٹ کے ماحول میں موافقت پذیر بہتر مدت ناکام ہوسکتی ہے
  2. غیر مناسب فکسڈ SL/TP ترتیبات سے زیادہ نقصان یا کھوئے ہوئے منافع کا سبب بن سکتا ہے
  3. ناکافی پیرامیٹر کی اصلاح کے ٹیسٹ خراب زندہ کارکردگی کی قیادت کر سکتے ہیں

ان خطرات پر قابو پانے کے لیے ہمیں مختلف مارکیٹ کے حالات میں پیرامیٹرز کا مکمل ٹیسٹ کرنے کی ضرورت ہے، SL/TP کو مناسب طریقے سے ایڈجسٹ کرنے کی ضرورت ہے اور بیک ٹیسٹ میں براہ راست ٹریڈنگ ماحول کی نقالی کرنے کی ضرورت ہے۔

اصلاح کی ہدایات

اس حکمت عملی کو مزید بہتر بنانے کے لئے ابھی بھی کافی گنجائش موجود ہے:

  1. متبادل موافقت پذیر مدت کی پیمائش کے طریقوں، مثال کے طور پر اتار چڑھاؤ کے لئے ایڈجسٹ MA
  2. اضافی فلٹر حالات جیسے حجم، ایم اے جوڑے وغیرہ
  3. بہتر SL / TP تکنیک، مثال کے طور پر ٹریلر اسٹاپ یا Chandelier Exit
  4. خطرے کے انتظام کے ساتھ متحرک پوزیشن سائزنگ
  5. سگنل کی کوالٹی کو بہتر بنانے کے لئے متعدد ٹائم فریم کی تصدیق

ان اصلاح کے ذرائع کے ذریعے، حکمت عملی کی جیت کی شرح، منافع بخش، خطرے سے متعلق ایڈجسٹ میٹرکس کو مزید بہتر بنانے کی صلاحیت ہے.

نتیجہ

ایڈیپٹیو زیرو لیگ ای ایم اے حکمت عملی صفر لیگ فلٹر اور متحرک مدت کی اصلاح کو کامیابی کے ساتھ جوڑتی ہے۔ کم پیرامیٹرز اور کام کرنے میں آسان ، یہ خاص طور پر ٹرینڈنگ مارکیٹوں کے لئے موزوں ہے۔ مناسب اسٹاپ نقصان ، پوزیشن سائزنگ اور دیگر رسک مینجمنٹ تکنیکوں کے ساتھ مل کر ، اس کے استحکام اور منافع کو مزید بڑھا سکتا ہے۔ اس حکمت عملی کو بہتر کارکردگی کے ل.


/*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)


مزید