Lekki serwer Node.js + SQLite pośredniczący między Stooq a PortfolioPerformance.
Stooq wyłączyło endpoint /q/l/ (używany przez PP jako JSON feed).
Nowy endpoint /q/d/l/ zwraca CSV z kluczem API — ten serwis pobiera te dane
i wystawia je jako JSON kompatybilny z PortfolioPerformance.
Otwórz w przeglądarce:
https://stooq.pl/q/d/?s=fcps&get_apikey
Rozwiąż captcha. Na dole strony pojawi się link do CSV zawierający apikey=XXXX.
Skopiuj wartość klucza.
Edytuj stooq-proxy/config.yaml:
api_key: "TWÓJ_KLUCZ"
tickers:
- fcps # Cyfrowy Polsat futures
- fcdp # CD Projekt futures
- fzab # Żabka futures
- fasb # Asseco futures
- fdin # Dino futuresSymbole futures na GPW mają format F + skrót akcji (bez numeru serii —
Stooq automatycznie zwraca front-month). Sprawdź symbol pod adresem
https://stooq.pl/q/?s=SYMBOL.
docker compose up -d stooq-proxyPrzy pierwszym starcie (pusta baza) serwis automatycznie pobiera pełną historię.
Health-check. Zwraca listę tickerów i czasy ostatniego odświeżania.
Główny endpoint dla PortfolioPerformance.
Parametry query:
| Param | Opis |
|---|---|
from |
Data od (YYYY-MM-DD), opcjonalny |
to |
Data do (YYYY-MM-DD), opcjonalny |
refresh |
1 = pobierz przed odpowiedzią |
Przykład odpowiedzi:
{
"ticker": "FCPS",
"quotes": [
{ "date": "2025-01-02", "open": 14.50, "high": 14.80, "low": 14.30, "close": 14.65, "volume": 1200 },
{ "date": "2025-01-03", "open": 14.70, "high": 15.00, "low": 14.60, "close": 14.95, "volume": 980 }
]
}Pobiera kurs dla jednego tickera (on-demand).
Uruchamia pełne nocne odświeżanie natychmiast (bez body).
Dla każdego kontraktu futures:
-
Otwórz właściwości papieru wartościowego
-
Zakładka Historical Prices
-
Provider: JSON
-
URL:
http://stooq-proxy:8080/quotes/FCPS?refresh=1(z sieci hosta:
http://localhost:8081/quotes/FCPS?refresh=1) -
Path to date:
$.quotes[*].date -
Path to close:
$.quotes[*].close -
Date format:
yyyy-MM-dd
Dzięki ?refresh=1 PP automatycznie dociąga kurs bieżącego dnia przy każdym
odpytaniu (nie tylko po nocnym odświeżaniu).
- Nocne odświeżanie: 02:30 Europe/Warsaw (konfigurowalne przez
nightly_hour/nightly_minutew config.yaml) - On-demand: każde zapytanie z
?refresh=1
stooq-proxy/
├── Dockerfile
├── server.js
├── package.json
├── config.yaml ← edytujesz
└── data/ ← montowany jako volume, tu jest baza SQLite