Dokładniejsze backtesty za pomocą funkcji Bar Magnifier

May 30, 2022

Posiadacze kont Premium mogą teraz doświadczyć bardziej realistycznej realizacji zleceń podczas testowania swoich strategii za pomocą funkcji The Bar Magnifier. To narzędzie wykorzystuje kontrolę intrabar w celu uzyskania głębszej szczegółowości ruchu ceny w obrębie słupka. Pozwala to na wykonywanie zleceń z większą dokładnością. Po wybraniu trybu Bar Magnifier, zastępuje on założenia, które emulator brokera musi przyjąć w przypadku ruchu ceny, jedynie wartościami OHLC dla słupków historycznych.

Ramy czasowe intrabar używane z lupą (Bar Magnifier) dynamicznie dopasowują się do ram czasowych wykresu. Poniższa tabela przedstawia ramy czasowe intrabar używane do coraz wyższych ram czasowych wykresu:

Ramy czasowe wykresu, T Wykorzystane ramy czasowe intrabar
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

Tabela 1. Zastosowane ramy czasowe intrabar

Oto przykład strategii, która wykorzystuje zlecenie stop bez użycia opcji Bar Magnifier:

//@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)

Emulator brokera umieszcza zlecenie stop na słupku #10381 10381 i wypełnia zlecenie z ceną 157,0 na następnym słupku, gdy tylko warunek stop = 157.0 zostanie spełniony. Emulator brokera szacuje, że wewnątrz samego słupka cena przechodzi od “close do “low, następnie do “high (powodując wejście), a następnie do “close. ”. Po kilku słupkach (11 dni dla bieżącego przedziału czasowego) wyzwalany jest warunek wyjścia z pozycji z stop price = 156.0:

Gdy funkcja Bar Magnifier jest włączona (parametr use_bar_magnifier = true), ceny wyjścia i wejścia pozostają niezmienione; jednak wyjście z pozycji następuje wewnątrz tego samego słupka, w którym nastąpiło wejście:

//@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)

Jeśli sprawdzimy wykres na niższym przedziale czasowym dla tego samego symbolu (wykres 60-minutowy, zgodnie z tabelą przedziałów czasowych intrabar) i znajdziemy przedział czasu odpowiadający słupkowi 10382, zobaczymy, że na przedziale godzinowym, po osiągnięciu 157.0 i uruchomieniu wejścia, cena spada poniżej 156.0, spełniając warunek stop = 156.0 :

Po włączeniu Bar Magnifier emulator brokera uzyskuje dostęp do zmian cen z niższych ram czasowych podczas backtestów, dzięki czemu jego zachowanie jest bardziej podobne do tego, co miałoby miejsce podczas testowania strategii w tym samym okresie.

Poniżej możesz zobaczyć przykład strategii, która wykorzystuje niższy interwał, aby uzyskać dokładniejsze wypełnianie zlecenia limit i stop:

//@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)

Przy włączonej opcji Bar Magnifier wyniki strategii są bliższe tym, jakie byłyby w czasie rzeczywistym. Zyski z naszej strategii testowej są o 50% gorsze, gdy jest ona włączona, co jest ogólnie zniechęcające w przypadku strategii, ale pokazuje, jak ważne może być użycie danych z niższych ram czasowych dla uzyskania dokładniejszych danych z testów historycznych:

Opcję Bar Magnifier można zmienić, przełączając odpowiednie dane wejściowe w oknie „Ustawienia/Właściwości” strategii:

Po wyłączeniu opcji strategia jest przeliczana zgodnie ze starą logiką, pokazując nam mniej dokładne informacje o zachowaniu strategii:

Aby być na bieżąco z nowymi funkcjami Pine, zapoznaj się z informacjami w Podręczniku Użytkownika. Konto PineCoders transmituje również aktualizacje z kanału Squawk Box na Telegramie, konta na Twitterze oraz z publicznego czatu „Pine Script™ Q&A” na TradingView.

Mamy nadzieję, że te ulepszenia okażą się przydatne. Prosimy o dalsze przesyłanie nam swoich opinii. Tworzymy TradingView dla naszych użytkowników i uwielbiamy kontakt z Wami.

Look first Then leap

TradingView jest stworzony dla Ciebie. Upewnij się, że w pełni wykorzystujesz nasze niesamowite funkcje
Otwórz wykres