Opis ogólny:
Bot, który na podstawie kilku źródeł tj.
- blogi i konta Twitter giełd kryptowalutowych (Binance, Coinbase, Bithumb, Bitfinex, Kraken)
- popularnych ludzi (Elon Musk, McAfee)
podejmuje decyzje zakupowe w czasie rzeczywistym.
Bot działał autonomicznie na zdalnym serwerze 24/7 i jeśli spełnione były warunki zakupu to kończył transakcję w 0.3s od pojawienia się tweeta.
Bot miał zaimplementowaną sztuczną inteligencję do wyliczenia poziomu sprzedaży na podstawie poprzednich zakupów i kapitalizacji kryptowaluty.
Funkcjonalności:
- Analizowanie kont twitterowych w czasie rzeczywistym
- Scrappowanie danych ze stron giełd
- Podejmowanie decyzji zakupu i sprzedaży przez API giełdowe
- Monitorowanie decyzji i logów
Użyte technologie:
- Python 3 (and a lot of build in libraries)
- Redis (for faster access for needed data)
- MongoEngine (ORM for noSQL MongoDB)
- MongoExpress (User interface for MongoDB)
- Google Cloud (Spreadsheet API, Google translate API)
- Beautiful soup (for scrapping and parsing HTML code)
- Docker (Docker compose to communication between four container)
- Logz.io (For easily exploring logs and monitor properly bot logic)
- tweepy (For handling Twitter stream and some exception that might occur)
- CCXT(common API for a lot of cryptocurrencies exchanges)
Wyzwania:
- Znalezienie prawdziwego źródła newsów
- Kupienie bardzo szybko (przed innymi konkurentami)
- Sprzedaż z zyskiem
- Wyliczenie poziomu sprzedaży
Czego się nauczyłem
Rzeczy, których się nauczyłem lub lepiej zrozumiałem:
- Python (utrzymanie czystego kodu, autorska architektura bota, intuicyjne nazewnictwo metod, klas, plików, komunikacja z kilkoma kontenerami docker przez Pythona, przetwarzanie danych, mniej lub bardziej skomplikowana logika niektórych procesów w bocie itp.)
- Tematy DevOps (linux, ssh, docker, konfigurowanie baz danych, wprowadzanie dokowań itp.)
- Optymalizacja przepływu pracy logiki, ponieważ szybsze decyzje bota decydują o jakości bota. Byłem zmuszony szukać nowych sposobów optymalizacji, aby uzyskać lepsze wyniki.
- Monitorowanie baz danych na zdalnym serwerze (redis-cli, monitor, mongo-express)
- Skonfigurowanie modułu logowania Logz.io i python, aby mieć lepszy wgląd w logikę bota iw razie potrzeby szybciej naprawić zaistniały błąd
- Wielka moc Dockera i wykorzystanie go do wielu celów. docker-compose, wejście do kontenerów, mapowanie woluminów, portów itp.
- Różne sposoby scrapingu danych, scrapingu z koreańskich, chińskich, japońskich stron internetowych, z których kilka to blokowanie źródła html dla niektórych adresów IP, tłumaczenie danych, scraping z dynamicznych stron internetowych
- Wielowątkowość Pythona i zastosowanie wielowątkowości do optymalizacji logiki bota
- I wiele innych umiejętności, które są oczywiste podczas pracy przy takim projekcie jak: Git, PyCharm, lepsze zrozumienie interpretera Pythona, jak naprawdę działa Python.
- Python jest najlepszym narzędziem do takiego projektu :)
Organizacja projektu
Proces tworzenia projektu
Popełnione błędy
Python 3 (and a lot of build in libraries)
● Redis (for faster access for needed data)
● MongoEngine (ORM for noSQL MongoDB)
● MongoExpress (User interface for MongoDB)
● Google Cloud (Spreadsheet API, Google translate API)
● Beautiful soup (for scrapping and parsing HTML code)
● Docker (Docker compose to communication between four container)
● Logz.io (For easily exploring logs and monitor properly bot logic)
● tweepy (For handling Twitter stream and some exception that might occur)
● CCXT(common API for a lot of cryptocurrencies exchanges)