حکمت عملی اور خرید اور برقرار رکھنے کی واپسی کے درمیان بصری موازنہ

مصنف:چاؤ ژانگ، تاریخ: 2024-01-05 15:27:26
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کا بنیادی منطق دی گئی حکمت عملی اور خریدنے اور رکھنے کی حکمت عملی کے درمیان موازنہ کے لئے چار اہم عناصر کی منصوبہ بندی کرنا ہے:

  1. حکمت عملی P/L: حکمت عملی خالص منافع + حکمت عملی کھلی منافع
  2. خریدیں اور ہولڈ پی / ایل: غیر حقیقی واپسی
  3. فرق: حکمت عملی P/L - خرید & ہولڈ P/L
  4. حکمت عملی بمقابلہ خریدیں ہولڈ اعداد و شمار
    • سلاخوں کی حکمت عملی پی / ایل کا فیصد خرید & ہولڈ سے اوپر ہے
    • سلاخوں کی حکمت عملی پی / ایل کا فیصد خرید & ہولڈ سے نیچے ہے
    • تمام وقت کا اوسط فرق

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

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

خریدنے اور برقرار رکھنے کی واپسی کے سادہ مقابلے کے مقابلے میں، اس حکمت عملی میں مندرجہ ذیل فوائد ہیں:

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

  2. بدیہی بصری چارٹس جو حکمت عملی P / L ، خرید & ہولڈ P / L اور ان کے درمیان فرق کو پلاٹ کرتی ہیں۔ اس سے ہمیں اپنی حکمت عملی کی کارکردگی کو تیزی سے دیکھنے کی اجازت ملتی ہے۔

  3. اپنی مرضی کے مطابق موازنہ کی تاریخ کی حد جہاں ہم مخصوص ادوار پر ہماری حکمت عملی بمقابلہ خرید & ہولڈ کا موازنہ کرنے پر توجہ مرکوز کرسکتے ہیں.

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

خطرے کا تجزیہ

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

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

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

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

  1. تین طرفہ یا کثیر طرفہ موازنہ کے لئے مزید بینچ مارکس متعارف کروائیں ، مثال کے طور پر ایک انڈیکس یا صنعت کے ہم منصبوں کے مقابلے میں موازنہ کریں۔

  2. اسٹریٹجی کا زیادہ سے زیادہ جہتوں سے اندازہ کرنے کے لئے سالانہ جیت کی شرح ، زیادہ سے زیادہ کھینچنے کی مدت کا فرق وغیرہ جیسے مزید شماریاتی میٹرکس شامل کریں۔

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

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

نتیجہ

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

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


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("VS Buy Hold", precision=2)

bnh_info_panel = input(true, title='Enable Info Panel')
bnh_indicator_panel = input(true, title='Enable Indicator Panel')

//COMPARISON DATE RANGE//
bnh_FromYear = input(1970, title="From Year", minval=1970)
bnh_FromMonth = input(1, title="From Month", minval=1, maxval=12)
bnh_FromDay = input(1, title="From Day", minval=1, maxval=31)

bnh_ToYear = input(2050, title="To Year", minval=2010)
bnh_ToMonth = input(12, title="To Month", minval=1, maxval=12)
bnh_ToDay = input(31, title="To Day", minval=1, maxval=31)

bnh_start = timestamp(bnh_FromYear, bnh_FromMonth, bnh_FromDay, 00, 00)
bnh_finish = timestamp(bnh_ToYear, bnh_ToMonth, bnh_ToDay, 23, 59)
bnh_timeCond = time >= bnh_start and time <= bnh_finish ? true: false
    
//Note: If you are going to use the COMPARISON DATE RANGE above, apply bnh_timeCond
//      to your strategy parameters.


/////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////STRATEGY SCRIPT START//////////////////////////////////

//=========================PLACEHOLDER MA CROSS STRATEGY=========================//
fastLength = 50
slowLength = 200
price = close

mafast = sma(price, fastLength)
maslow = sma(price, slowLength)
strategy.initial_capital = 50000
positionSize = strategy.initial_capital / close

