
Strategi ini menggunakan indikator dan carta terperinci untuk membandingkan secara intuitif strategi yang diberikan dengan pembelian dan keuntungan pegangan sekuriti yang diperdagangkan.
Logik utama strategi ini adalah untuk memetakan empat elemen utama untuk membandingkan perbezaan antara strategi yang diberikan dan strategi beli dan pegang:
Dengan membandingkan empat faktor di atas, anda dapat memahami dengan jelas dan intuitif kelebihan dan kekurangan antara strategi dan pembelian dan pegangan mudah.
Strategi ini mempunyai beberapa kelebihan berbanding dengan pembelian dan memegang keuntungan yang mudah:
Indeks perbandingan yang lebih komprehensif dan terperinci. Ia termasuk perbandingan pada setiap garis K, perbandingan statistik keseluruhan, dan lain-lain, yang membolehkan kita mengetahui dengan lebih jelas di mana strategi menang atau kalah dengan pembelian dan memegang.
Carta perbandingan intuitif. Dengan memetakan carta keuntungan bersih strategi, keuntungan bersih membeli dan memegang dan perbezaan antara keduanya, kita dapat menilai prestasi strategi dengan lebih cepat melalui visual.
Tempoh perbandingan yang boleh disesuaikan. Kita boleh memilih untuk hanya melihat perbandingan antara strategi dengan pembelian dan pemegang dalam jangka masa tertentu untuk menganalisis prestasi strategi dengan lebih baik.
Sederhana dan mudah digunakan. Strategi ini mempunyai logik perbandingan yang lengkap, kita hanya perlu menggantikan kod strategi kita sendiri dengan kedudukan yang sesuai dalam templat. Tidak perlu menulis logik perbandingan sendiri.
Strategi ini bergantung terutamanya pada indikator pembelian dan pemegang pendapatan yang disertakan dalam platform perdagangan untuk membandingkan. Jika indikator terbina dalam itu mempunyai penyimpangan, ia akan mempengaruhi hasil perbandingan akhir. Di samping itu, kaedah pengiraan indikator statistik dalam strategi mungkin juga tidak tepat dan tidak dapat mencerminkan perbandingan antara strategi dan pembelian dan pemegang saham dengan tepat.
Anda boleh membuat perbandingan dengan lebih banyak penanda aras, memperkenalkan lebih banyak kaedah statistik dan lain-lain untuk mengesahkan lebih lanjut prestasi strategi anda. Anda juga perlu menyesuaikan logik perbandingan dalam strategi anda jika anda membeli dan memegang petunjuk pendapatan yang lebih besar setelah menaik taraf platform perdagangan anda.
Strategi ini boleh dioptimumkan dalam beberapa aspek:
Menambah lebih banyak penanda aras untuk perbandingan tiga pihak atau pelbagai pihak. Sebagai contoh, anda boleh menambah perbandingan indeks rakan sejawat atau penanda aras industri.
Menambah lebih banyak petunjuk statistik. Seperti kadar kemenangan setiap tahun, setiap suku, perbezaan masa maksimum penarikan balik, dan sebagainya.
Menambah konfigurasi parameter. Memungkinkan pengguna untuk menyesuaikan lebih banyak kandungan di luar tempoh masa perbandingan, seperti perbandingan penanda aras, statistik dan sebagainya.
Paparan carta yang dioptimumkan. Paparan carta garisan yang mudah pada masa ini mungkin sukar untuk melihat perbandingan antara strategi dan pembelian yang dipegang pada titik-titik masa tertentu. Anda boleh mempertimbangkan untuk memetakan carta berbentuk tiang atau menambah tanda untuk meningkatkan kebolehbacaan.
Strategi ini membolehkan kita untuk memahami dengan jelas dan menyeluruh perbezaan antara strategi tersuai dengan strategi membeli dan memegang yang mudah, dengan merancang beberapa indikator perbandingan yang terperinci dan paparan grafik yang intuitif, yang dapat membantu kita untuk memperbaiki prestasi strategi dengan lebih baik. Tempoh perbandingan yang boleh disesuaikan juga membolehkan kita untuk menganalisis kelebihan dan kekurangan strategi pada tahap yang berbeza.
Strategi ini boleh menjadi alat analisis strategi yang sangat kuat jika terus diperkaya dengan perbandingan, indikator statistik dan paparan grafik. Ia menyediakan templat dan rangka kerja untuk membuat analisis dan penambahbaikan strategi menjadi lebih berkesan.
/*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)