poniedziałek, 11 czerwca 2012

OHLC jako format pliku oraz kwestia ram czasowych



Ostatnio wyjaśniałem znaczenie skrótu OHLC jako syntetycznego opisu kursu waluty w obrębie pewnego interwału czasowego. Podane były również przykłady jego typowych sposobów wizualizacji. Trzeba jednak sobie zdawać sprawę, że obrazki to jedno, natomiast równie istotne (jeśli nie bardziej) są metody wykonywania obliczeń na historycznych notowaniach walut. Szczególnie istotne w kontekście algorytmów i symulacji komputerowych, które jak wiadomo leżą w centralnym punkcie tematyki tego bloga.

Skoro tak, to te dane trzeba przechowywać w jakichś plikach i jakoś je wczytywać celem realizacji algorytmu. Czy to za pomocą dostępnych gotowych narzędzi czy też z wykorzystaniem tworzonego samodzielnie oprogramowania. Musi istnieć zatem określony format pliku do tego przeznaczony.

Formatów plików jest niezliczona ilość: biurowych, graficznych, multimedialnych i innych. Co gorsza, powszechnym zjawiskiem jest ich zmienność. Wraz z kolejnymi wersjami oprogramowania, format danych przez nie stosowany ulega zmianom. Cóż, producenci software-u muszą z czegoś żyć. Jest to jednak co najmniej uciążliwe z punktu widzenia użytkownika. Często jedna wersja programu nie jest w stanie dokonać poprawnego importu i exportu danych tak, aby można było wymieniać dane z inną jego wersją.

W przypadku obliczeń i symulacji działań na rynkach finansowych sytuacja taka jest jednak wręcz niedopuszczalna. Inwestor działający na Forex nie może sobie pozwolić na to, aby zaprzątać jego głowę ciągłymi problemami niezgodności formatów – on musi się skupić na obliczeniach i ich wynikach, które są podstawą do działań finansowych. W końcu tu chodzi o pieniądze.

Potrzebny jest zatem format, który jest:
  1. prosty,
  2. niezmienny od lat,
  3. czytelny dla człowieka – odpadają zatem formaty binarne.

Taki format jest: plik typu CSV, co pochodzi od angielskich słów comma-separated values. Jest to w istocie plik tekstowy, który zawiera kolejne linijki o takiej samej strukturze. Są to liczby oddzielane ustalonym znakiem, typowo przecinkiem, jak mówi sama nazwa.

Najprościej wszystko wyjaśnia przykład – fragment pliku zawierającego kursy dolara USA względem złotówki:

2012.05.29,11:00,3.4739,3.4834,3.4708,3.4784,1737
2012.05.29,12:00,3.4785,3.4843,3.4756,3.4793,1572
2012.05.29,13:00,3.4791,3.4838,3.4739,3.4745,1762
2012.05.29,14:00,3.4744,3.4811,3.4643,3.4725,2416

Pierwsze pole zawiera datę w formacie yyyy.mm.dd czyli rok, miesiąc i dzień zapisane zawsze za pomocą ustalonych ilości cyfr. Następnie jest czas podany jako hh:mm, czyli godzina i minuta. Przy tym jest to czas początku interwału czasowego, który obejmuje dana linijka. Dalsze cztery liczby oznaczają kurs z początku (O), kurs maksymalny (H), minimalny (L) oraz końcowy (C). Przy tym kolejność tych wartości jest zawsze taka sama.

Ostatnia z tych liczb oznacza wielkość obrotu daną parą walut. Zwykle jest ona jednak najmniej przydatna z punktu widzenia inwestora ponieważ typowo zawiera wielkość obrotu jedynie u jednego konkretnego brokera – tego który udostępnia notowania. A Forex jest rynkiem zdecentralizowanym. Z punktu widzenia strategii i algorytmu działania najbardziej przydatna byłaby liczba dająca informację, choćby szacunkową, na temat ogólnej wielkości obrotu danymi walutami na całym świecie. Są brokerzy, który udostępniają takie wartości, jednak zwykle dotyczy to rachunków dla klientów o dużych wielkościach obrotu. Mając rachunek o skali rzędu 5 tys. lub 10 tys. PLN raczej nie ma co liczyć na dostęp do takich danych. Z tego też powodu praktycznie wszystkie prezentowane tutaj strategie i algorytmy będą bazować wyłącznie na danych OHLC.

Ostatnią kwestią którą trzeba znać jest nazewnictwo plików. Tutaj też sprawa jest prosta – nazwa pliku zaczyna się od sekwencji zawierającego 2 razy po 3 znaki. Są one kodami walut wg standardu ISO 4217 widocznego tutaj. Pierwszą jest waluta, której kurs jest podawany w pliku a drugą jest ta, w której ten kurs jest wyrażony. W podanym wyżej przykładzie fragmentu pliku ten ciąg znaków to zatem USDPLN.

Dalej następuje liczba określająca interwał czasowy wyrażony w minutach, ponieważ taka jest typowa minimalna jego długość dla powszechnie dostępnych archiwów danych. Krótsze interwały dostępne są raczej w drogich komercyjnych serwisach. Stąd łatwo określić przykładowe nazwy plików i zapamiętać liczby, co przydaje się przy przeglądaniu archiwów:

USDPLN1.csv – dane minutowe,
USDPLN60.csv – dane godzinne,
USDPLN1440.csv – dane dobowe,
USDPLN10080.csv – dane tygodniowe (przyjmuje się 7 dni w tygodniu),
USDPLN43200.csv – dane miesięczne - .niektórzy operują nawet na tak długich interwałach!

Długość interwału nazywana jest też często skrótem TF, co oznacza ramę czasową (ang. time frame). Warto ten skrót pamiętać bowiem należy on do żargonu stosowanego na różnych forach i listach dyskusyjnych dotyczących Forex.

Jak więc widać, wszystko jest maksymalnie proste i czytelne. W następnych tekstach pokażę na przykładach gdzie tych danych można szukać i co z nimi można zrobić. Tak aby móc z nich skorzystać do realizacji celów właściwych – projektowania i badania strategii i algorytmów.

Brak komentarzy:

Prześlij komentarz