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


تخلیق کی تاریخ: 2023-09-24 13:08:28 آخر میں ترمیم کریں: 2023-09-24 13:08:28
کاپی: 1 کلکس کی تعداد: 736
1
پر توجہ دیں
1617
پیروکار

جائزہ

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

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

  1. ولیمز فریکٹل اشارے کا استعمال کرتے ہوئے قیمتوں کی اونچائی اور کم کی نشاندہی کریں ، مختلف شکلوں کے مطابق فیصلہ کریں کہ آیا یہ بیل مارکیٹ کی ABCD شکل ہے یا ریچھ مارکیٹ کی ABCD شکل ہے۔

  2. ABCD شکل کا فیصلہ کرنے کا معیار:

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

    • D پوائنٹ سے کم C پوائنٹ بیل مارکیٹ کی شکل ہے ، D پوائنٹ سے زیادہ C پوائنٹ ریچھ مارکیٹ کی شکل ہے۔

  3. بارسنس فنکشن کے ذریعہ ، موجودہ مجموعی رجحان کی سمت کا اندازہ لگانے کے لئے ، پچھلے سمت کا فریکٹل موجودہ سے قریب ترین ہے۔

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

حکمت عملی کا تجزیہ

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

  2. ABCD شکل کا فیصلہ کرنے کا معیار سادہ ، قابل اعتماد اور پروگرام کرنے میں آسان ہے۔

  3. بارسنسی فنکشن کے ساتھ مل کر بڑے رجحان کی سمت کا تعین کرنے کے لئے ، جعلی توڑ سے ہونے والے نقصان کو مؤثر طریقے سے کم کیا جاسکتا ہے۔

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

حکمت عملی کے خطرے کا تجزیہ

  1. Williams Fractal کے پیچھے رہ گیا ہے، اور اس کے نتیجے میں ممکنہ طور پر نقصان پہنچا ہے.

  2. درمیانی شارٹ لائن پر متعدد اوورلیپڈ اے بی سی ڈی شکلیں موجود ہیں ، جو شناخت کی غلطی کا سبب بن سکتی ہیں۔

  3. جب بڑے رجحانات کا اندازہ درست نہیں ہوتا ہے تو ، سینٹ اور شارٹ لائن کا کاروبار آسانی سے قید ہوجاتا ہے۔

  4. نقصان کی روک تھام کی ترتیب بہت چھوٹی ہے اور اس کی وجہ سے ٹکرانے کا خطرہ ہے ، اور اس کی ترتیب بہت بڑی ہے جس کی وجہ سے اس کا پتہ لگانے میں بہتری نہیں آتی ہے۔

بہتر بنانے کے طریقوں کا موازنہ:

  1. ٹرانسمیشن پوائنٹس کو زیادہ مؤثر طریقے سے شناخت کرنے کے طریقوں کو تلاش کرنے کے لئے معاون فیصلے کے لئے دوسرے اشارے استعمال کرنے کی کوشش کی جا سکتی ہے.

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

  3. بڑے رجحانات کا اندازہ لگانے کے طریقوں کو بہتر بنانا ، بڑے رجحانات کے غلط اندازے سے بچنے کے لئے۔

  4. مختلف سٹاپ نقصان سٹاپ تناسب کو ٹیسٹ کریں اور بہترین سٹاپ نقصان سٹاپ پوائنٹ تلاش کریں۔

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

  1. میکڈ ، کے ڈی جے ، اور دیگر اشارے کے ساتھ رجحانات کا اندازہ لگانے کے لئے کوشش کی جاسکتی ہے تاکہ زیادہ درست داخلے کا وقت تلاش کیا جاسکے۔

  2. مختلف نسلوں کے لئے مختلف سائیکلوں کے مطابق پیرامیٹرز کو بہتر بنایا جاسکتا ہے تاکہ اس نسل کے لئے موزوں ترین سائیکل کو روکنے کے لئے روک تھام کی حد کو تلاش کیا جاسکے۔

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

  4. اسٹریٹجی کی استحکام کو بہتر بنانے کے لئے داخلہ سگنل کو فلٹر کرنے والے اشارے جیسے مساوی لائنوں کو جوڑا جاسکتا ہے۔

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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)