وسائل لوڈ ہو رہے ہیں... لوڈنگ...

دوہری MACD مقداری تجارتی حکمت عملی

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

img

جائزہ

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

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

دوہری MACD مقداری تجارتی حکمت عملی میں داخلہ اور باہر نکلنے کے سگنل کا تعین کرنے کے لئے ہفتہ وار MACD اور روزانہ MACD اشارے کا ایک مجموعہ استعمال کیا جاتا ہے۔

سب سے پہلے ، جب ہفتہ وار MACD اشارے کی MACD لائن سگنل لائن سے اوپر عبور کرتی ہے تو ، خرید کا سگنل تیار کیا جاتا ہے اور ایک لمبی پوزیشن کھولی جاتی ہے۔ پھر جب روزانہ MACD اشارے کی MACD لائن سگنل لائن سے نیچے عبور کرتی ہے تو ، فروخت کا سگنل تیار کیا جاتا ہے اور پوزیشن بند کردی جاتی ہے۔

جب پوزیشن خالی ہو جاتی ہے ، اگر روزانہ MACD اشارے کی MACD لائن سگنل لائن سے اوپر ایک بار پھر عبور کرتی ہے تو ، ایک نئی طویل پوزیشن دوبارہ کھولی جاتی ہے۔ یعنی ، روزانہ MACD کا سنہری کراس دوبارہ داخلے کی شرط کے طور پر کام کرتا ہے۔

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

فوائد

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

  1. ہفتہ وار ٹائم فریم اہم رجحان کی سمت کا اندازہ کرتا ہے، جس سے مخالف تجارت سے بچنے میں مدد ملتی ہے۔

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

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

  4. MACD اشارے کے پیرامیٹرز ایڈجسٹ ہیں اور مختلف اقسام اور مارکیٹ کے حالات کے مطابق بہتر بنایا جا سکتا ہے.

  5. مؤثر طریقے سے خطرات کو کنٹرول کرنے کے لئے منافع، سٹاپ نقصان، پیچھے سٹاپ نقصان کے افعال کو ضم کرتا ہے.

خطرات

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

  1. ایم اے سی ڈی اشارے میں غلط سگنل اور کثرت سے کراس اوور پیدا ہوتے ہیں، دیگر اشارے سے تصدیق کی ضرورت ہوتی ہے۔

  2. ہفتہ وار/ماہانہ ٹائم فریم میں پائے جانے والے اہم رجحان کا الٹ ہوسکتا ہے، ٹرائلنگ سٹاپ نقصان ضروری ہے۔

  3. پیرامیٹرز کو مختلف اقسام اور مارکیٹ کے حالات کے مطابق مسلسل بہتر بنانے اور ایڈجسٹ کرنے کی ضرورت ہے۔

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

متعلقہ حل:

  1. منطق کی اصلاح کے ساتھ حکمت عملی کے نظام کی تعمیر کے لئے دیگر اشارے کے ساتھ مل کر.

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

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

  4. کم سے کم سرمایہ سے لائیو ٹریڈنگ شروع کریں تاکہ استحکام کی تصدیق کی جاسکے۔

اصلاح

دوہری MACD مقداری تجارتی حکمت عملی میں مزید اصلاحات کی گنجائش ہے:

  1. ملٹی انڈیکیٹر مشترکہ حکمت عملی بنانے اور سگنل کے معیار کو بہتر بنانے کے لئے بولنگر بینڈ ، کے ڈی جے اور دیگر اشارے متعارف کروائیں۔

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

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

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

  5. حکمت عملی فٹنس ٹیسٹ اور اوپٹیمائزیشن زیادہ فٹ ہونے کے مسائل سے بچنے کے لئے.

نتیجہ

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


