Czym jest tryb backtesting na Bar Magnifier?

Subskrybenci Premium  mogą uzyskać bardziej realistyczne wypełnienia zamówień w swoich testach historycznych strategii, korzystając z opcji Bar Magnifier. To narzędzie wykorzystuje kontrolę intrabar w celu uzyskania głębszej szczegółowości ruchu ceny w obrębie słupka, co pozwala na bardziej precyzyjne wypełnianie zleceń. Po wybraniu tryb Bar Magnifier zastępuje założenia , które emulator brokera musi przyjąć w przypadku ruchu ceny dla słupków historycznych tylko wartościami OHLC. 

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 tworzy zlecenie stop na słupku #10381 i wypełnia zlecenie z ceną 157,0 na następnym słupku, gdy tylko spełniony zostanie warunek stop = 157,0. Wewnątrz samego słupka cena przesuwa się od otwarcia do minimum, następnie do maksimum (otwarcie pozycji) i zamknięcia. Po kilku słupkach (11 dni dla aktualnego przedziału czasowego) wyzwalany jest warunek wyjścia z pozycji z ceną stop = 156,0:

Gdy funkcja uszczegółowienia słupka jest włączona (parametr use_bar_magnifier = true), cena wejścia i wyjścia z pozycji nie ulega zmianie, jednak wyjście z pozycji następuje w obrębie tego samego słupka, na którym znajduje się wejście do pozycji:

//@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 wyświetlisz wykres z niższym interwałem czasowym (60-minutowy interwał wg Tabeli 1) dla tego instrumentu przez czas odpowiadający słupkowi 10382, widać, że cena zmienia się na interwale godzinowym, spełniając warunek stop = 156,0:

W sekcji historycznej emulator strategii uzyskuje dostęp do zmian cen w niższych interwałach, tak jakby działo się to w czasie rzeczywistym dla bieżącego słupka podczas testowania strategii.

Funkcję można włączyć i wyłączyć za pomocą odpowiedniego pola wyboru w oknie parametrów strategii:

Zauważ, że ta opcja ma ograniczenie: strategia może zażądać nie więcej niż 100 000 słupków z dolnego przedziału czasowego. Może to dotyczyć symboli z dużą ilością danych historycznych (gdzie Liczba Śłupków Na Wykresie * Liczba Słupków Niższych Ram zasowych Na Słupek Wykresu > 100000), wskaźnik powiększający słupka może nie mieć wpływu na pierwsze transakcje na wykresie. Liczbę słupków, począwszy od końca wykresu, na które może mieć wpływ lupa słupków, można z grubsza obliczyć jako:

last_bar_index - (100000 / ( 1 / Num of Lower Timeframe Bars per Chart Bar)

Otrzymana wartość będzie przybliżeniem, ponieważ liczba słupków niższych ram czasowych może się różnić w z słupka na słupek.