Präziseres Backtesting mit der Balkenlupe

May 30, 2022

Premium-Kunden können jetzt realistischere Auftragserfüllungen in ihren Strategie-Backtests erzielen, indem sie die Option Balkenlupe verwenden. Dieses Tool nutzt die Inspektion innerhalb eines Balkens, um die Preisbewegung innerhalb eines Balkens genauer zu erfassen und so präzisere Orderausführungen zu ermöglichen. Wenn Sie diese Option auswählen, ersetzt der Balkenlupenr-Modus die Annahmen, die der Broker-Emulator über die Preisbewegung machen muss, durch die OHLC-Werte für historische Balken.

Der Intrabar-Zeitrahmen, der mit der Balkenlupe verwendet wird, passt sich dynamisch an den Zeitrahmen des Charts an. In dieser Tabelle finden Sie den Intrabar-Zeitrahmen, der für immer höhere Chart-Zeitrahmen verwendet wird:

Chart Zeitraum, T Verwendeter Intrabar Zeitraum
1S < T < 30S 1S
30S <= T < 5 5S
5 <= T < 30 15S
30 <= T < 60 1
60 <= T < 240 5
240 <= T < D 15
D <= T < W 60
W <= T < 2W 120
T >= 2W D

Tabelle 1. Verwendete Intrabar-Zeiträume

Hier sehen Sie ein Beispiel für eine Strategie, die eine Stop-Order verwendet, ohne die Option Balkenlupe zu nutzen:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

Der Broker-Emulator platziert eine Stop-Order auf Bar #10381 und führt eine Order mit einem Preis von 157,0 auf dem nächsten Balken aus, sobald die Bedingung des Stop = 157.0 erfüllt ist. Der Broker-Emulator geht davon aus, dass der Kurs innerhalb des Balkens selbst von “close auf “low, dann auf “high (was die Ausführung auslöst) und dann auf “closegeht. Nach einigen Balken (11 Tage für den aktuellen Zeitrahmen) wird die Bedingung zum Verlassen der Position mit dem Stoppkurs = 156.0 ausgelöst:

Wenn die Balkenlupe aktiviert ist (Parameter use_bar_magnifier = true), bleiben Ausstiegs- und Einstiegskurs unverändert; der Ausstieg aus der Position erfolgt jedoch innerhalb desselben Balkens, in dem der Einstieg erfolgte:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

Wenn wir uns den unteren Zeitrahmen für dasselbe Symbol ansehen (einen 60-Minuten-Chart, gemäß der Tabelle 1. Verwendete Intrabar-Zeiträume) und den Zeitbereich finden, der dem Balken 10382 entspricht, können wir sehen, dass der Kurs auf dem stündlichen Zeitrahmen nach dem Erreichen von 157.0 und dem Auslösen des Einstiegs unter 156.0 fällt, wodurch die Bedingung stop = 156.0 erfüllt ist:

Wenn die Balkenlupe aktiviert ist, erhält der Broker-Emulator während des Backtestings Zugang zu den Kursänderungen in den niedrigeren Zeitrahmen, so dass sein Verhalten eher dem ähnelt, was beim Forward-Testing der Strategie für denselben Zeitraum passieren würde.

Hier ein Beispiel für eine Strategie, die niedrigere Zeitrahmen verwendet, um präzisere Ausfüllungen bei Limit- und Stop-Orders zu erreichen:

//@version=5
strategy(
 title                  =   "Magnifier On",
 overlay                =   true, 
 calc_on_order_fills    =   true,
 calc_on_every_tick     =   true,
 precision              =   3, 
 default_qty_type       =   strategy.cash, 
 currency               =   currency.USD, 
 default_qty_value      =   1000, 
 initial_capital        =   1000,
 use_bar_magnifier      =   true)

trailPoints = input.int(150, "Trail Points (in ticks)")
trailOffset = input.int(100, "Trail Offset (in ticks)")
stopSize    = input.int(300, "Stop Offset (in ticks)")

longCondition = bar_index % 25 == 0 and not (strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index)

if (longCondition)
    strategy.entry("Long", strategy.long)

strategy.exit("Exit", loss = stopSize, trail_points = trailPoints, trail_offset = trailOffset)

Mit der aktivierten Balkenlupe sind die Ergebnisse der Strategie näher an dem, was sie in Echtzeit sein würden. Die Gewinne unserer Teststrategie sind um 50 % schlechter, wenn die Option aktiviert ist. Das ist entmutigend für die Strategie selbst, zeigt aber, wie wichtig die Verwendung von Daten mit niedrigerem Zeitrahmen sein kann, um genauere Backtesting-Daten zu erhalten:

Die Option Balkenlupe kann durch Umschalten der entsprechenden Eingabe im Fenster „Einstellungen/Eigenschaften“ der Strategie umgeschaltet werden:

Wenn Sie die Option ausschalten, wird die Strategie mit der alten Logik neu berechnet, was uns weniger genaue Informationen über das Verhalten der Strategie liefert:

Um auch weiterhin über neue Pine-Funktionen informiert zu bleiben, sollten Sie die Versionshinweise im Benutzerhandbuch im Auge behalten. Der PineCoders-Account sendet auch Updates über seinen Squawk Box Telegram-Kanal, dem Twitter-Konto und den öffentlichen Chat „Pine Script™ Q&A“ auf TradingView.

Wir hoffen, dass Sie diese Verbesserungen nützlich finden. Bitte senden Sie uns weiterhin Ihr Feedback. Wir entwickeln TradingView für unsere Nutzer und freuen uns, von Ihnen zu hören.

Look first Then leap

TradingView wurde für Sie entwickelt. Stellen Sie sicher, dass Sie unsere fantastischen Features optimal nutzen
Chart öffnen