Właściwości strategii

Każda strategia napisana w Pine posiada szereg właściwości, które określają jej zachowanie: 

  1. Kapitał początkowy,
  2. Waluta bazowa,
  3. Wielkość zlecenia,
  4. Piramidowanie,
  5. Prowizja,
  6. Sprawdź cenę dla zleceń z limitem,
  7. Poślizg,
  8. Margin
  9. Przelicz ponownie

 Znajdziesz je w ustawieniach strategii, w zakładce Właściwości:


Każdy z parametrów określonych we właściwościach strategii może być zmieniony poprzez edycję argumentów wywołania funkcji strategy() w kodzie Pine odpowiedniej strategii:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

Przyjrzyjmy się teraz każdemu parametrowi wejściowemu w menu Właściwości i odpowiadającemu mu parametrowi w języku Pine:

1 - Kapitał początkowy (parametr: initial_capital) odpowiada za saldo początkowe strategii ustalone w Walucie bazowej. Wartość domyślna tego parametru to 100,000. W przypadku niektórych symboli może się okazać, że ta wartość musi zostać zwiększona, aby transakcje mogły być zrealizowane.

2 - Waluta bazowa (parametr: currency) określa walutę używaną do obliczeń. Wyniki pojawiające się w zakładce Tester Strategii (zysk, strata, obsunięcie kapitału itp.) są wyrażone w tej walucie. Dostępne opcje to:

Domyślnie, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Jeśli wybrano opcję Domyślnie, strategia użyje domyślnej waluty dla tego symbolu i nie wystąpi przewalutowanie.

3 - Wielkość zlecenia (parametry: default_qty_value, default_qty_type). Należy podać wartość oraz tryb obliczania. Należy pamiętać, że obliczone wartości mogą podlegać ograniczeniom wynikającym z minimalnych wartości transakcji dla danego symbolu:

  • Kontrakty (argument: strategy.fixed) - strategia otworzy określoną liczbę kontraktów/akcji/lotów.
  • Kwota w walucie (argument: strategy.cash) - strategia otworzy pozycję, której wielkość określa wybrana kwota w walucie bazowej.
  • Procent kapitału (argument: strategy.percent_of_equity) - wielkość pozycji będzie obliczana jako procent dostępnego kapitału w momencie otwarcia transakcji. Możesz określić wartość większą niż 100%.

4 - Piramidowanie (parametr: pyramiding) określa maksymalną liczbę dozwolonych kolejnych transakcji w tym samym kierunku. Kiedy piramidowanie jest wyłączone, strategia może otworzyć tylko jedną długą lub krótką pozycję, nawet jeśli warunki wejścia są spełnione. Piramidowanie wpływa tylko na transakcje dokonywane przy użyciu funkcji strategy.entry(). Parametr nie ma wpływu na zlecenia utworzone za pomocą strategy.order().

5 - Prowizja (parametry: commission_typecommission_value). To jest kwota prowizji do zapłaty za każdą transakcję. Należy podać wartość i sposób obliczania. Zwróć uwagę, że prowizja jest pobierana zarówno przy otwarciu jak i zamknięciu transakcji, a w przypadku użycia wartości procentowej, obliczona prowizja będzie się zmieniać w zależności od wartości transakcji:

  • Procent od wartości transakcji (argument: strategy.commission.percent) - nakłada prowizję od każdej transakcji w wysokości określonej wartości procentowej.
  • Waluta od kontraktu (argument: strategy.commission.cash_per_contract) - nakłada prowizję od każdego kontraktu.
  • Waluta od zlecenia (argument: strategy.commission.cash_per_order) - nakłada prowizję od każdego zlecenia.

6 - Sprawdź cenę dla zleceń z limitem (parametr: backtest_fill_limits_assumption) zaostrza warunki otwarcia pozycji przy użyciu zleceń z limitem ceny. Domyślnie wartość ta wynosi 0, co oznacza, że zlecenia z limitem ceny są realizowane na danych historycznych w momencie osiągnięcia ceny wskazanej w zleceniu. Jeżeli parametr nie jest równy zero, wówczas zlecenia z limitem ceny mogą zostać zrealizowane w ramach danego słupka tylko wtedy, gdy cena rynkowa przekroczyła poziom zlecenia z limitem ceny o określoną liczbę ticków.

7 - Poślizg (parametr: slippage) określa liczbę ticków, które są dodawane do ceny realizacji zlecenia typu market lub zlecenia stop. 

8 - Margin dla pozycji długich i krótkich (parametry: margin_long, margin_short) depozyt zabezpieczający wymagany do utrzymania pozycji. Jeśli nie ma wystarczającej ilości środków, następuje wezwanie do uzupełnienia depozytu zabezpieczającego, co powoduje przymusowe zamknięcie części lub wszystkich pozycji zleceniem typu market, aż dostępne środki będą wystarczające na utrzymanie pozycji.

9 - Przelicz ponownie pozwala określić, jak często strategia powinna być przeliczana. Domyślnie, strategia jest przeliczana na zamknięciu każdego słupka, ale używając poniższych opcji, może być również przeliczana:

  • Po realizacji zlecenia (parametr: calc_on_order_fills) - pozwala strategii na wykonanie dodatkowej kalkulacji wewnątrz słupka zaraz po realizacji zlecenia. Ta dodatkowa kalkulacja ma miejsce zarówno na słupkach historycznych jak i w czasie rzeczywistym.
  • Przy każdym ticku (parametr: calc_on_every_tick). Domyślnie strategie dokonują obliczeń wyłącznie na zamknięciu słupków w czasie rzeczywistym. Ten parametr pozwala strategii dokonywać obliczeń przy każdej aktualizacji słupka w czasie rzeczywistym, jak w przypadku wskaźnika. Zwróć uwagę, że po odświeżeniu strony wszystkie dane tickowe zostaną utracone, więc strategie korzystające z tej opcji będą podlegały zjawisku repaintingu. Ten parametr nie ma wpływu na zachowanie strategii na słupkach historycznych. Należy również pamiętać, że strategie używające tej opcji nie będą pokazywać realistycznych wyników na słupkach historycznych, ponieważ nie zawierają one danych tickowych.