
इस रणनीति में विस्तृत सूचकांकों और चार्टों के माध्यम से, किसी दिए गए रणनीति और ट्रेड की गई प्रतिभूतियों की खरीद-होल्ड आय की तुलना करने के लिए एक दृष्टिकोण है।
इस रणनीति का मुख्य तर्क चार प्रमुख तत्वों को रेखांकित करना है जो किसी दिए गए रणनीति और एक खरीद-होल्ड रणनीति के बीच अंतर की तुलना करते हैंः
उपरोक्त चार तत्वों की तुलना करके, एक स्पष्ट और सहज ज्ञान युक्त रणनीति और एक साधारण खरीद और कब्जे के बीच के फायदे और नुकसान को समझा जा सकता है।
इस रणनीति के कुछ फायदे हैं जो सरल खरीद-खरीद और आय-आय की तुलना में हैंः
अधिक व्यापक और विस्तृत तुलनात्मक संकेतकों. प्रत्येक K लाइन पर तुलना, समग्र आंकड़ों की तुलना, आदि, हमें अधिक स्पष्ट रूप से यह जानने की अनुमति देता है कि रणनीति कहां जीतती है या खरीदी हुई होल्डिंग को खो देती है।
एक सहज ज्ञान युक्त तुलनात्मक चार्ट। एक रणनीति के शुद्ध लाभ, खरीद और शुद्ध लाभ और दोनों के अंतर के चार्ट को रेखांकित करके, हम एक रणनीति के प्रदर्शन का तेजी से आकलन कर सकते हैं।
अनुकूलन योग्य तुलना समय अवधि हम बेहतर रणनीति के प्रदर्शन का विश्लेषण करने के लिए एक निश्चित समय अवधि में खरीद और रखने की तुलना में रणनीति पर ध्यान केंद्रित करने का विकल्प चुन सकते हैं
सरल और उपयोग करने में आसान इस नीति में एक पूर्ण तुलना तर्क है, हमें केवल अपनी नीति कोड को टेम्पलेट में संबंधित स्थान पर प्रतिस्थापित करने की आवश्यकता है तुलना तर्क को स्वयं लिखने की आवश्यकता नहीं है
यह रणनीति मुख्य रूप से ट्रेडिंग प्लेटफॉर्म में अंतर्निहित खरीद और होल्डिंग आय के संकेतकों पर निर्भर करती है। यदि अंतर्निहित संकेतकों में विचलन होता है, तो यह अंतिम तुलना परिणाम को प्रभावित करेगा। इसके अलावा, रणनीति में सांख्यिकीय संकेतकों की गणना के तरीके में खामियां हो सकती हैं, जो रणनीति और खरीद और होल्डिंग के बीच तुलना को 100 प्रतिशत सटीक रूप से प्रतिबिंबित नहीं कर सकती हैं।
अधिक बेंचमार्क के साथ तुलना करके और अधिक सांख्यिकीय विधियों को पेश करके रणनीति के प्रदर्शन को और सत्यापित किया जा सकता है। यदि ट्रेडिंग प्लेटफॉर्म के उन्नयन के बाद खरीद और धारण आय संकेतक में अधिक विचलन होता है, तो रणनीति में तुलनात्मक तर्क को समायोजित करने की आवश्यकता होती है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
तीन-पक्षीय या बहु-पक्षीय तुलना के लिए अधिक मानदंड जोड़ें। उदाहरण के लिए, आप समकक्ष सूचकांक या उद्योग के मानकों की तुलना कर सकते हैं।
अधिक सांख्यिकीय संकेतक जोड़ें, जैसे कि वार्षिक, त्रैमासिक जीत दर, अधिकतम निकासी समय अंतर, आदि। हमें रणनीति को और अधिक आयामों से समझने दें।
पैरामीट्रिक कॉन्फ़िगरेशन जोड़ा गया। उपयोगकर्ता को समय के बाहर और अधिक सामग्री को अनुकूलित करने की अनुमति देता है, जैसे कि बेंचमार्क, सांख्यिकीय संकेतक आदि की तुलना करना।
अनुकूलित चार्ट प्रदर्शित करना वर्तमान में सरल रेखाचित्र प्रदर्शित करना मुश्किल हो सकता है ताकि यह स्पष्ट हो सके कि रणनीति और खरीदारी किस विशिष्ट समय पर आयोजित की गई थी। पठनीयता को बढ़ाने के लिए स्तंभों के रूप में या चिह्नों को जोड़ने पर विचार किया जा सकता है।
यह रणनीति कई विस्तृत तुलनात्मक संकेतकों और सहज ज्ञान युक्त आरेखों के साथ डिज़ाइन की गई है, जिससे हम एक बहुत ही स्पष्ट और व्यापक रूप से समझ सकते हैं कि एक कस्टम रणनीति और एक साधारण खरीद और धारण करने वाली रणनीति के बीच अंतर क्या है, जिससे हमें रणनीति के प्रदर्शन में सुधार करने में मदद मिलती है। इसकी अनुकूलन योग्य तुलना समय अवधि भी हमें विभिन्न चरणों में रणनीति के फायदे और नुकसान का विश्लेषण करने की अनुमति देती है।
यदि हम बेंचमार्क, सांख्यिकीय संकेतकों और चार्ट के प्रदर्शन को समृद्ध करना जारी रखते हैं, तो यह रणनीति एक बहुत ही शक्तिशाली रणनीति विश्लेषण उपकरण बन सकती है। यह हमें एक टेम्पलेट और एक ढांचा प्रदान करता है जो रणनीति विश्लेषण और सुधार कार्य को अधिक कुशल बनाता है।
/*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)