رفتار ABCD پیٹرن کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-24 13:08:28
ٹیگز:

جائزہ

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

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

  1. قیمتوں کی چوٹیوں اور نچلی سطحوں کی نشاندہی کرنے کے لئے ولیمز فریکٹل اشارے کا استعمال کریں۔ مختلف پیٹرن کا استعمال تیزی یا bearish ABCD پیٹرن کا تعین کرنے کے لئے کیا جاتا ہے۔

  2. ABCD پیٹرن کی شناخت کے معیار:

    • اے بی اور سی ڈی کے درمیان فاصلہ ایک جیسا ہے، اور بی سی اور سی ڈی کے درمیان فاصلہ بعض متناسب ضروریات کو پورا کرتا ہے (0.382-0.886 اور 1.13-2.618 کے درمیان).

    • D نقطہ C نقطہ سے کم ایک تیزی کا نمونہ ہے. D نقطہ C نقطہ سے زیادہ ایک bearish پیٹرن ہے.

  3. مجموعی طور پر رجحان کی سمت کا فیصلہ کرنے کے لئے موجودہ سے قریبی کونسی سمت ہے اس کا تعین کرنے کے لئے بارسائنس فنکشن کا استعمال کریں۔

  4. ABCD پیٹرن کی نشاندہی کرنے کے بعد طویل / مختصر درج کریں، اور درمیانی مدت کے رجحانات کی پیروی کرنے کے لئے سٹاپ نقصان اور منافع لے لو.

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

  1. ولیمز فریکٹل اشارے سے موڑ کے مقامات کو زیادہ درست طریقے سے پہچاننے میں مدد ملتی ہے۔

  2. اے بی سی ڈی پیٹرن کے معیار سادہ اور قابل اعتماد ہیں، خود کار طریقے سے آسان.

  3. اہم رجحان کی سمت کو بارسائنڈ کے ساتھ اندازہ لگانے سے جھوٹے بریکآؤٹس سے ہونے والے نقصانات سے بچا جاتا ہے۔

  4. سٹاپ نقصان کے ساتھ رجحانات پر عمل کریں اور انٹری کے بعد منافع لیں.

خطرے کا تجزیہ

  1. ولیمز فریکٹل میں تاخیر ہو سکتی ہے اور نقصانات کا سبب بننے والے موڑ کے مقامات کو یاد کر سکتے ہیں۔

  2. متعدد اوورلیپنگ ABCD پیٹرن درمیانی مدت کے چارٹس پر غلط شناخت کا سبب بن سکتے ہیں۔

  3. غلط اہم رجحان کی سمت درمیانی مدت کی تجارت میں پھنس جانے کا خطرہ بڑھاتا ہے۔

  4. بہت تنگ سٹاپ نقصان آسانی سے روک دیا جا سکتا ہے. بہت وسیع سٹاپ نقصان خراب ٹریکنگ کا سبب بن سکتا ہے.

ممکنہ حل:

  1. دوسرے اشارے کو آزمائیں تاکہ موڑ کے مقامات کو زیادہ مؤثر طریقے سے شناخت کرنے میں مدد ملے۔

  2. شناخت کو زیادہ سخت اور قابل اعتماد بنانے کے لئے ABCD پیٹرن پیرامیٹرز کو بہتر بنائیں۔

  3. غلط سمت کی تعصب سے بچنے کے لئے اہم رجحان کی نشاندہی کو بہتر بنائیں۔

  4. زیادہ سے زیادہ پوائنٹس تلاش کرنے کے لئے مختلف سٹاپ نقصان / منافع حاصل کرنے کے تناسب کی جانچ کریں.

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

  1. انٹری سگنل کی درستگی کو بہتر بنانے کے لئے MACD، KDJ اور دیگر اشارے کی جانچ کریں۔

  2. بہترین سٹاپ نقصان / منافع لینے کی سطح تلاش کرنے کے لئے مختلف مصنوعات اور ٹائم فریم پر مبنی پیرامیٹرز کو بہتر بنائیں.

  3. بہترین پیرامیٹر مجموعے کو تبدیل کرنے والے مارکیٹ کے حالات کے مطابق تلاش کرنے کے لئے بار نظر ثانی کی مدت کو بہتر بنائیں.

  4. سگنلز کو فلٹر کرنے اور استحکام کو بہتر بنانے کے لئے حرکت پذیر اوسط وغیرہ شامل کریں.

  5. مشین لرننگ الگورتھم اور مزید ڈیٹا متعارف کروانا تاکہ پیٹرن کی شناخت کی درستگی کو بہتر بنایا جاسکے۔

خلاصہ

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


