[comment]: # attributes: notoc

[comment]: # (terms: forecast, timeleft )

[comment]: # ({ee75c9cc-2e2a1a06})
# 8 Funkcje predykcyjne

Wszystkie funkcje wymienione tutaj są obsługiwane w:

-   [Wyrażeniach wyzwalaczy](/manual/config/triggers/expression)
-   [Pozycjach obliczanych](/manual/config/items/itemtypes/calculated)
-   [Makrach wyrażeń](/manual/config/macros/expression_macros)

Funkcje są wymienione bez dodatkowych informacji. Kliknij funkcję, aby zobaczyć pełne szczegóły.

|Function|Description|
|--|--------|
|[forecast](#forecast)|Przyszła wartość, max, min, delta lub avg pozycji.|
|[timeleft](#timeleft)|Czas w sekundach potrzebny, aby pozycja osiągnęła określony próg.|

[comment]: # ({/ee75c9cc-2e2a1a06})

[comment]: # ({645b8a56-4d343eb8})
##### Wspólne parametry

-   `/host/key` jest wspólnym obowiązkowym pierwszym parametrem dla funkcji
    odwołujących się do historii pozycji hosta
-   `(sec|#num)<:time shift>` jest wspólnym drugim parametrem dla
    funkcji odwołujących się do historii pozycji hosta, gdzie:
    -   **sec** - maksymalny [okres
        oceny](/manual/config/triggers#evaluation-period) w sekundach
        (można używać [przyrostków](/manual/appendix/suffixes) czasu), lub
    -   **#num** - maksymalny [zakres
        oceny](/manual/config/triggers#evaluation-period) w najnowszych
        zebranych wartościach (jeśli poprzedzony znakiem hash)
    -   **time shift** (opcjonalnie) umożliwia przesunięcie punktu oceny
        wstecz w czasie. Zobacz [więcej
        szczegółów](/manual/config/triggers/expression#time-shift) dotyczących
        określania time shift.

[comment]: # ({/645b8a56-4d343eb8})

[comment]: # ({c645f0e4-f3b63bc1})
### Szczegóły funkcji

Kilka ogólnych uwag dotyczących parametrów funkcji:

-   Parametry funkcji są oddzielane przecinkiem
-   Opcjonalne parametry funkcji (lub części parametrów) są oznaczone przez
    `<` `>`
-   Parametry specyficzne dla danej funkcji są opisane przy każdej funkcji
-   Parametry `/host/key` oraz `(sec|#num)<:time shift>` nigdy nie mogą być
    ujmowane w cudzysłów

[comment]: # ({/c645f0e4-f3b63bc1})

[comment]: # ({8a873b31-e4452b37})
##### forecast(/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>) {#forecast}

Przyszła wartość, maksimum, minimum, delta lub średnia pozycji.<br>
Obsługiwane typy wartości: *Float*, *Integer*.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters);<br>
-   **time** — horyzont prognozy w sekundach (mogą być używane sufiksy czasu); obsługiwane są wartości ujemne;<br>
-   **fit** (opcjonalny; musi być ujęty w podwójny cudzysłów) — funkcja używana do dopasowania danych historycznych. Obsługiwane dopasowania:<br>*linear* — funkcja liniowa (domyślnie)<br>*polynomialN* — wielomian stopnia N (1 <= N <= 6)<br>*exponential* — funkcja wykładnicza<br>*logarithmic* — funkcja logarytmiczna<br>*power* — funkcja potęgowa<br>Zwróć uwagę, że *polynomial1* jest równoważne *linear*;
-   **mode** (opcjonalny; musi być ujęty w podwójny cudzysłów) — wymagane dane wyjściowe. Obsługiwane tryby:<br>*value* — wartość (domyślnie)<br>*max* — maksimum<br>*min* — minimum<br>*delta* — *max*-*min*<br>*avg* — średnia<br>Zwróć uwagę, że *value* szacuje wartość pozycji w momencie `now` + `time`; *max*, *min*, *delta* i *avg* analizują oszacowanie wartości pozycji w przedziale między `now` a `now` + `time`.

Komentarze:

-   Jeśli zwracana wartość jest większa niż 1.7976931348623158E+308 lub mniejsza niż -1.7976931348623158E+308, zwracana wartość jest odpowiednio ograniczana do 1.7976931348623158E+308 lub -1.7976931348623158E+308;
-   Staje się nieobsługiwana tylko w przypadku nieprawidłowego użycia w wyrażeniu (niewłaściwy typ pozycji, nieprawidłowe parametry), w przeciwnym razie w przypadku błędów zwraca -1;
-   Zobacz także dodatkowe informacje o [funkcjach predykcyjnych wyzwalaczy](/manual/config/triggers/prediction).

Przykłady:

    forecast(/host/key,#10,1h) #prognoza wartości pozycji za godzinę na podstawie ostatnich 10 wartości
    forecast(/host/key,1h,30m) #prognoza wartości pozycji za 30 minut na podstawie danych z ostatniej godziny
    forecast(/host/key,1h:now-1d,12h) #prognoza wartości pozycji za 12 godzin na podstawie danych z jednej godziny sprzed jednego dnia
    forecast(/host/key,1h,10m,"exponential") #prognoza wartości pozycji za 10 minut na podstawie danych z ostatniej godziny i funkcji wykładniczej
    forecast(/host/key,1h,2h,"polynomial3","max") #prognoza maksymalnej wartości, jaką pozycja może osiągnąć w ciągu następnych dwóch godzin, na podstawie danych z ostatniej godziny i wielomianu trzeciego stopnia
    forecast(/host/key,#2,-20m) #oszacowanie wartości pozycji sprzed 20 minut na podstawie dwóch ostatnich wartości (może to być dokładniejsze niż użycie last(), szczególnie jeśli pozycja jest aktualizowana rzadko, na przykład raz na godzinę)

[comment]: # ({/8a873b31-e4452b37})

[comment]: # ({834aceba-9b065620})
##### timeleft(/host/key,(sec|#num)<:przesunięcie czasu>,threshold,<fit>) {#timeleft}

Czas w sekundach potrzebny, aby pozycja osiągnęła określony próg.<br>
Obsługiwane typy wartości: *Float*, *Integer*.

Parametry: 

-   Zobacz [wspólne parametry](#common-parameters);<br>
-   **threshold** - wartość do osiągnięcia (można używać [sufiksów jednostek](/manual/appendix/suffixes));
-   **fit** (opcjonalny; musi być ujęty w podwójny cudzysłów) - zobacz [forecast()](#forecast).

Uwagi:

-   Jeśli zwracana wartość jest większa niż 1.7976931348623158E+308, zostanie przycięta do 1.7976931348623158E+308;
-   Zwraca 1.7976931348623158E+308, jeśli próg nie może zostać osiągnięty;
-   Staje się nieobsługiwana tylko w przypadku nieprawidłowego użycia w wyrażeniu (niewłaściwy typ pozycji, nieprawidłowe parametry), w przeciwnym razie zwraca -1 w przypadku błędów;
-   Zobacz także dodatkowe informacje o [funkcjach predykcyjnych wyzwalaczy](/manual/config/triggers/prediction).

Przykłady:

    timeleft(/host/key,#10,0) #czas do momentu, aż wartość pozycji osiągnie zero na podstawie ostatnich 10 wartości
    timeleft(/host/key,1h,100) #czas do momentu, aż wartość pozycji osiągnie 100 na podstawie danych z ostatniej godziny
    timeleft(/host/key,1h:now-1d,100) #czas do momentu, aż wartość pozycji osiągnie 100 na podstawie jednej godziny sprzed jednego dnia
    timeleft(/host/key,1h,200,"polynomial2") #czas do momentu, aż wartość pozycji osiągnie 200 na podstawie danych z ostatniej godziny oraz przy założeniu, że pozycja zachowuje się jak wielomian kwadratowy (drugiego stopnia)

[comment]: # ({/834aceba-9b065620})

[comment]: # ({ba59dd3a-9958c480})
Zobacz [wszystkie obsługiwane funkcje](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-9958c480})
