Jak uzyskać dane forex w Pythonie
Bezpośrednia odpowiedź
Możesz uzyskać dane forex w Pythonie, ładując je ze źródła danych (na przykład API zwracającego kursy ze znacznikami czasu, pliku historycznego do pobrania lub eksportu z platformy/brokera), a następnie przekształcając je w spójny format szeregów czasowych za pomocą narzędzi takich jak pandas.
Jak to działa (mechanika)
„Dane” forex zwykle oznaczają jedno z poniższych: ceny spot (często kwotowane jako kursy par walutowych), świece historyczne (otwarcie/maksimum/minimum/zamknięcie plus wolumen, jeśli dostępny) lub referencyjne kursy wymiany według określonej metodologii. Przed napisaniem kodu zdecyduj, czego potrzebujesz:
- Instrument: identyfikator pary walutowej (np. USD/EUR jako „EUR za USD” lub odwrotnie). Symbole różnią się w zależności od źródła.
- Podstawa czasu: znaczniki czasu i strefa czasowa. Źródło może udostępniać czas UTC, lokalną strefę czasową lub „czas rynkowy”.
- Próbkowanie: dane tickowe, świece minutowe, świece godzinowe lub świece dzienne.
- Konwencja pól: czy wartości reprezentują bezpośredni kurs pary, czy jego odwrotność.
Typowy przepływ w Pythonie wygląda następująco:
- Pobierz dane z wybranego źródła (wywołanie API lub odczyt pliku).
- Przeanalizuj znaczniki czasu na obiekty
datetime. - Znormalizuj kolumny (standardowe nazwy dla czasu, bid/ask lub close itp.).
- Posortuj i usuń duplikaty według znacznika czasu.
- Przefiltruj do żądanego zakresu dat i częstotliwości.
Na przykład, jeśli źródło zwraca wiersze podobne do CSV, pandas.read_csv(...) plus pd.to_datetime(...) często wystarczy, aby zbudować ramkę danych, którą możesz analizować.
Przykładowe podejście i niezależne kontrole
Prosta procedura weryfikacyjna pomoże Ci wykryć typowe problemy:
- Brakujące dane: sprawdź luki w indeksie czasu (szczególnie w przypadku danych intraday).
- Duplikaty: usuń lub zagreguj powtarzające się znaczniki czasu.
- Monotoniczny czas: potwierdź, że zbiór danych jest posortowany.
- Kierunek pary: zweryfikuj, czy „kurs” ze źródła odpowiada zamierzonemu kierunkowi waluty bazowej/kwotowanej, wykonując kontrolny test względem znanych konwencji.
- Typ kwotowania: jeśli żądasz „bid” lub „ask”, upewnij się, że użyto właściwego pola.
Nawet bez założeń dotyczących danych w czasie rzeczywistym powinieneś spodziewać się, że niektóre zbiory danych będą opóźnione, częściowo dostępne lub utworzone według różnych zasad generowania świec. Traktuj to jako ograniczenia jakości danych, a nie coś, co można naprawić wyłącznie kodem.
Ograniczenia i co należy zweryfikować
Nie możesz zakładać, że wszystkie źródła danych forex zapewniają te same definicje. Kluczowe ograniczenia, które należy uwzględnić:
- Różne konwencje kwotowań (kursy bezpośrednie vs odwrotne).
- Różne znaczniki czasu (różnice stref czasowych i granice sesji).
- Niespójne zasady agregacji (sposób tworzenia świec).
- Ograniczenia zakresu (niektóre instrumenty lub daty mogą być niedostępne).
Dobre niezależne podejście polega na (1) udokumentowaniu wybranej konwencji pary, (2) zapisaniu użytej strefy czasowej i częstotliwości oraz (3) przeprowadzeniu powyższych kontroli przed jakimikolwiek dalszymi obliczeniami.