/*backtest
start: 2023-09-16 00:00:00
end: 2023-09-23 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// @author=Daveatt - BEST

// ABCD Pattern Strat

StrategyName        = "BEST ABCD Pattern Strategy"
ShortStrategyName   = "BEST ABCD Pattern Strategy" 

// strategy(title=StrategyName, shorttitle=ShortStrategyName, overlay=true, 
//  pyramiding=2, default_qty_value=100, precision=7, currency=currency.USD,
//  commission_value=0.2,commission_type=strategy.commission.percent, initial_capital=1000000,
//  default_qty_type=strategy.fixed)

filterBW = input(false, title="filter Bill Williams Fractals?")

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////// UTILITIES ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

//  ||-----------------------------------------------------------------------------------------------------||
//  ||---   Fractal Recognition Functions:  ---------------------------------------------------------------||
isRegularFractal(mode, _high, _low) =>
    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, _high, _low) =>
    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

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
////////////////////////////// ABCD PATTERN ///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

f_abcd()=>

    _r = timeframe.period
    _g = barmerge.gaps_off
    _l = barmerge.lookahead_on

    _high = high
    _low = low

    filteredtopf = filterBW ? isRegularFractal(1, _high, _low) : isBWFractal(1, _high, _low)
    filteredbotf = filterBW ? isRegularFractal(-1, _high, _low) : isBWFractal(-1, _high, _low)

    //  ||---   ZigZag:
    istop = filteredtopf
    isbot = filteredbotf
    topcount = barssince(istop)
    botcount = barssince(isbot)

    zigzag = (istop and topcount[1] > botcount[1] ? _high[2] :
     isbot and topcount[1] < botcount[1] ? _low[2] : na)

    x = valuewhen(zigzag, zigzag, 4) 
    a = valuewhen(zigzag, zigzag, 3) 
    b = valuewhen(zigzag, zigzag, 2) 
    c = valuewhen(zigzag, zigzag, 1) 
    d = valuewhen(zigzag, zigzag, 0)

    xab = (abs(b-a)/abs(x-a))
    xad = (abs(a-d)/abs(x-a))
    abc = (abs(b-c)/abs(a-b))
    bcd = (abs(c-d)/abs(b-c))

    // ABCD Part
    _abc = abc >= 0.382 and abc <= 0.886
    _bcd = bcd >= 1.13 and bcd <= 2.618
    
    _bull_abcd = _abc and _bcd and d < c 
    _bear_abcd = _abc and _bcd and d > c

    _bull   = _bull_abcd and not _bull_abcd[1]
    _bear   = _bear_abcd and not _bear_abcd[1]

    [_bull, _bear, zigzag]

lapos_x = timenow + round(change(time)*12)

[isLong, isShort, zigzag]  = f_abcd()

plot(zigzag, title= 'ZigZag', color=color.black, offset=-2)
plotshape(isLong, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.normal, text="ABCD", textcolor=color.white)
plotshape(isShort, style=shape.labeldown, location=location.abovebar, color=color.new(color.maroon, 0), size=size.normal, text="ABCD", textcolor=color.white)


long_entry_price    = valuewhen(isLong, close, 0)
short_entry_price   = valuewhen(isShort, close, 0)

sinceNUP = barssince(isLong)
sinceNDN = barssince(isShort)

buy_trend   = sinceNDN > sinceNUP
sell_trend  = sinceNDN < sinceNUP


//////////////////////////
//* Profit Component *//
//////////////////////////

//////////////////////////// MinTick ///////////////////////////
fx_pips_value = syminfo.type == "forex" ? syminfo.mintick*10 : 1

input_tp_pips = input(100, "Backtest Profit Goal (in USD)",minval=0)*fx_pips_value
input_sl_pips = input(20, "Backtest STOP Goal (in USD)",minval=0)*fx_pips_value

tp = buy_trend? long_entry_price + input_tp_pips : short_entry_price - input_tp_pips
sl = buy_trend? long_entry_price - input_sl_pips : short_entry_price + input_sl_pips

plot_tp = buy_trend and high[1] <= tp ? tp : sell_trend and low[1] <= tp ? tp : na
plot_sl = buy_trend and low[1] >= sl ? sl : sell_trend and high[1] >= sl ? sl : na

plot(plot_tp, title="TP", style=plot.style_circles, linewidth=3, color=color.blue)
plot(plot_sl, title="SL", style=plot.style_circles, linewidth=3, color=color.red)

longClose   = isShort
shortClose  = isLong


strategy.entry("Long", 1, when=isLong)
// strategy.close("Long", when=longClose )
strategy.exit("XL","Long", limit=tp,  when=buy_trend, stop=sl)


strategy.entry("Short", 0,  when=isShort)
// strategy.close("Short", when=shortClose )
strategy.exit("XS","Short", when=sell_trend, limit=tp, stop=sl)

مزید