Temat
- #Dodawanie/usuwanie danych w czasie rzeczywistym
- #Obsługa WebSockets
- #Rachunki ISA nie obsługują akcji zagranicznych
- #API Koreańskiego Domu Maklerskiego (한국투자증권 API)
Utworzono: 2024-04-23
Utworzono: 2024-04-23 00:00
W kontekście rozwoju API dla Koreańskiej Firmy Inwestycyjnej (한국투자증권) napisałem więcej niż początkowo zakładałem. Poprzednie wpisy zawierały treści ogólne i podstawowe, natomiast w tym wpisie opiszę trudności, z jakimi się spotkałem podczas procesu, oraz jak je rozwiązałem. Na początek, może zacznijmy od trudności?
Handel akcjami jest trudny, a tworzenie programu do automatycznego handlu jest jeszcze trudniejsze…
Pierwszą trudnością, z którą się zmierzyłem po podjęciu decyzji o rozwoju, była prawdopodobnie specyficzna dla mnie sytuacja. ㅠ_ㅠ Otóż chodziło o otwarcie konta w Koreańskiej Firmie Inwestycyjnej (한국투자증권). Około 2 tygodnie wcześniej założyłem konto w Hana Securities (하나증권) z podobnych powodów, co uniemożliwiło mi natychmiastowe założenie konta zdalnego. Zapomniałem o 20-dniowym okresie ograniczeń. Ponieważ jednak konto było konieczne, sprawdziłem, czy w pobliżu znajduje się oddział Koreańskiej Firmy Inwestycyjnej (한국투자증권), i na szczęście znalazłem jeden około 40 minut drogi (?) od mojego miejsca zamieszkania. Udało mi się tam otworzyć konto.
Właściwie na początku próbowałem założyć konto zdalnie, a w opisie było napisane, że przeniesienie konta ISA z innego banku powinno coś włączyć. Powinienem był to lepiej sprawdzić, ale byłem zbyt skupiony na szybkim otwarciu konta i bez zastanowienia się zgodziłem. Konto zostało łatwo otwarte, aplikacja API również, a ja z radością sprawdziłem, że testy krajowego API przebiegają pomyślnie…
Dopiero później zorientowałem się, że handel akcjami zagranicznymi wymaga osobnego zgłoszenia. Myślałem, że skoro konto zostało otwarte, to wszystko powinno działać. ㅋㅋㅋㅋ Okazało się, że na koncie ISA nie można handlować akcjami zagranicznymi. Właściwości konta ISA sprawiają, że jest to naturalne, ale sam nie znałem ich zbyt dobrze, a i teraz nie jestem ekspertem. Po prostu dowiedziałem się, że handel akcjami zagranicznymi nie jest możliwy na koncie ISA.
W każdym razie odwiedziłem oddział i otworzyłem konto, a konto ISA wróciło do poprzedniego banku. (Tam też zadzwonili do mnie i poinformowali, że jeśli nie wyrażę zgody, to konto zostanie zwrócone… Ogólnie konto ISA to wyjątkowy rodzaj konta, dlatego chyba było z nim tyle problemów.)
W każdym razie handel akcjami jest zawsze prosty, ale proces otwierania konta, instalowania i konfigurowania HTS (Home Trading System) i MTS (Mobile Trading System) w celu handlu jest naprawdę skomplikowany. Ale udało mi się to zrobić i dzięki temu mogłem rozpocząć rozwój.
API REST miało gotowe przykłady w Postmanie, więc korzystanie z niego było naprawdę łatwe. Można było natychmiast wysyłać żądania i otrzymywać dane, a także łatwo konwertować kod Postmana do Pythona. Jednak dość sporo funkcji nie wspierało handlu wirtualnego. Nie były to funkcje krytyczne, ale konieczność testowania ich na koncie rzeczywistym była uciążliwa. Testowanie na koncie rzeczywistym nie byłoby problemem, gdyby nie wiązało się z realną transakcją, ale odczuwałem dyskomfort psychiczny i generalnie sytuacja była niewygodna. Mam nadzieję, że Koreańska Firma Inwestycyjna (한국투자증권) w przyszłości usprawni te aspekty.
Kolejnym problemem było odbieranie danych w czasie rzeczywistym za pomocą Websockets.
Logika ciągłego odbierania danych działała, ale nie wiedziałem, jak zmodyfikować ją tak, aby nie była zakłócana i jednocześnie pozwalała na wysyłanie dodatkowych poleceń. Problem ten wynikał z braku zrozumienia Websockets, ale również z ogólnie niskiego poziomu wiedzy programistycznej. Mam nadzieję, że z czasem znajdę rozwiązanie i będę mógł zaktualizować wpis.
WebSockets – nie rozumiem… Czy to nie jest pętla nieskończona…? Jak prawidłowo połączyć zdarzenia… i wątki… Ech…
Ostatnią trudnością było zrozumienie metodologii handlowej oczekiwanej przez użytkownika. W mojej metodologii, czyli handlu siatkowym (grid trading), nie ma żadnych technik kupowania/sprzedawania. Wykonuję transakcje kupna/sprzedaży zgodnie z ustalonymi przeze mnie wartościami. Jednak większość metod handlowych jest projektowana tak, aby dostosowywać się do różnych okoliczności, dlatego wymagają one podejmowania decyzji o kupnie/sprzedaży na podstawie różnych warunków. Dane są gromadzone w interwałach minutowych, rysowane są linie średniej ruchomej (moving average), a decyzje o kupnie/sprzedaży podejmowane są na podstawie wartości zakresu, takich jak pasmo Bollinger’a. Technicznie rzecz biorąc, obliczenie wartości warunkowych jest możliwe, ponieważ formuła jest określona, ale nurtuje mnie fundamentalne pytanie o to, dlaczego stosuje się tę konkretną metodę handlu. Na razie nie znalazłem odpowiedzi. Im więcej uczę się o giełdzie, tym bardziej wydaje mi się to skomplikowane. ^^;; (Kursy powinny rosnąć i spadać w równym stopniu, ale dlaczego ja zawsze jestem po stronie spadkowej?!)
Nie rozumiem… Dlaczego rośnie i spada… Kiedy kupować i sprzedawać…
Oprócz tego było jeszcze wiele innych trudności. Ale przecież życie polega na walce i znajdowaniu rozwiązań, prawda? W następnym wpisie opiszę proces rozwiązywania problemów i alternatywne rozwiązania. Do dzieła!!
Komentarze0