
Die Strategie vergleicht intuitiv die Kauf- und Ertragsergebnisse einer gegebenen Strategie mit den gehandelten Wertpapieren anhand detaillierter Indikatoren und Diagramme.
Die Kernlogik der Strategie besteht darin, die Unterschiede zwischen einer gegebenen Strategie und einer Buy-and-Hold-Strategie in vier Schlüsselelementen abzubilden:
Durch den Vergleich dieser vier Elemente können die Vor- und Nachteile von Strategien und einfachen Kauf- und Halte-Strategien klar und intuitiv verstanden werden.
Diese Strategie hat folgende Vorteile gegenüber einfachen Buy-and-Hold-Earnings:
Umfassendere und detailliertere Vergleichsmessgrößen, einschließlich eines Vergleichs auf jeder K-Linie und eines Vergleichs der Gesamtstatistiken, ermöglichen es uns, besser zu verstehen, wo die Strategie gewonnen oder verloren hat.
Intuitive Vergleichsdiagramme. Durch die Darstellung der Strategie Net Profit, Kauf Net Profit Halt und die Differenz zwischen den beiden Diagrammen können wir die Strategie-Performance visuell schneller beurteilen.
Benutzerdefinierte Vergleichszeiträume. Wir können uns entscheiden, nur den Vergleich der Strategie mit den Kauf-Holdings in einem bestimmten Zeitraum zu betrachten, um die Performance der Strategie besser zu analysieren.
Einfach und benutzerfreundlich. Die Strategie hat eine komplette Vergleiche-Logik eingebaut, und wir müssen nur unseren eigenen Strategie-Code für die entsprechende Position in der Vorlage ersetzen.
Die Strategie verlässt sich hauptsächlich auf den in der Handelsplattform enthaltenen Kauf-Halt-Einkommen-Indikator. Wenn dieser eingebaute Indikator abweichend ist, beeinflusst dies die endgültigen Vergleichsergebnisse. Darüber hinaus können die Berechnungsmethoden für die statistischen Indikatoren in der Strategie fehlerhaft sein und den Vergleich zwischen der Strategie und den Kauf-Haltungen nicht hundertprozentig genau widerspiegeln.
Die Performance einer Strategie kann durch Vergleiche mit mehr Benchmarks und durch die Einführung von mehr statistischen Methoden weiter verifiziert werden. Die Vergleiche müssen auch angepasst werden, wenn nach der Aktualisierung der Handelsplattform eine größere Abweichung bei den Kauf-Holding-Ertragsindikatoren auftritt.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Mehr Benchmarks für Drei- oder Mehrparteienvergleiche. Zum Beispiel kann ein Vergleich mit einem Peer-to-Peer-Index oder einem Branchenindikator hinzugefügt werden.
Mehr statistische Kennzahlen hinzugefügt werden, z. B. die jährliche, die vierteljährliche Gewinnrate, die maximale Differenz zwischen den Rückzugszeiten usw. Damit können wir die Strategie in mehr Dimensionen verstehen.
Die Parameterkonfiguration wurde hinzugefügt. Die Benutzer können zusätzliche Inhalte außerhalb des Vergleichszeitraums anpassen, z. B. Benchmarks, Statistiken usw.
Optimierte Darstellung der Diagramme. Die derzeit einfache Darstellung der Linienkarten kann es schwierig machen, die Strategie mit dem Kauf zu vergleichen, an welchen spezifischen Zeitpunkten der Kauf gehalten wurde. Es kann in Erwägung gezogen werden, eine Säulenkarte zu zeichnen oder Markierungen hinzuzufügen, um die Lesbarkeit zu verbessern.
Die Strategie erlaubt es uns, die Unterschiede zwischen einer benutzerdefinierten Strategie und einer einfachen Kauf-Hold-Strategie sehr klar und umfassend zu verstehen, indem sie mehrere detaillierte Vergleichsindikatoren und eine intuitive Grafik darstellt. Dadurch können wir die Leistung der Strategie besser verbessern. Die benutzerdefinierten Vergleichszeiten ermöglichen es uns auch, die Vor- und Nachteile der Strategie in verschiedenen Phasen flexibel zu analysieren.
Wenn wir die Benchmarks, die Statistiken und die Grafiken weiter verfeinern, kann die Strategie ein äußerst leistungsfähiges Instrument für die Strategieanalyse sein. Sie bietet uns eine Vorlage und einen Rahmen, um die Strategieanalyse und -verbesserung effizienter zu gestalten.
/*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)