ویمز فریکٹلز کو کوانٹیٹیٹیو ٹریڈنگ حکمت عملی کے لئے ZZ اشارے کے ساتھ مل کر

مصنف:چاؤ ژانگ، تاریخ: 2024-01-29 15:24:30
ٹیگز:

img

جائزہ

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

حکمت عملی کا اصول

حکمت عملی سب سے پہلے ولیمز فریکٹلز کا حساب لگاتی ہے تاکہ یہ معلوم کیا جاسکے کہ موجودہ فریکٹل بڑھ رہا ہے یا گر رہا ہے۔ اگر یہ بڑھتا ہوا فریکٹل ہے تو ، یہ خیال کیا جاتا ہے کہ موجودہ رجحان اوپر کی طرف ہے۔ اگر یہ گرتا ہوا فریکٹل ہے تو ، یہ خیال کیا جاتا ہے کہ موجودہ رجحان نیچے کی طرف ہے۔

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

اس طرح کے مجموعے کے ذریعے ، رجحانات میں ہونے والی تبدیلیوں کو بروقت انداز میں پکڑنا اور رجحانات کی پیروی کرنے والی تجارتوں کو نافذ کرنا ممکن ہے۔

فوائد کا تجزیہ

اس حکمت عملی میں دو مختلف تکنیکی تجزیہ کے طریقوں کو یکجا کیا گیا ہے - ولیمز فریکٹلز اور زیڈ زیڈ اشارے - مزید تجارتی مواقع کو ظاہر کرنے کے لئے.

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

عام طور پر، یہ حکمت عملی خطرات اور واپسی کو متوازن کرنے کے لئے رجحان کا فیصلہ اور مخصوص انٹری پوائنٹ کے انتخاب دونوں پر غور کرتی ہے.

خطرے کا تجزیہ

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

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

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

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

اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں مزید بہتر بنایا جاسکتا ہے:

  1. کچھ جھوٹے بریکآؤٹس سے بچنے کے لئے ایم اے سی ڈی یا بولنگر بینڈ جیسے رفتار اشارے فلٹر شامل کریں۔

  2. فریکٹل پیرامیٹر کی ترتیبات کو بہتر بنائیں اور اعلی اور کم کی حساب کتاب کو ایڈجسٹ کریں اور زیادہ درست رجحانات کے فیصلے حاصل کرنے کے لئے ٹائم فریم کو کم کریں.

  3. رجحان کی درستگی کا فیصلہ کرنے اور انسانی حدود سے بچنے کے لئے مشین لرننگ الگورتھم میں اضافہ کریں۔

  4. مارکیٹ کی اتار چڑھاؤ کی بنیاد پر موافقت پذیر سٹاپ نقصان میکانزم شامل کریں.

  5. مجموعی پیرامیٹر کی ترتیبات کو بہتر بنانے کے لئے گہری سیکھنے کے الگورتھم کا استعمال کریں.

خلاصہ

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "robotrading ZZ-8 fractals", shorttitle = "ZZ-8", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong  = input(true, defval = true, title = "Long")
needshort = input(false, defval = true, title = "Short")
filterBW = input(false, title="filter Bill Williams Fractals")
showll = input(true, title = "Show levels")
showff = input(true, title = "Show fractals (repaint!)")
showdd = input(true, title = "Show dots (repaint!)")
showbg = input(false, title = "Show background")
showlb = input(false, title = "Show drawdown")
startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", type = input.time, inline = "time1")
finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", type = input.time, inline = "time1")

//Variables
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = true

//Fractals
isRegularFractal(mode) =>
    ret = mode == 1 ? high[4] < high[3] and high[3] < high[2] and high[2] > high[1] and high[1] > high[0] : mode == -1 ? low[4] > low[3] and low[3] > low[2] and low[2] < low[1] and low[1] < low[0] : false
isBWFractal(mode) =>
    ret = mode == 1 ? high[4] < high[2] and high[3] <= high[2] and high[2] >= high[1] and high[2] > high[0] : mode == -1 ? low[4] > low[2] and low[3] >= low[2] and low[2] <= low[1] and low[2] < low[0] : false
filteredtopf = filterBW ? isRegularFractal(1) : isBWFractal(1)
filteredbotf = filterBW ? isRegularFractal(-1) : isBWFractal(-1)

//Triangles
plotshape(filteredtopf and showff, title='Filtered Top Fractals', style=shape.triangledown, location=location.abovebar, color= color.red, offset=-2)
plotshape(filteredbotf and showff, title='Filtered Bottom Fractals', style=shape.triangleup, location=location.belowbar, color= color.lime, offset=-2)

//Levels
hh = 0.0
ll = 0.0
hh := filteredtopf ? high[2] : hh[1]
ll := filteredbotf ? low[2] : ll[1]

//Trend
trend = 0
trend := high >= hh[1] ? 1 : low <= ll[1] ? -1 : trend[1]

//Lines
hcol = showll and hh == hh[1] and close < hh ? color.lime : na
lcol = showll and ll == ll[1] and close > ll ? color.red : na
plot(hh, color = hcol)
plot(ll, color = lcol)

//Dots
// var line hline = na
// if hh != hh[1] and showdd
//     hline := line.new(bar_index - 0, hh[0], bar_index - 2, hh[0], xloc = xloc.bar_index, extend = extend.none, style = line.style_dotted, color = color.lime, width = 1)
// var line lline = na
// if ll != ll[1] and showdd
//     lline := line.new(bar_index - 0, ll[0] - syminfo.mintick, bar_index - 2, ll[0] - syminfo.mintick, xloc = xloc.bar_index, extend = extend.none, style = line.style_dotted, color = color.red, width = 1)
    
//Background
bgcol = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(bgcol, transp = 80)

//Orders
if hh > 0 and needlong
    strategy.entry("Long", strategy.long, na, stop = hh, when = needlong and truetime)
    strategy.exit("Exit Long", "Long", stop = ll, when = needshort == false)
if ll > 0 and startTime
    strategy.entry("Short", strategy.short, na, stop = ll, when = needshort and truetime)
    strategy.exit("Exit Short", "Short", stop = hh, when = needlong == false)
if time > finalTime
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")

if showlb

    //Drawdown
    max = 0.0
    max := max(strategy.equity, nz(max[1]))
    dd = (strategy.equity / max - 1) * 100
    min = 100.0
    min := min(dd, nz(min[1]))
    
    //Max loss size
    equity := strategy.position_size != strategy.position_size[1] ? strategy.equity : equity[1]
    loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
    maxloss := min(nz(maxloss[1]), loss)
    
    //Label
    min := round(min * 100) / 100
    maxloss := round(maxloss * 100) / 100
    labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
    var label la = na
    label.delete(la)
    tc = min > -100 ? color.white : color.red
    osx = timenow + round(change(time)*50)
    osy = highest(100)
    la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)

مزید