ایم اے سی ڈی اختتامی ہائبرڈ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-30 12:16:20
ٹیگز:

img

جائزہ

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

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

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

  1. MACD تیز لائن اور سست لائن گولڈن کراس اور مردہ کراس کا استعمال بیل اور ریچھ مارکیٹوں اور مخصوص انٹری پوائنٹس کا تعین کرنے کے لئے کریں۔

  2. رجحانات کے اختتام اور باہر نکلنے کے مقامات کا تعین کرنے کے لئے میڈین لائن کے ساتھ بندش کی قیمت کا تعلق استعمال کریں.

  3. منافع بڑھانے کے لئے موجودہ ایم اے سی ڈی رجحان کے اختتام کے بعد اسی سمت میں مارکیٹ میں دوبارہ داخل ہونے کے لئے دوبارہ داخل ہونے کا طریقہ کار مرتب کریں۔

  4. ایک رجحان کے اندر جزوی قیمت کی اصلاحات کے دوران پوزیشنوں کو شامل کرنے کے لئے اصلاحات کے اندراج کا طریقہ کار مقرر کریں۔

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

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

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

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

فوائد

اس کثیر اشارے کی حکمت عملی کے اہم فوائد یہ ہیں:

  1. MACD رجحانات اور انٹری کے لئے الٹ پوائنٹس کی نشاندہی کرتا ہے۔

  2. اختتامی قیمت اور درمیانی لائن کا تعلق درست طریقے سے رجحان کے اختتام کا تعین کرتا ہے۔

  3. واپسی سے سرمایہ کے استعمال کی کارکردگی میں اضافہ ہوتا ہے۔

  4. اصلاحات کا اندراج بروقت رجحانات کو پکڑنے کے لئے پوزیشنوں کو شامل کرتا ہے.

  5. قابو پانے والے خطرے کے ساتھ تجارت کی اعلی تعدد اعلی منافع کے عوامل پیدا کرتی ہے۔

  6. مصنوعات اور مارکیٹوں میں اصلاح کے لئے حسب ضرورت پیرامیٹرز.

  7. سادہ لائیو ٹریڈنگ کے لئے واضح منطق اور جامع کوڈ.

  8. کافی بیک ٹسٹ ڈیٹا قابل اعتماد کو یقینی بناتا ہے۔

خطرات

اہم خطرات یہ ہیں:

  1. غلط MACD سگنل کا امکان دوسرے اشارے کے ساتھ تصدیق کی ضرورت ہے.

  2. بہت تنگ رک جاتا ہے کہ غیر مستحکم چالوں کی طرف سے روک دیا جا سکتا ہے.

  3. تجارت کی بڑھتی ہوئی تعدد کے لئے سرمایہ کے استعمال پر قابو پانے کی ضرورت ہے۔

  4. درستگی کے اندراجات میں واپسی کے دوران نقصانات کا سبب بن سکتا ہے.

  5. مختلف مصنوعات اور مارکیٹوں کے لئے مطلوبہ اصلاحات.

  6. مسلسل بیک ٹیسٹنگ اور اصلاح کی ضرورت ہوتی ہے۔

  7. لائیو ٹریڈنگ کے لئے سلائپ لاگت پر غور کرنا ضروری ہے۔

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

بہتر مواقع

بہتر مواقع:

  1. سگنلز کی تصدیق کے لیے دیگر اشارے شامل کریں، مثال کے طور پر KDJ

  2. موافقت پذیر متحرک رکاوٹوں کو لاگو کریں.

  3. دوبارہ اندراج اور تصحیح اندراج منطق کو بہتر بنائیں.

  4. مصنوعات کے مطابق پیرامیٹر کی اصلاح.

  5. اندراجات کے لئے سرمایہ کے استعمال کو بہتر بنائیں.

  6. حجم کے اشارے شامل کریں تاکہ واپسی کے اندراجات سے ہونے والے نقصانات سے بچ سکے۔

  7. باہر نکلنے کے میکانزم شامل کریں جیسے چلنے والی رکاوٹیں.

  8. خودکار ٹریڈنگ روبوٹ بنائیں.

  9. حقیقی دنیا کے عوامل جیسے سلائڈنگ کا حساب لگائیں۔

یہ استحکام ، موافقت ، آٹومیشن اور براہ راست کارکردگی کو مزید بہتر بنا سکتے ہیں۔

