Dodałem strategię do wykresu, ale nie są generowane żadne zlecenia

Jeśli po dodaniu strategii do wykresu zakładki „Lista transakcji” i „Przegląd” Testera strategii wyświetlają komunikat „Brak danych”, prawdopodobnie nie symuluje on żadnych zleceń, co skutkuje brakiem danych do wypełnienia zakładki. Jeśli Twój skrypt nie generuje zamówień, może to być spowodowane jedną z następujących przyczyn:

Skrypt nie jest klasyfikowany jako strategia ani nie wykorzystuje komend tworzących zlecenia

Testowanie wsteczne za pomocą Testera strategii działa tylko ze strategiami Pine Script™, które używają funkcji `strategy()` jako ich deklarację. Skrypty zadeklarowane za pomocą `indicator()` lub `library()` nie mogą wchodzić w interakcje z modułem Strategy Tester.

Skrypty zadeklarowane jako strategie muszą używać poleceń `strategy.*` do umieszczania zleceń (np. `strategy.order()` lub `strategy.entry()`) do symulacji zleceń i wyświetlania danych w Testerze strategii, niezależnie od innych sygnały sprzedaży, które autor skryptu mógł zawrzeć w kodzie.

Strategia nie ma wystarczającego kapitału, aby otworzyć pozycję

Aby strategia mogła wejść w pozycję, musi mieć wystarczającą ilość pieniędzy, aby kupić określoną liczbę kontraktów/akcji/udziałów/jednostek. Nie wejdzie w transakcję, jeśli nie ma wystarczającego kapitału, aby pokryćten koszt. Na przykład, jeśli początkowy kapitał strategii wynosi 1000 USD, a rozmiar zlecenia to jeden kontrakt, nie może wejść w pozycję, chyba że cena aktywa spadnie poniżej 1000 USD, ponieważ nie ma na całą transakcję wystarczających środków. Strategie zawsze będą próbować kupić określoną liczbę kontraktów/akcji/udziałów/jednostek i nic mniej. 

Important note on backtesting futures: 

Symbole kontraktów terminowych zwykle mają tzw. jednostkę kontraktową (reprezentowaną jako wartość punktu na TradingView i dostępną w Pine za pomocą zmiennej `syminfo.pointvalue`). Podobnie jak w przypadku innych symboli, surowa cena na wykresie odnosi się do ceny jednej jednostki handlowanego towaru. Jednak kontrakty terminowe mają ustaloną ilość, którą reprezentują, więc zakup jednej jednostki zwykle nie jest możliwy. Aby obliczyć wymagany kapitał na kontrakt, pomnóż cenę na wykresie przez wartość punktu.

Aby zademonstrować wpływ wartości punktu na strategie, które operują na symbolach kontraktów terminowych, spójrzmy na symbol CME_MINI:ES1!, który reprezentuje kontrakt terminowy na indeks S&P 500 z najlepszą płynnością i posiada wartość punktu równą 50: 

W poniższym przykładzie strategia, którą dodaliśmy do wykresu, wszedła na pozycję dokładnie przy 4000 USD i wyszła przy 4500 USD. Faktyczna kwota wydana na kontrakt po cenie wejścia wyniosła 4000 USD pomnożona przez wartość punktu 50, czyli 200 000 USD. Kiedy strategia zamknęła swoją pozycję po cenie wyjścia, otrzymana kwota wyniosła 4500 USD * 50 = 225 000 USD, co dało zysk w wysokości 25 000 USD, co można potwierdzić, przeglądając kolumnę "Profit" w zakładce "List of Trades" w testatorze strategii: 

Jeśli strategia miała wartość początkowego kapitału poniżej 200 000 USD w tym przypadku, nie mogłaby złożyć zamówienia, ponieważ nie mogłaby sobie pozwolić na cenę wejścia, która była 50 razy wyższa od ceny widocznej na wykresie. Aby zasymulować taką pozycję, musimy zwiększyć wartość początkowego kapitału lub zmniejszyć wartości Margin Long/Short, aby umożliwić strategii jej sfinansowanie. 

