
Эта стратегия использует подробные индикаторы и графики, чтобы визуально сравнить данную стратегию с доходами от покупки или владения торгуемыми ценными бумагами.
Основная логика стратегии заключается в том, чтобы изобразить четыре ключевых элемента для сравнения различий между данной стратегией и стратегией покупки и владения:
Сравнивая эти четыре фактора, можно четко и интуитивно понять преимущества и недостатки стратегии по сравнению с простой покупкой и владением.
По сравнению с простым сравнением покупать и держать прибыль, эта стратегия имеет следующие преимущества:
Более полные и детальные сравнительные показатели. Сравнение по каждой K-линии, сравнение общей статистики и т. д. позволяют нам более четко понять, где стратегия выигрывает или проигрывает покупке и удержанию.
Интуитивно понятные сравнительные диаграммы. Графики, на которых изображены чистая прибыль стратегии, чистая прибыль покупки и хранения и разница между ними, позволяют нам визуально быстрее оценивать эффективность стратегии.
Настраиваемые временные промежутки сравнения. Мы можем выбрать, чтобы сосредоточиться только на сравнении стратегии с покупкой и владением в определенный период времени, чтобы лучше анализировать эффективность стратегии.
Простая и удобная в использовании. Политика включает в себя полную логику сравнения, нам просто нужно заменить свой собственный код политики на соответствующее место в шаблоне.
Стратегия основывается на сравнении показателя прибыли от покупок и владений, встроенного в торговую платформу. Если встроенный показатель имеет отклонения, это может повлиять на конечный результат сравнения. Кроме того, методы расчета статистических показателей в стратегии могут быть ошибочными и не могут полностью точно отражать сравнение между стратегией и покупательскими владениями.
Можно проверить эффективность стратегии, например, путем сравнения с большим количеством критериев и внедрения большего количества статистических методов. Если после обновления торговой платформы наблюдается большое отклонение от показателя прибыли от покупки и владения, необходимо скорректировать логику сравнения в стратегии.
Эта стратегия может быть оптимизирована в следующих аспектах:
Добавление большего количества критериев для трехстороннего или многостороннего сравнения. Например, можно добавить сравнение с аналогичными индексами или отраслевыми показателями.
Добавление дополнительных статистических показателей, таких как годовая, квартальная победа, максимальная разница во времени отмены и т. д. Это позволяет нам понимать стратегию в большем количестве измерений.
Добавлена параметрическая конфигурация, позволяющая пользователю настраивать больше, чем только временные промежутки для сравнения, например, сравнение с базовыми и статистическими показателями.
Оптимизация графического отображения. В настоящее время простое отображение диаграммы может быть затруднено, чтобы увидеть, в каких конкретных точках времени стратегия сравнивается с покупкой и владением. Можно рассмотреть возможность изображения столбиковых диаграмм или добавления знаков для улучшения читаемости.
Эта стратегия позволяет нам очень четко и всесторонне понять различия между пользовательской стратегией и простой стратегией покупки и владения, разработав несколько подробных сравнительных показателей и интуитивное графическое отображение, что помогает нам лучше улучшить эффективность стратегии. Его настраиваемые сравнительные периоды времени также позволяют нам гибко анализировать преимущества и недостатки стратегии на разных этапах.
Если продолжить обогащать сравнительные критерии, статистические показатели и графическое представление, стратегия может стать чрезвычайно мощным инструментом стратегического анализа. Она предоставляет нам шаблон и структуру, которая делает работу по анализу и улучшению стратегии более эффективной.
/*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)