نتیجہ

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


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Puckapao

//@version=4
// strategy(title="MACD", shorttitle="MACD", overlay=true, initial_capital=10000.00, currency="USD", default_qty_type=strategy.cash, default_qty_value=10000.00)
// Getting inputs
reenter_delay = input(title="Re-enter Delay", type=input.integer, defval=2)
sculp_delay = input(title="Sculp Delay", type=input.integer, defval=4)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)
ema_period = input(title="EMA Period", type=input.integer, defval=21)

// Get date
startDate = input(title="Start Date", type=input.integer,
     defval=19, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=09, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2017, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange =  true

reenter_cnt = 0
reenter_cnt := nz(reenter_cnt[1])

sculp_cnt = 0
sculp_cnt := nz(sculp_cnt[1])

close_cnt = 0
close_cnt := nz(close_cnt[1])

on_long = false
on_long := nz(on_long[1])

on_short = false
on_short := nz(on_short[1])

sculp = false
reenter = false
slowdown = false

ema = ema(close, ema_period)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
// plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)

cross_up = crossover(macd, signal)
cross_down = crossunder(macd, signal)

if (inDateRange)

    over_macd = macd > 0 and signal > 0 ? true : false
    under_macd = macd < 0 and signal < 0 ? true : false
    over_water = close > ema ? true : false
    under_water = close < ema ? true : false
    slowdown := hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] > hist ? false : true)
    reenter := hist >= 0 ? (hist[1] < hist ? true : false) : (hist[1] > hist ? true : false)
    sculp := (hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] < hist ? true : false))
    
    if(reenter == true)
        if(reenter_cnt < reenter_delay)
            reenter_cnt := reenter_cnt + 1
    else
        if(reenter_cnt > 0)
            reenter_cnt := reenter_cnt - 1
                    
    if(sculp == true)
        if(sculp_cnt < sculp_delay)
            sculp_cnt := sculp_cnt + 1
    else
        if(sculp_cnt > 0)
            sculp_cnt := sculp_cnt - 1
        
    if(slowdown == false)
        if(close_cnt < 2)
            close_cnt := close_cnt + 1
        else
            close_cnt := 0
    
    // plotchar(fork_cnt, "fork count", "")
    // plotchar(spoon_cnt, "spoon count", "")

    // Entry
    if (cross_up == true)
        strategy.entry("long", strategy.long, comment = "long", alert_message = "long")
        on_long := true
        on_short := false
    if (cross_down == true)
        strategy.entry("short", strategy.short, comment = "short", alert_message = "short")
        on_short := true
        on_long := false
        
    // Sculp bottom / top
    if (sculp == true and sculp_cnt >= sculp_delay)
        if (hist >= 0)
            strategy.entry("sculp-short", strategy.short, comment = "sculp-short", alert_message = "sculp-short")
        else
            strategy.entry("sculp-long", strategy.long, comment = "sculp-long", alert_message = "sculp-long")
        
        sculp_cnt := 0
        sculp := false
            
    // Re-Entry
    if (reenter == true and reenter_cnt >= reenter_delay)
        if (hist >= 0)
            strategy.entry("re-long", strategy.long, comment = "re-long", alert_message = "re-long")
        else
            strategy.entry("re-short", strategy.short, comment = "re-short", alert_message = "re-short")
            
        reenter_cnt := 0
        reenter := false
            
    // Close
    strategy.close("long", when = slowdown, comment = "close long", alert_message = "close long")
    strategy.close("short", when = slowdown, comment = "close short", alert_message = "close short")
    strategy.close("re-long", when = slowdown, comment = "close re-long", alert_message = "close re-long")
    strategy.close("re-short", when = slowdown, comment = "close re-short", alert_message = "close re-short")
    strategy.close("sculp-long", when = slowdown, comment = "close sculp-long", alert_message = "close sculp-long")
    strategy.close("sculp-short", when = slowdown, comment = "close sculp-short", alert_message = "close sculp-short")
    
    if (slowdown)
        if (hist >= 0)
            on_long := false
        else
            on_short := false


plotchar(slowdown, "close", "")
plotchar(reenter, "reenter", "")
plotchar(reenter_cnt, "reenter count", "")
plotchar(sculp, "sculp", "")
plotchar(sculp_cnt, "sculp count", "")

مزید