Strategia zwraca błąd czasu wykonania (runtime). 

Jeśli strategia napotka problem podczas obliczeń, wywoła błąd czasu wykonania i wyświetli czerwony wykrzyknik w lewym górnym rogu okna wykresu, który zawiera strategię. Błędy czasu wykonania zatrzymują skrypt od kontynuowania obliczeń, więc nie jest możliwe symulowanie zleceń. Różne błędy czasu wykonania w Pine mają różne przyczyny i potencjalne rozwiązania. Kliknięcie na wykrzyknik pokaże komunikat błędu skryptu.

Warunki wymagane do składania zleceń przez strategię nie zostały spełnione. 

 

Jedną z możliwych przyczyn, dla których strategia nie wyświetla żadnych danych, jest brak spełnienia warunków do złożenia zlecenia w całym zakresie testowym. W tym przypadku nie będzie wpisów na wykresie, ponieważ nie ma zleceń do zrealizowania. Użytkownicy mogą to naprawić, zmieniając warunki w kodzie źródłowym strategii. Często pomocne jest również wizualne sprawdzenie historii warunków zlecenia strategii poprzez wyświetlenie ich na wykresie. 

Poniższy skrypt używa funkcji Pine `plotshape()` do rysowania niebieskich i czerwonych krzyżyków nad słupkami na wystąpienie warunków długich i krótkich, co pozwala nam sprawdzić ich historię na wykresie.:

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

plotshape(longCondition, color=color.new(color.blue, 0))

shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))

if shortCondition
    strategy.entry('Short', strategy.short)

plotshape(shortCondition, color=color.new(color.red, 0))

Dodatkowe informacje na ten temat można znaleźć w naszym Strona instrukcji obsługi dotycząca debugowania.

Właściwości strategii są nieprawidłowe

Każda strategia ma kilka parametrów, które regulują jej zasady otwierania zleceń. Autorzy mogą ustawić te parametry z kodu źródłowego strategii, a użytkownicy mogą je zastąpić danymi wejściowymi w sekcji „Właściwości”. zakładce ustawień strategii.

UWAGA: W kodzie źródłowym strategii jest kilka miejsc, w których użytkownicy mogą ustawić liczbę kontraktów/udziałów/lotów/jednostek dla swoich zleceń:

  • Parametery w funkcji `strategy()` pozwalają użytkownikom ustawić domyślną wielkość i rodzaj transakcji, co ustawia domyślne wartości w sekcji „Właściwości”. Użytkownicy mogą zastąpić te wartości, dostosowując wejścia „Rozmiar zlecenia”.
  • Polecenia składania zleceń, które generują zlecenia wejścia, takie jak `strategy.entry()`, może ustawić ilość transakcji na zasadzie zlecenia po zleceniu. W takim przypadku zmiany danych wejściowych w oknie „Właściwości”; nie wpłynie na wielkość zlecenia strategii. 

Użytkownicy muszą upewnić się, że określili rozmiary swoich strategii' zamówienia prawidłowo. Aby dodać do "Strategia nie ma wystarczającego kapitału, aby otworzyć pozycję" sekcji powyżej, należy pamiętać, że:

  • Jeśli „Typ zlecenia” strategii jest ustawiony na „Kontrakty”; (odpowiednik `strategy.fixed` jako default_qty_type w kodzie źródłowym), wielkość zamówienia musi być większa niż 1 dla większości symboli. Niektóre kryptowaluty ułatwiają ułamkowe rozmiary. Na przykład wielkość zamówienia 0,1 jest ważna dla BTCUSD, ale nie dla AAPL ani EURUSD.
  • Rozmiar zlecenia musi być dodatni; liczby ujemne spowodują błędy w czasie wykonywania, a wartość 0 nie przyniesie żadnego efektu.
  • Całkowity rozmiar pozycji (liczba kontraktów) nie może przekroczyć 1e12. Strategie nie będą symulować nowe zlecenia, jeśli wielkość pozycji przekracza tę liczbę.