/*backtest
start: 2023-01-29 00:00:00
end: 2024-01-11 05:20:00
period: 1d
basePeriod: 1h
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/
// © maxits

// Long Position: Weekly Macd line crosses above Signal line   
// [Trading Window Macd Line > Signal Line] (Weekly)
// Close Position: Daily Macd Line crosses above Daily Signal line.  
// Re Entry Condition: Macd line crosses above Signal line only if [Trading Window MacdLine > Sgnal Line] (Weekly)

//@version=4
strategy("Dual MACD Strategy",
         shorttitle="Dual Macd Tester",
         overlay=false,
         initial_capital=1000,
         default_qty_value=20,
         default_qty_type=strategy.percent_of_equity,
         commission_value=0.1,
         pyramiding=0)



// Define user inputs
i_time     = input(defval = timestamp("01 May 2018 13:30 +0000"), title = "Start Time", type = input.time) // Starting  time for Backtesting
f_time     = input(defval = timestamp("9 Sep 2021 13:30 +0000"), title = "Finish Time", type = input.time) // Finishing time for Backtesting

sep1          = input(false, title="------ Profit & Loss ------")

enable_TP     = input(true, title="Enable Just a Profit Level?")
enable_SL     = input(false, title="Enable Just a S.Loss Level?")
enable_TS     = input(true, title=" Enable Only Trailing Stop")
long_TP_Input = input(30.0,   title='Take Profit %',      type=input.float, minval=0)/100
long_SL_Input = input(1.0,   title='Stop Loss %',        type=input.float, minval=0)/100
long_TS_Input = input(5.0,   title='Trailing Stop %',    type=input.float, minval=0)/100
cl_low_Input  = input(low,   title="Trailing Stop Source")
long_TP       = strategy.position_avg_price * (1 + long_TP_Input)
long_SL       = strategy.position_avg_price * (1 - long_SL_Input)
long_TS       = cl_low_Input * (1 - long_TS_Input)

sep2       = input(false, title="------ Macd Properties ------")

d_res      = input(title="Short Term TimeFrame", type=input.resolution, defval="D") // Daily Time Frame
w_res      = input(title="Long Term TimeFrame", type=input.resolution, defval="W")  // Weekly Time Frame
src        = input(close, title="Source")                                           // Indicator Price Source
fast_len   = input(title="Fast Length", type=input.integer, defval=12)              // Fast MA Length
slow_len   = input(title="Slow Length", type=input.integer, defval=26)              // Slow MA Length
sign_len   = input(title="Sign Length", type=input.integer, defval=9)               // Sign MA Length
d_w        = input(title="Daily or Weekly?", type=input.bool, defval=true)          // Plot Daily or Weekly MACD

// Color Plot for Macd

col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350

// BG Color

bg_color = color.rgb(127, 232, 34, 75)

// Daily Macd

[d_macdLine, d_singleLine, d_histLine] = security(syminfo.tickerid, d_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución

plot(d_w ? d_macdLine   : na, color=color.blue)
plot(d_w ? d_singleLine : na, color=color.orange)
plot(d_w ? d_histLine   : na, style=plot.style_columns,
     color=(d_histLine>=0 ? (d_histLine[1] < d_histLine ? col_grow_above : col_fall_above) : 
     (d_histLine[1] < d_histLine ? col_grow_below : col_fall_below)))
    
// Weekly Macd

[w_macdLine, w_singleLine, w_histLine] = security(syminfo.tickerid, w_res, macd(src, fast_len, slow_len, sign_len)) // Funcion Security para poder usar correcta resolución

plot(d_w ? na : w_macdLine,   color=color.blue)
plot(d_w ? na : w_singleLine, color=color.orange)
plot(d_w ? na : w_histLine,   style=plot.style_columns,
     color=(w_histLine>=0 ? (w_histLine[1] < w_histLine ? col_grow_above : col_fall_above) : 
     (w_histLine[1] < w_histLine ? col_grow_below : col_fall_below)))

///////////////////////////////// Entry Conditions
inTrade    = strategy.position_size != 0       // Posición abierta
notInTrade = strategy.position_size == 0       // Posición Cerrada
start_time = true

trading_window = w_macdLine > w_singleLine   // Weekly Macd Signal enables a trading window 
bgcolor(trading_window ? bg_color : na)
buy_cond       = crossover (w_macdLine, w_singleLine)
sell_cond      = crossunder(d_macdLine, d_singleLine)
re_entry_cond  = crossover (d_macdLine, d_singleLine) and trading_window

// Entry Exit Conditions

trailing_stop  = 0.0        // Code for calculating Long Positions Trailing Stop Loss
trailing_stop := if (strategy.position_size != 0)
    stopValue = long_TS
    max(trailing_stop[1], stopValue)
else 
    0

if (buy_cond and notInTrade and start_time)
    strategy.entry(id="First Entry", long=strategy.long, comment="First Long")

if (sell_cond and inTrade)
    strategy.close(id="First Entry", comment="Close First Long")
    
if (re_entry_cond and notInTrade and start_time)
    strategy.entry(id="Further Entry", long=strategy.long, comment="Further Entry")

if (sell_cond and inTrade)
    strategy.close(id="Further Entry", comment="Close First Long")

if enable_TP
    if (enable_TS and not enable_SL)
        strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP, stop = trailing_stop)
        strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = trailing_stop)
    else
        if (enable_SL and not enable_TS)
            strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP, stop = long_SL)
            strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP, stop = long_SL)
        else 
            strategy.exit("Long TP & TS FiEn", "First Entry",   limit = long_TP)
            strategy.exit("Long TP & TS FuEn", "Further Entry", limit = long_TP)
else
    if not enable_TP 
        if (enable_TS and not enable_SL)
            strategy.exit("Long TP & TS FiEn", "First Entry",   stop = trailing_stop)
            strategy.exit("Long TP & TS FuEn", "Further Entry", stop = trailing_stop)
        else
            if (enable_SL and not enable_TS)
                strategy.exit("Long TP & TS FiEn", "First Entry",   stop = long_SL)
                strategy.exit("Long TP & TS FuEn", "Further Entry", stop = long_SL)

plot(enable_TP ? long_TP : na, title="TP Level", color=color.green, style=plot.style_linebr, linewidth=2)
plot(enable_SL ? long_SL : na, title="SL Level", color=color.red,   style=plot.style_linebr, linewidth=2)
plot(enable_TS and trailing_stop ? trailing_stop : na, title="TS Level", color=color.red, style=plot.style_linebr, linewidth=2)


مزید