Komunikat alertu bota handlowego 2.0 – Specyfikacje

Opublikowano 30 sie 2023Zaktualizowano 4 kwi 202418 min czytania

Spis treści

Wprowadzenie

Wraz z uruchomieniem botów Signal, użytkownicy TradingView mogą teraz publikować swoje sygnały i tworzyć boty Signal na OKX. W tym przewodniku omówimy różne specyfikacje komunikatów ostrzegawczych, które OKX obsługuje dla użytkowników.

Dla tych, którzy są dobrze zorientowani w PineScript i polegają wyłącznie na skryptach strategicznych do wysyłania sygnałów, skrupulatnie zaprojektowaliśmy ekskluzywny format specyfikacji. Format ten płynnie integruje symbole zastępcze strategii PineScript, umożliwiając przesyłanie sygnałów transakcyjnych z niezwykłą łatwością. Jeśli jesteś natywnym użytkownikiem strategii PineScript, ten format jest idealnym towarzyszem, zapewniając usprawnione podejście do łączenia skryptów strategii z symbolami zastępczymi strategii TradingView. Jeśli jesteś autorem strategii i używasz funkcji strategy.*() do tworzenia sygnałów transakcyjnych, przejdź do [Sekcja A – dla użytkowników strategii PineScript] (#section-a-pinescript-strategy-users) poniżej.

Z drugiej strony rozumiemy, że nie każdy polega wyłącznie na skryptach strategii PineScript. W Sekcji B – Uniwersalna kompatybilność tego przewodnika, zapewniamy wszechstronny zestaw specyfikacji, które wykraczają poza metody skryptowe. Specyfikacje te działają dla wszystkich metod generowania sygnału. Niezależnie od tego, czy korzystasz z niestandardowych wskaźników, różnych technik tworzenia wykresów, czy nawet preferujesz ręczne alerty, ta „uniwersalna” struktura specyfikacji zapewni Ci ochronę.

Ekspresowy przegląd Pine Script: „Strategia” a „Wskaźnik”

Strategie Pine Script służą do przeprowadzania backtestingu na danych historycznych, a także testów terminowych na rynkach rzeczywistych. Oprócz wykonywania obliczeń wskaźników, strategie zawierają wywołania funkcji strategy.*(), które przesyłają zlecenia handlowe do emulatora brokera Pine Script. Ten emulator może następnie symulować wykonanie tych poleceń. Wyniki testów historycznych są wizualizowane w karcie „Tester strategii” znajdującej się w dolnej części wykresu, obok zakładki „Edytor Pine Script”.

Sekcja A – przegląd ekspresowy 1

Z drugiej strony, wskaźniki Pine Script również wymagają obliczeń, ale nie są przeznaczone do użytku w scenariuszach backtestingowych. Ze względu na ich niezależność od emulatora brokera, wskaźniki zużywają mniej zasobów i działają szybciej.

Sekcja A – przegląd ekspresowy 2

Ważne jest, aby pamiętać, że masz swobodę korzystania z formatu w sekcji A lub w sekcji B – oba są w pełni kompatybilne Na podstawie przesyłanych wiadomości system inteligentnie rozpozna używany format i odpowiednio przeanalizuje wiadomości. To inteligentne przetwarzanie zapewnia płynne działanie niezależnie od wybranego podejścia.

Sekcja A (Użytkownicy strategii PineScript)

Poniższe specyfikacje są specjalnie dostosowane do użytkowników, którzy tworzą swoje algorytmy przy użyciu strategii PineScript, a głównie funkcji strategy.*. Ten format jest przeznaczony do obsługi wartości zastępczych strategii, zapewniając płynną adaptację. Aby lepiej zrozumieć skrypty strategii i proces wysyłania alertów przy użyciu zmiennych zastępczych strategii, można znaleźć dodatkowe informacje pod tym adresem link.

Jeśli ta koncepcja nie jest ci znana, sekcja B zapewnia alternatywne podejście do konstruowania alertów, mające zastosowanie do szerszego zakresu scenariuszy.

Przegląd specyfikacji AlertMsg

Parametr
Wymagane
Wartości
id
Wymagane
  • {{strategy.order.id}} z TradingView

action
Wymagane
  • {{strategy.order.action}} z TradingView

marketPosition
Wymagane
  • {{strategy.market_position}} z TradingView

prevMarketPosition
Wymagane
  • {{strategy.prev_market_position}} z TradingView

instrument
Wymagane
  • {{ticker}} z TradingView

  • Format Instld z OKX

signalToken
Wymagane
Dostarczone przez OKX po utworzeniu sygnału
timestamp
Wymagane
{{timenow}} z TradingView
maxLag
Opcjonalne
Nieujemna wartość całkowita z przedziału [1, 3600]. Domyślna to 60.
investmentType
Opcjonalnie*


  • podstawa (DLA SYGNAŁÓW ENTER I EXIT) Kwota w walucie bazowej

  • depozyt zabezpieczający (TYLKO DLA SYGNAŁÓW ENTER) Zainwestowany depozyt zabezpieczający w walucie kwotowanej

  • kontrakt (TYLKO DLA SYGNAŁÓW ENTER) Stała liczba kontraktów

  • percentage_balance (TYLKO DLA SYGNAŁÓW ENTER) Na podstawie % dostępnego salda (tj. marży dostępnej do otwierania nowych zleceń)

  • percentage_investment (TYLKO DLA SYGNAŁÓW ENTER) Na podstawie procenta Aktywnej Inwestycji w twoim bocie. Aktywna Inwestycja to zazwyczaj początkowy zainwestowany depozyt w chwili tworzenia bota i pozostaje stała do czasu doładowania dodatkowego depozytu i zdecydowania się na zwiększenie tej wartości.

  • percentage_investment (TYLKO DLA SYGNAŁÓW EXIT) Na podstawie % początkowego zainwestowanego depozytu zabezpieczającego przy tworzeniu bota

amount
Wymagane
  • podstawa (dodatnia liczba zmiennoprzecinkowa)

  • marża (dodatnia liczba zmiennoprzecinkowa)

  • kontrakt (liczba całkowita dodatnia)

  • percentage_balance (wartość zmienna pomiędzy [0.01, 100] w %)

  • percentage_investment (wartość zmienna pomiędzy [0.01, 100] w %)

  • percentage_position (wartość zmienna pomiędzy [0.01, 100] w %)

* investmentType zostanie domyślnie ustawiony na „percentage_investment”, jeśli sygnał zostanie uznany za sygnał wejścia i „percentage_position”, jeśli sygnał zostanie uznany za sygnał wyjścia. Zaleca się jednak, aby wartość ta była ustawiona na „podstawę”, a kwota na „{{strategy.order.contracts}}” dla maksymalnej kompatybilności ze strategią TradingView.

1. Specyfikacja AlertMsg - id

Sect A - id

id - identyfikator zlecenia

{{strategy.order.id}} - zwraca identyfikator wykonanego zlecenia (ciąg znaków użyty jako pierwszy parametr w jednym z wywołań funkcji generujących zlecenia: strategy.entry, strategy.exit lub strategy.order).

2. Specyfikacja AlertMsg - działanie

Sect A - action

działanie - kup lub sprzedaj?

{{strategy.order.action}} - zwraca ciąg znaków „buy” lub „sell” dla wykonanego zlecenia.

3. Specyfikacja AlertMsg - marketPosition

Sect A - MarketPosition

marketPosition - zamierzony stan pozycji (po wykonaniu zlecenia)

{{strategy.market_position}} - zwraca bieżącą pozycję strategii w postaci ciągu znaków: „long”, „flat” lub „short”.

4. Specyfikacja AlertMsg - prevMarketPosition

Sect A - prevMarketPosition

prevMarketPosition - stan poprzedniej pozycji (przed wykonaniem zlecenia)

{{strategy.prev_market_position}} - zwraca poprzednią pozycję strategii w postaci ciągu znaków: „long”, „flat” lub „short”.

5. Specyfikacja AlertMsg - instrument

Sect A - instrument

Format 1: ticker - wartości zastępcze TradingView

„Standardowy symbol zastępczy”* to dosłowny fragment tekstu otoczony podwójnymi nawiasami klamrowymi i umieszczony wewnątrz komunikatu alertu.

„{{ticker}}” zwróci ticker instrumentu, na którym wygenerowano alert.

Na przykład: „BTCUSDT.P”, „ETHUSDT.P”.

* Standardowy symbol zastępczy umożliwiający dostęp do zmiennych w PineScript. Dowiedz się więcej tutaj.

Format 2: Format instrumentów OKX

Identyfikator instrumentu lub „instId” w OKX API. Więcej szczegółów można znaleźć w link

Na przykład: „BTC-USDT-SWAP”, „ETH-USDT-SWAP”

6. Specyfikacja AlertMsg - signalToken

Sect A - signalToken

signalToken -- Uwierzytelnianie dla Signal

Token jest środkiem bezpieczeństwa zapewniającym, że przychodzące żądania są uzasadnione i autoryzowane. Ten signalToken zostanie wygenerowany automatycznie, gdy użytkownik pomyślnie utworzy nowy sygnał na naszej platformie i należy go skopiować do wiadomości alertu TradingView.

Jak zlokalizować signalToken dla już aktywnego sygnału?

  1. Sprawdź sekcję Szczegóły sygnału

Sect A - locate signalToken 1

  1. Znajdź swój signalToken w sekcji zalecanych komunikatów alertu

Sect A - locate signalToken 2

7. AlertMsg Specification - timestamp

Sect A - timestamp

timenow - wartości zastępcze TradingView

„Standardowy symbol zastępczy”* to dosłowny fragment tekstu otoczony podwójnymi nawiasami klamrowymi i umieszczony wewnątrz komunikatu alertu.

„{{timenow}}” zwróci bieżący i dokładny czas wygenerowania alertu, w UTC i formacie rrrr-MM-ddTHH: mm: ssZ.

Na przykład: „2023-06-01T17:38:10Z”

* Standardowy symbol zastępczy umożliwiający dostęp do zmiennych w PineScript. Dowiedz się więcej tutaj.

8. Specyfikacja AlertMsg - maxLag

Sect A - maxLag

maxLag - maksymalne dopuszczalne opóźnienie

Termin „maxLag” odnosi się do maksymalnego dopuszczalnego opóźnienia, mierzonego w sekundach, zanim sygnał handlowy zostanie uznany za nieważny. Obliczenie maxLag polega na określeniu różnicy czasu między momentem wysłania sygnału z TradingView (przy użyciu pola „timestamp” w wiadomości alertu) a momentem jego otrzymania na OKX w celu wykonania zlecenia.

Domyślnie jest on ustawiony na 60 sekund. Ustawienie wartości maxLag pomaga zapewnić, że Signal Bot działa w odpowiednim czasie, unikając działania na nieaktualnych lub potencjalnie niedokładnych sygnałach, które mogą już nie odzwierciedlać aktualnych warunków rynkowych.

9. Specyfikacja AlertMsg - investmentType i amount

Sect A - investmenttype and amount

Ważne uwagi: Aby zadbać o optymalną kompatybilność ze strategią TradingView, zdecydowanie zalecamy skonfigurowanie typu inwestycji jako „base” i ustawienie kwoty na „{{strategy.order.contracts}}”. Postępując zgodnie z tym podejściem, ilości zleceń na OKX będą zgodne z ilościami zleceń określonymi w strategii TradingView.

investmentType i Amount

(TYLKO DLA SYGNAŁÓW WEJŚCIA)
  • base: Kwota w walucie podstawowej (zalecany wybór)

  • margin: Zainwestowany depozyt zabezpieczający w walucie kwotowanej

  • contract: Stała liczba kontraktów

  • percentage_balance: Na podstawie % dostępnego salda (tj. depozytu dostępnego do otwierania nowych zleceń)

  • percentage_investment: Na podstawie procenta Aktywnej Inwestycji w twoim bocie. Aktywna Inwestycja to zazwyczaj początkowy zainwestowany depozyt w chwili tworzenia bota i pozostaje stała do czasu doładowania dodatkowego depozytu i zdecydowania się na zwiększenie tej wartości. Na przykład, jeśli stworzysz bota z początkowym zainwestowanym depozytem w wysokości 1000 USDT, Twoja Aktywna Inwestycja zostanie ustawiona na 1000 USDT. Dla każdych przychodzących sygnałów, to jest wartość, która będzie używana do obliczeń wielkości Twojego zamówienia. Powiedzmy, że po kilku dniach pracy Twojego bota zdecydujesz, że radzi sobie dobrze i ponownie zainwestujesz kolejne 1000 USDT depozytu i dodasz go do swojej Aktywnej Inwestycji. Następnie Twoja Aktywna Inwestycja wzrośnie do 2000 USDT, i to jest nowa wartość, która będzie używana do obliczeń wielkości Twojego zamówienia. Jeśli nie jesteś pewien, jaka jest obecna wartość Aktywnej Inwestycji Twojego bota, zawsze możesz sprawdzić to w sekcji Szczegóły Bota.

(TYLKO DLA SYGNAŁÓW WYJŚCIA)
  • base: Kwota w walucie podstawowej (zalecany wybór)

  • percentage_position: Na podstawie % otwartych pozycji

Sekcja B (uniwersalna kompatybilność)

Podane poniżej specyfikacje są uniwersalne i można je dostosować do każdego scenariusza. Niezależnie od tego, czy korzystasz z PineScript do tworzenia skryptów strategii lub wskaźników (badań), czy też ręcznie wprowadzasz alerty do interfejsu użytkownika TradingView Alert, specyfikacje te można dostosować i dostosować.

Przegląd specyfikacji AlertMsg

Parametr Wymagane Wartości
action Wymagane
  • ENTER_LONG

  • ENTER_SHORT

  • EXIT_LONG

  • EXIT_SHORT

instrument Wymagane
  • {{ticker}} z TradingView

  • Format Instld z OKX

signalToken Wymagane Dostarczone przez OKX po utworzeniu sygnału
timestamp Wymagane {{timenow}} z TradingView
maxLag Opcjonalne Nieujemna wartość całkowita z przedziału [1, 3600]. Domyślna to 60.
orderType Opcjonalne. Parametr jest wymagany, jeśli orderType = Limit
  • market

  • limit

orderPriceOffset Opcjonalne. Parametr jest wymagany, jeśli podczas tworzenia bota sygnałowego OKX nie skonfigurowano żadnych ustawień Wartość zmienna pomiędzy [0, 100] w %
investmentType Opcjonalne. Parametr jest wymagany, jeśli orderType = Limit
  • depozyt zabezpieczający (TYLKO DLA SYGNAŁÓW ENTER) Zainwestowany depozyt zabezpieczający w walucie kwotowanej

  • kontrakt (TYLKO DLA SYGNAŁÓW ENTER) Stała liczba kontraktów

  • percentage_balance (TYLKO DLA SYGNAŁÓW ENTER) Na podstawie % dostępnego salda (tj. marży dostępnej do otwierania nowych zleceń)

  • percentage_investment (TYLKO DLA SYGNAŁÓW ENTER) Na podstawie procenta Aktywnej Inwestycji w twoim bocie. Aktywna Inwestycja to zazwyczaj początkowy zainwestowany depozyt w chwili tworzenia bota i pozostaje stała do czasu doładowania dodatkowego depozytu i zdecydowania się na zwiększenie tej wartości.

  • percentage_investment (TYLKO DLA SYGNAŁÓW EXIT) Na podstawie % początkowego zainwestowanego depozytu zabezpieczającego przy tworzeniu bota

amount Opcjonalne. Parametr jest wymagany, jeśli orderType = Limit
  • marża (dodatnia liczba zmiennoprzecinkowa)

  • kontrakt (liczba całkowita dodatnia)

  • percentage_balance (wartość zmienna pomiędzy [0.01, 100] w %)

  • percentage_investment (wartość zmienna pomiędzy [0.01, 100] w %)

  • percentage_position (wartość zmienna pomiędzy [0.01, 100] w %)

1. Specyfikacja AlertMsg - działanie

Tryb pozycji:

Bot Signal działa w trybie jednokierunkowym (tj. kupna/sprzedaży), co oznacza, że będzie utrzymywać pozycje tylko w jednym kierunku dla danego instrumentu.

Zlecenia otwarte
  • ENTER_LONG: Otwarcie pozycji długiej z oczekiwaniem, że cena wzrośnie.
  • ENTER_SHORT: Otwarcie krótkiej pozycji z oczekiwaniem, że jej cena spadnie.
Zamknij zlecenia
  • EXIT_LONG: Zamknięcie pozycji długiej częściowo lub całkowicie poprzez sprzedaż posiadanych pozycji.
  • EXIT_SHORT: Zamknięcie pozycji krótkiej częściowo lub całkowicie poprzez odkupienie kontraktów.

2. Specyfikacja AlertMsg - instrument

Format 1: ticker - wartości zastępcze TradingView

„Standardowy symbol zastępczy”* to dosłowny fragment tekstu otoczony podwójnymi nawiasami klamrowymi i umieszczony wewnątrz komunikatu alertu.

„{{ticker}}” zwróci ticker instrumentu, na którym wygenerowano alert.

Na przykład: „BTCUSDT.P”, „ETHUSDT.P”.

* Standardowy symbol zastępczy umożliwiający dostęp do zmiennych w PineScript. Dowiedz się więcej tutaj.

Format 2: Format instrumentów OKX

Identyfikator instrumentu lub „instId” w OKX API. Więcej szczegółów można znaleźć w link

Na przykład: „BTC-USDT-SWAP”, „ETH-USDT-SWAP”

3. Specyfikacja AlertMsg - signalToken

signalToken -- Uwierzytelnianie dla Signal

Token jest środkiem bezpieczeństwa zapewniającym, że przychodzące żądania są uzasadnione i autoryzowane. Ten signalToken zostanie wygenerowany automatycznie, gdy użytkownik pomyślnie utworzy nowy sygnał na naszej platformie i należy go skopiować do wiadomości alertu TradingView.

4. AlertMsg Specification - timestamp

timenow - wartości zastępcze TradingView

„Standardowy symbol zastępczy”* to dosłowny fragment tekstu otoczony podwójnymi nawiasami klamrowymi i umieszczony wewnątrz komunikatu alertu.

„{{timenow}}” zwróci bieżący i dokładny czas wygenerowania alertu, w UTC i formacie rrrr-MM-ddTHH: mm: ssZ.

Możliwe formatowanie (czas UTC, format ISO 8061)

  • format rrrr-MM-ddTHH:mm:ssZ Na przykład: „2023-06-01T17:38:10Z”
  • format yyyy-MM-ddTHH:mm:ss.SSSZ Na przykład: „2023-06-01T17:38:10.836Z”
  • format rrrr-MM-ddTHH:mm:ss+0000 Na przykład: „2023-06-01T17:38:10+0000”

Na przykład: „2023-06-01T17:38:10Z”

* Standardowy symbol zastępczy umożliwiający dostęp do zmiennych w PineScript. Dowiedz się więcej tutaj.

5. Specyfikacja AlertMsg - maxLag

maxLag - maksymalne dopuszczalne opóźnienie

Termin „maxLag” odnosi się do maksymalnego dopuszczalnego opóźnienia, mierzonego w sekundach, zanim sygnał handlowy zostanie uznany za nieważny. Obliczenie maxLag polega na określeniu różnicy czasu między momentem wysłania sygnału z TradingView (przy użyciu pola „timestamp” w wiadomości alertu) a momentem jego otrzymania na OKX w celu wykonania zlecenia.

Domyślnie jest on ustawiony na 60 sekund. Ustawienie wartości maxLag pomaga zapewnić, że SignalBot działa w odpowiednim czasie, unikając działania na nieaktualnych lub potencjalnie niedokładnych sygnałach, które mogą już nie odzwierciedlać aktualnych warunków rynkowych.

6. Specyfikacja AlertMsg - zlecenie

orderType

  • Market: Złożenie zlecenia rynkowego w celu otwarcia (jeśli akcja =ENTER_XX) lub zamknięcia (jeśli akcja = EXIT_XX) pozycji. Nie ma potrzeby podawania orderPriceOffset
  • Limit: Złóż zlecenie z limitem otwarcia (jeśli akcja =ENTER_XX) lub zamknięcia (jeśli akcja = EXIT_XX) pozycji.

orderPriceOffset (dotyczy TYLKO zlecenia LIMIT)

  • ENTER_LONG: [1-(orderPriceOffset/100)] * Bid-1
  • ENTER_SHORT: [1+(orderPriceOffset/100)] * Ask-1
  • EXIT_LONG: [1+(orderPriceOffset/100)] * Ask-1
  • EXIT_SHORT: [1-(orderPriceOffset/100)] * Bid-1

7. Specyfikacja AlertMsg - investmentType i amount

investmentType i Amount

(TYLKO DLA SYGNAŁÓW WEJŚCIA)
  • Margin: Zainwestowany depozyt zabezpieczający w walucie kwotowanej

  • Contract: Stała liczba kontraktów

  • Percentage_balance: Na podstawie % dostępnego salda (tj. depozytu dostępnego do otwierania nowych zleceń)

  • Percentage_investment: Na podstawie procenta Aktywnej Inwestycji w twoim bocie. Aktywna Inwestycja to zazwyczaj początkowy zainwestowany depozyt w chwili tworzenia bota i pozostaje stała do czasu doładowania dodatkowego depozytu i zdecydowania się na zwiększenie tej wartości. Na przykład, jeśli stworzysz bota z początkowym zainwestowanym depozytem w wysokości 1000 USDT, Twoja Aktywna Inwestycja zostanie ustawiona na 1000 USDT. Dla każdych przychodzących sygnałów, to jest wartość, która będzie używana do obliczeń wielkości Twojego zamówienia. Powiedzmy, że po kilku dniach pracy Twojego bota zdecydujesz, że radzi sobie dobrze i ponownie zainwestujesz kolejne 1000 USDT depozytu i dodasz go do swojej Aktywnej Inwestycji. Następnie Twoja Aktywna Inwestycja wzrośnie do 2000 USDT, i to jest nowa wartość, która będzie używana do obliczeń wielkości Twojego zamówienia. Jeśli nie jesteś pewien, jaka jest obecna wartość Aktywnej Inwestycji Twojego bota, zawsze możesz sprawdzić to w sekcji Szczegóły Bota.

(TYLKO DLA SYGNAŁÓW WYJŚCIA)
  • Percentage_position: Na podstawie % otwartych pozycji

Sekcja B Przykłady robocze

Przykład 1: Długie wejście -> Długie wyjście (pełne zamknięcie) bez wielokrotnego wejścia

Przykład 2: Długie wejście -> Krótkie wejście (jednoetapowe odwrócenie) bez wielokrotnego wejścia

Przykład 3: Długie wejście -> Długie wyjście (częściowo) -> Długie wyjście (pełne zamknięcie)

Przykład 4: Korzystanie z funkcji Multi-Entry

Multi-Entry to funkcja w bota Signal, która pozwala na wykonanie wielu punktów wejścia dla danego instrumentu. Traderzy mogą zoptymalizować swoje podejście handlowe poprzez dywersyfikację punktów wejścia (tj. uśrednianie kosztów w dolarach), potencjalnie zwiększając szanse na uchwycenie zyskownych transakcji w dynamicznym środowisku rynkowym.

Przykład 5: Używanie tylko sygnału wyzwalającego (bez pól związanych z zamówieniem)

W przypadku dostawców sygnałów mogą oni wykluczyć niektóre opcjonalne parametry, biorąc pod uwagę, że użytkownik skonfigurował je już w bocie. Jest to szczególnie przydatne dla dostawców, którzy koncentrują się na oferowaniu TYLKO sygnałów wyzwalających kupno/sprzedaż, a każdy subskrybent decyduje, ile zainwestować.

Przykład 6: Używanie tylko sygnału wyzwalającego (bez pól związanych z zamówieniem)

Jeśli zarówno sygnał, jak i konfiguracja bota nie określają szczegółów zamówienia, użyte zostaną wartości domyślne.

  • W przypadku sygnałów ENTER domyślnie otworzy X%* inwestycji przy użyciu zlecenia rynkowego.
  • Dla sygnałów EXIT, domyślnie zamknie 100% otwartych pozycji po otrzymaniu sygnału.

*X = 100 dla pojedynczej pary. X = 50 dla wielu par

Przykład 7: Pierwszeństwo kolejności pól

Parametry bota mają pierwszeństwo przed parametrami sygnału. Należy pamiętać o dwóch zasadach:

  1. Zasada 1: Zarówno Bot, jak i Signal definiują pole
Dla typu zlecenia
Zlecenie rynkowe (bot) ✅
Zlecenie z limitem (sygnał) ❌
  1. Zasada 2: Jeden z botów/sygnałów definiuje pole
Dla rodzaju i kwoty inwestycji
Nd. (bot) ❌
100% dostępnego salda (sygnał) ✅

Często zadawane pytania

Jeśli masz jakiekolwiek pytania dotyczące bota Signal, możesz przejrzeć niektóre z często zadawanych pytań przez naszych użytkowników w tym artykule.