یہ حکمت عملی ایک دی گئی حکمت عملی اور تجارت کی جاتی سیکورٹی کی خرید اور ہولڈ منافع کے درمیان ایک تفصیلی اور بصری موازنہ کرتا ہے.
اس حکمت عملی کا بنیادی منطق دی گئی حکمت عملی اور خریدنے اور رکھنے کی حکمت عملی کے درمیان موازنہ کے لئے چار اہم عناصر کی منصوبہ بندی کرنا ہے:
مندرجہ بالا چار عناصر کا موازنہ کرکے ، ہم اس بات کی بدیہی تفہیم حاصل کرسکتے ہیں کہ آیا ہماری حکمت عملی ایک سادہ خرید اور برقرار رکھنے کی حکمت عملی سے بہتر یا کم کارکردگی کا مظاہرہ کرتی ہے۔
خریدنے اور برقرار رکھنے کی واپسی کے سادہ مقابلے کے مقابلے میں، اس حکمت عملی میں مندرجہ ذیل فوائد ہیں:
زیادہ جامع اور تفصیلی موازنہ میٹرکس، بشمول بار موازنہ اور مجموعی طور پر شماریاتی موازنہ، تاکہ ہم واضح طور پر جان سکیں کہ ہماری حکمت عملی کب اور کہاں خرید & ہولڈ کو شکست دیتی ہے یا کھو دیتی ہے۔
بدیہی بصری چارٹس جو حکمت عملی P / L ، خرید & ہولڈ P / L اور ان کے درمیان فرق کو پلاٹ کرتی ہیں۔ اس سے ہمیں اپنی حکمت عملی کی کارکردگی کو تیزی سے دیکھنے کی اجازت ملتی ہے۔
اپنی مرضی کے مطابق موازنہ کی تاریخ کی حد جہاں ہم مخصوص ادوار پر ہماری حکمت عملی بمقابلہ خرید & ہولڈ کا موازنہ کرنے پر توجہ مرکوز کرسکتے ہیں.
سادہ اور استعمال میں آسان۔ موازنہ منطق بلٹ ان ہے تاکہ ہمیں صرف حکمت عملی اسکرپٹ سیکشن کو اپنے ساتھ تبدیل کرنے کی ضرورت ہے۔ موازنہ منطق کو خود کوڈ کرنے کی ضرورت نہیں ہے۔
یہ حکمت عملی بنیادی طور پر موازنہ کے لئے تجارتی پلیٹ فارم کے بلٹ ان خرید اور ہولڈ ریٹرن میٹرکس پر انحصار کرتی ہے۔ اس بینچ مارک کے ساتھ کوئی تعصب حتمی نتیجہ کو متاثر کرے گا۔ نیز ، اس حکمت عملی کے شماریاتی حساب کتاب میں نقائص ہوسکتے ہیں جو موازنہ کو درست طریقے سے ظاہر کرنے میں ناکام رہتے ہیں۔
مزید توثیق کے لئے مزید بینچ مارک اور شماریاتی طریقوں کو متعارف کرایا جاسکتا ہے۔ اگر ٹریڈنگ پلیٹ فارم خرید اور ہولڈ میٹرک میں اہم تبدیلیاں لاتا ہے تو ، یہاں موازنہ کی منطق کو بھی ایڈجسٹ کرنے کی ضرورت ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے مزید بہتر بنایا جاسکتا ہے:
تین طرفہ یا کثیر طرفہ موازنہ کے لئے مزید بینچ مارکس متعارف کروائیں ، مثال کے طور پر ایک انڈیکس یا صنعت کے ہم منصبوں کے مقابلے میں موازنہ کریں۔
اسٹریٹجی کا زیادہ سے زیادہ جہتوں سے اندازہ کرنے کے لئے سالانہ جیت کی شرح ، زیادہ سے زیادہ کھینچنے کی مدت کا فرق وغیرہ جیسے مزید شماریاتی میٹرکس شامل کریں۔
صرف تاریخ کی حد کے بجائے صارفین کے ذریعہ اپنی مرضی کے مطابق بننے والے بینچ مارک ، میٹرکس وغیرہ جیسے مزید اجزاء بنائیں۔
چارٹنگ کی نمائش کو بہتر بنائیں کیونکہ یہاں سادہ لائن چارٹ مخصوص سلاخوں پر تفصیلی موازنہ کو تلاش کرنا مشکل بناتے ہیں۔ کالم پلاٹ یا اضافی نشانات مدد کرسکتے ہیں۔
تفصیلی موازنہ میٹرکس اور بدیہی بصری چارٹس کے ساتھ ، یہ حکمت عملی ہمیں یہ واضح طور پر دیکھنے کی اجازت دیتی ہے کہ ہماری کسٹم حکمت عملی ایک سادہ خرید اور ہولڈ نقطہ نظر سے کہاں اور کس طرح مختلف ہے۔ اپنی مرضی کے مطابق تاریخ کی حد مختلف ادوار میں ہماری حکمت عملی کے پیشہ اور موافق کا تجزیہ کرنے میں لچک بھی فراہم کرتی ہے۔
بینچ مارکس ، میٹرکس اور تصورات کو مزید افزودہ کرنے سے اس کو حکمت عملی کے تجزیے کے لئے ایک انتہائی طاقتور ٹول کٹ میں تبدیل کیا جاسکتا ہے۔ یہ حکمت عملی کے تجزیے اور بہتری کو زیادہ موثر بنانے کے لئے ایک ٹیمپلیٹ اور فریم ورک فراہم کرتا ہے۔
/*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)