if (crossover(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
    strategy.entry("MA2CrossLE", strategy.long, positionSize, comment="MA2CrossLE")

if (crossunder(mafast, maslow) and bnh_timeCond) // <= bnh_timeCond added as a condition
    strategy.entry("MA2CrossSE", strategy.short, positionSize, comment="MA2CrossSE")

//////////////////////////////STRATEGY SCRIPT END////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////



//STRATEGY EQUITY
strategy_pnl = strategy.netprofit + strategy.openprofit
bnh_strategy_pnl_pcnt = (strategy_pnl / strategy.initial_capital) * 100


//BUY AND HOLD EQUITY
float bnh_start_bar = na
bnh_start_bar := na(bnh_start_bar[1]) and bnh_timeCond? close : bnh_start_bar[1]
bnl_buy_hold_equity = ((close - bnh_start_bar)/bnh_start_bar) * 100


//STRATEGY VS BUY AND HOLD STATS
bnh_vs_diff = bnh_strategy_pnl_pcnt - bnl_buy_hold_equity

bnh_bar_counter = 0
bnh_bar_counter := bnh_vs_diff > 0 ? nz(bnh_bar_counter[1]) + 1 : bnh_bar_counter[1]

bnh_bar_counter2 = 0
bnh_bar_counter2 := bnh_vs_diff <= 0 ? nz(bnh_bar_counter2[1]) + 1 : bnh_bar_counter2[1]

bnh_pcnt_above = (bnh_bar_counter/(bnh_bar_counter + bnh_bar_counter2))*100
bnh_pcnt_below = (bnh_bar_counter2/(bnh_bar_counter + bnh_bar_counter2))*100

bnh_average_diff = cum(bnh_vs_diff) / (bnh_bar_counter + bnh_bar_counter2)


//PLOTS AND LABELS
bnh_diff_color = bnh_vs_diff > 0 ? color.green : color.red
plot(bnh_vs_diff, style=plot.style_columns, color=bnh_diff_color, transp=60, title='SvB')
plot(bnh_strategy_pnl_pcnt, color=color.yellow, linewidth=2, title="SR")
plot(bnl_buy_hold_equity, color=color.blue, title="BHR")

// draw_IndicatorLabel(_text, _x, _y, label_color, font_color)=>
//     string_text = _text
//     var label la_indicator = na
//     label.delete(la_indicator)
//     la_indicator := label.new(
//          x=_x, y=_y, 
//          text=string_text, xloc=xloc.bar_index, yloc=yloc.price, 
//          color=label_color, style=label.style_labeldown, textcolor=font_color, size=size.small)

// draw_InfoPanel(_text, _x, _y, font_size)=>
//     var label la_panel = na
//     label.delete(la_panel)
//     la_panel := label.new(
//          x=_x, y=_y, 
//          text=_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=color.new(#383838, 5), style=label.style_labelup, textcolor=color.white, size=font_size)

// if bnh_indicator_panel         
//     draw_IndicatorLabel("Difference", bar_index, bnh_vs_diff, color.new(color.gray, 40), color.white)
//     draw_IndicatorLabel("Strategy P/L", bar_index, bnh_strategy_pnl_pcnt, color.new(color.yellow, 50), color.white)
//     draw_IndicatorLabel("Buy & Hold P/L", bar_index, bnl_buy_hold_equity, color.new(color.blue, 50), color.white)

// info_panel_x = time_close + round(change(time) * 200)
// info_panel_y = max(max(bnl_buy_hold_equity, bnh_strategy_pnl_pcnt), bnh_vs_diff) + abs(bnh_vs_diff * 0.25)


// title = "STRATEGY vs BUY & HOLD STATS"
// row0 = "-----------------------------------------------------"
// row1 = 'Bars Above Buy & Hold: ' + tostring(bnh_pcnt_above, '#.##') + '%'
// row2 = 'Bars Below Buy & Hold: ' + tostring(bnh_pcnt_below, '#.##') + '%'
// row3 = 'All Time Ave. Difference: ' + tostring(bnh_average_diff, '#.##') + '%'

// panel_text = '\n' + title + '\n' + row0 + '\n' + row1 + '\n\n' + row2 + '\n\n' + row3 + '\n'

// if bnh_info_panel
//     draw_InfoPanel(panel_text, info_panel_x, info_panel_y, size.normal)



مزید