Nowe funkcje w Pine Script®: realistyczne backtesty na wykresach Heikin Ashi, wbudowane funkcje dostępu do informacji o symbolach i więcej

Jun 30, 2023

To nie lada wyzwanie, żeby stale dodawać do naszego języka programowania nowych ulepszeń, o które wnioskujecie. W tym poście omawiamy nasze najważniejsze najnowsze dodatki, więc lepiej ich nie przegap.

Bardziej realistyczne testy historyczne na wykresach Heikin Ashi

Backtesty na wykresach Heikin Ashi zazwyczaj dawały niewiarygodne wyniki testu historycznego, ponieważ emulator brokera zawsze wypełnia zlecenia na podstawie cen wykresu, które w przypadku wykresów HA są syntetyczne. Nowa funkcja o nazwie „Wypełnij zlecenia przy użyciu standardowego OHLC” łagodzi ten problem. W przypadku użycia strategii działających na wykresach HA będą realizować zlecenia po rzeczywistych cenach rynkowych, co dokładniej symuluje zachowanie strategii w czasie rzeczywistym.

Użytkownicy strategii mogą włączyć tę funkcję w zakładce „Właściwości” strategii. Domyślnie ta funkcja jest wyłączona.

Zauważ, że zmienia to tylko zachowanie strategii działających na wykresach HA. Na innych typach wykresów syntetycznych, takich jak Renko, weryfikacja historyczna będzie nadal wypełniać zlecenia po cenach wykresów syntetycznych, niezależnie od ustawień funkcji.

Nowy parametr display dla funkcji input.*()

Nowy parametr display zapewnia większą kontrolę nad wyświetlaniem wartości wejściowych obok nazwy skryptu. Można użyć czterech argumentów: display.status_line, display.data_window, display.all oraz display.none. Kombinacje argumentów ze znakami plusa lub minusa są dozwolone i niezależnie od użytego argumentu wartości wejściowe nadal zawsze będą pojawiać się w zakładce „Wejścia” w ustawieniach skryptu.

Nowy parametr umożliwia ukrycie wartości wejściowych w linii stanu, gdy normalnie by się tam pojawiły, lub wyświetlenie wartości wejściowych, które normalnie byłyby ukryte, a mianowicie wejść boolowskich, kolorowych lub dat. Korzystając z nowego parametru, możesz również wyświetlać dane wejściowe obok nazwy skryptu w oknie danych. Domyślne wyświetlanie wejść pozostaje niezmienione, gdy parametr nie jest używany.

//@version=5

indicator("RSI")

rsiLengthInput = input.int(14, minval=1, title="RSI Length", display=display.data_window+display.status_line)

rsiSourceInput = input.source(close, "Source", display=display.data_window)

rsi = ta.rsi(rsiSourceInput, rsiLengthInput)

plot(rsi, "RSI")

Nowe wbudowane funkcje dostępu do informacji o instrumencie

Do syminfo dodaliśmy trzy wbudowane elementy: syminfo.sector, syminfo.industry oraz syminfo.country. Zwracają one łańcuchy dostarczające więcej informacji o bieżącym symbolu. Informacje o kraju są podane w formacie ISO 3166-1 alpha-2.

Wyłączenie alertów dla zrealizowanych zleceń w strategiach

Możesz teraz wyłączyć powiadomienia dla poszczególnych zleceń w strategiach, używając disable_alert = true w funkcjach służących do tworzenia tych zleceń. Na przykład:

//@version=5
strategy("My strategy", overlay=true)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
    strategy.entry("Long", strategy.long, alert_message = "Go Long!")
    strategy.exit("Exit", "Long", profit = 300, loss = 100, disable_alert = true)

Jest to przydatne do odfiltrowania określonych zleceń, gdy używasz funkcji alert() do generowania niestandardowych komunikatów dla powiadomień lub elementów webhook podczas wykonywania strategii.

Zmiana kalkulacji dla maksymalnego drawdown’u i run-up’u w strategiach

Obliczenia maksymalnego drawdown’u i maksymalnego run-up’u zostały ulepszone, aby uwzględnić potencjalny kapitał, który można było osiągnąć w ramach transakcji. Wcześniej brano pod uwagę tylko wartości kapitałowe w punktach wejścia i wyjścia, co mogło skutkować, że wartości maksymalnego drawdown’u i run-up’u, mogły nie odpowiadać ich maksymalnym potencjalnym wartościom. Nowe metody są wyjaśnione w artykułach Centrum Pomocy dotyczących maksymalnego drawdown’umaksymalnego run-up’u.

Obsługa modyfikatora varip w typach zdefiniowanych przez użytkownika

Modyfikator varip, który pozwala zmiennym zachowywać wartości między każdym wykonaniem skryptu na tym samym pasku, można teraz zastosować do pól typów zdefiniowanych przez użytkownika. Zauważ, że pola nie zdefiniowane przy użyciu varip zostaną cofnięte na każdym słupku, więc wartości przypisane im podczas wielokrotnych wykonań na tym samym słupku nie zostaną zachowane, nawet jeśli obiekt je zawierający został utworzony za pomocą varip.

Na przykład:

//@version=5
indicator("`varip` field")

type TypeWithVaripField
    varip int varipCounter = 0
    int counter = 0

varip TypeWithVaripField myCounter = TypeWithVaripField.new(0)
// This field preserves values between script executions.
myCounter.varipCounter := myCounter.varipCounter + 1
// This field does not because it wasn't declared using `varip`.
myCounter.counter := myCounter.counter + 1

plot(myCounter.varipCounter, "myCounter.varipCounter")
plot(myCounter.counter, "myCounter.counter")

Żądanie przeliczenia waluty

Wprowadziliśmy nową funkcję request.currency_rate() która pozwala pobrać kurs wymiany z jednej waluty na inną. Ta funkcja wymaga dwóch parametrów: from i to, z których każdy jest trzyliterowym ciągiem znaków zgodnie z normą ISO 4217.

Oto przykład, jak użyć go do przeliczenia ceny instrumentu na funty brytyjskie (GBP):

//@version=5
indicator("Close in British Pounds")
rate = request.currency_rate(syminfo.currency, "GBP")
plot(close * rate)

Nowe funkcje na tablicy przestrzeni nazw

Dodano cztery nowe funkcje dla tablic:

  • array.first() — zwraca pierwszy element tablicy.
  • array.last() — zwraca ostatni element tablicy.
  • array.every() — zwraca true, jeśli każdy element tablicy to true; w przeciwnym razie zwraca false.
  • array.some() — zwraca true, jeśli przynajmniej jeden element tablicy to true, w przeciwnym razie zwraca wartość false.

Aby być na bieżąco z nowymi funkcjami Pine Script®, miej oko na Informacje o wydaniu Podręcznika Uzytkownika. Konto PineCoders transmituje również aktualizacje ze swojego Squawk Box’a na Telegramie, swojego konta na Twitterze i z publicznego czatu Pine Script® Q&A na TradingView.

Wierzymy, że te bardzo pożądane funkcje są dla Ciebie przydatne i prosimy o dalsze przesyłanie nam opinii i sugestii,  abyśmy mogli uczynić platformę najlepszą z możliwych. Tworzymy TradingView dla Ciebie i zawsze chętnie wysłuchamy Twoich opinii.

Zespół TradingView

Look first Then leap

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