
Strategi ini menggunakan indikator dan grafik terperinci untuk secara intuitif membandingkan strategi yang diberikan dengan pembelian dan kepemilikan keuntungan dari sekuritas yang diperdagangkan.
Logika inti dari strategi ini adalah memetakan empat elemen kunci untuk membandingkan perbedaan antara strategi yang diberikan dan strategi beli-memiliki:
Dengan membandingkan empat faktor di atas, Anda dapat dengan jelas dan intuitif memahami pro dan kontra antara strategi dan pembelian dan kepemilikan sederhana.
Strategi ini memiliki beberapa keunggulan dibandingkan dengan pembelian dan kepemilikan keuntungan yang sederhana:
Metode perbandingan yang lebih komprehensif dan terperinci. Termasuk perbandingan pada setiap garis K, perbandingan statistik keseluruhan, dan lain-lain, memungkinkan kita untuk lebih jelas mengetahui di mana strategi menang atau kalah dalam pembelian dan kepemilikan.
Grafik perbandingan intuitif. Dengan memetakan grafik dari keuntungan bersih dari strategi, keuntungan bersih dari pembelian dan kepemilikan, dan perbedaan antara keduanya, kita dapat menilai kinerja strategi secara visual lebih cepat.
Periode perbandingan yang dapat disesuaikan. Kita dapat memilih untuk hanya fokus pada perbandingan antara strategi dengan pembelian dan kepemilikan dalam jangka waktu tertentu untuk menganalisis kinerja strategi dengan lebih baik.
Sederhana dan mudah digunakan. Strategi ini memiliki logika perbandingan yang lengkap, kita hanya perlu mengganti kode kebijakan kita sendiri dengan posisi yang sesuai di template. Tidak perlu menulis logika perbandingan sendiri.
Strategi ini terutama bergantung pada indikator pembelian dan kepemilikan pendapatan yang ada di platform perdagangan untuk membandingkan. Jika indikator bawaan ini memiliki bias, itu akan mempengaruhi hasil perbandingan akhir. Selain itu, metode perhitungan indikator statistik dalam strategi mungkin juga tidak akurat dan tidak dapat mencerminkan perbandingan antara strategi dan pembelian dan kepemilikan.
Performa strategi dapat diverifikasi lebih lanjut dengan cara membandingkan dengan lebih banyak acuan, memperkenalkan lebih banyak metode statistik, dan sebagainya. Logika perbandingan dalam strategi juga perlu disesuaikan jika indikator pengembalian pembelian dan kepemilikan setelah upgrade platform perdagangan menghasilkan deviasi yang lebih besar.
Strategi ini dapat dioptimalkan dalam beberapa hal:
Menambahkan lebih banyak referensi untuk perbandingan tiga atau banyak pihak. Misalnya, Anda dapat menambahkan perbandingan indeks peer-to-peer atau benchmark industri.
Menambahkan lebih banyak indikator statistik, seperti tingkat kemenangan per tahun, per kuartal, perbedaan waktu maksimum penarikan, dan lain-lain. Ini memungkinkan kita untuk memahami strategi dari dimensi yang lebih besar.
Menambahkan konfigurasi parametrisasi. Mengizinkan pengguna untuk menyesuaikan lebih banyak di luar periode waktu yang dibandingkan, seperti membandingkan benchmark, indikator statistik, dan sebagainya.
Presentasi grafik yang dioptimalkan. Presentasi garis-garis sederhana saat ini mungkin sulit untuk membandingkan strategi dengan pembelian yang dimiliki pada titik waktu tertentu, pertimbangkan untuk menggambar grafik pilar atau menambahkan tanda untuk meningkatkan keterbacaan.
Strategi ini memungkinkan kita untuk memahami dengan sangat jelas dan menyeluruh perbedaan antara strategi kustom dan strategi buy and hold yang sederhana dengan merancang beberapa indikator perbandingan yang terperinci dan tampilan grafik yang intuitif, sehingga membantu kita untuk meningkatkan kinerja strategi. Periode perbandingan yang dapat disesuaikan juga memungkinkan kita untuk secara fleksibel menganalisis keunggulan dan kelemahan strategi pada berbagai tahap.
Strategi ini dapat menjadi alat analisis strategi yang sangat kuat jika terus diperkaya dengan perbandingan, indikator statistik, dan presentasi grafik. Ini memberi kita template dan kerangka kerja yang membuat analisis dan perbaikan strategi menjadi lebih efisien.
/*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)