Zbuduj bota do handlu kryptowalutami za pomocą R
** zauważ, że API użyte w tym samouczku nie jest już dostępne. Ten artykuł powinien być czytany w celach ilustracyjnych, mając to na uwadze.
umysł tradera jest słabym ogniwem w każdej strategii lub planie handlowym. Skuteczna realizacja transakcji wymaga ludzkich wejść, które przebiegają w przeciwnym kierunku niż nasze instynkty. Powinniśmy kupować, kiedy nasz gadowaty mózg chce sprzedać. Powinniśmy sprzedawać, kiedy nasze wnętrzności chcą, żebyśmy kupili więcej.
jeszcze trudniej jest handlować kryptowalutami o krytycznej konstytucji. Młode i wschodzące rynki są zalewane przez” grupy pompowe”, które sprzyjają intensywnemu FOMO (strach przed utratą), które powodują, że ceny są wysokie, a następnie uderzają je z powrotem w ziemię. Wielu początkujących inwestorów również handluje na tych rynkach, inwestorzy, którzy prawdopodobnie nigdy nie weszli w handel na NYSE. W każdej transakcji jest producent i przyjmujący, a sprytni inwestorzy kryptowalutowi łatwo wykorzystują nowicjuszy zalewających przestrzeń.
aby oderwać moje emocje od handlu kryptowalutami i skorzystać z rynków otwartych 24/7, postanowiłem zbudować prostego bota handlowego, który podążałby za prostą strategią i realizował transakcje podczas snu.
wielu „handlowców botów”, jak się ich nazywa, używa języka programowania Python do wykonywania tych transakcji. Gdybyś Google, „crypto trading bot”, znajdziesz linki do kodu Pythona w różnych repozytoriach Github.
jestem analitykiem danych, a R jest moim głównym narzędziem. Szukałem przyzwoitego samouczka na temat używania języka R do budowania bota handlowego, ale nic nie znalazłem. Byłem ustawiony na budowanie własnego pakietu do interfejsu z GDAX API, gdy znalazłem pakiet rgdax, który jest opakowaniem R dla GDAX API. Poniżej znajduje się przewodnik po składaniu bota handlowego, którego możesz użyć do budowania własnych strategii.
W skrócie, będziemy handlować parą Ethereum — USD na giełdzie GDAX za pośrednictwem ich API za pośrednictwem owijarki rgdax. Lubię handlować tą parą, ponieważ Ethereum (ETH) jest zazwyczaj w pozycji byczej, co pozwala tej strategii zabłysnąć.
uwaga: jest to bardzo uproszczony strat, który zarobi tylko kilka dolców na rynku byka. Dla wszystkich zamiarów i celów, użyj tego jako bazy do budowy własnego strat.
będziemy kupować, gdy połączenie wskaźników Relative Strength Index (RSI) wskaże na tymczasowo wyprzedany rynek, z założeniem, że byki po raz kolejny podniosą ceny i będziemy mogli zbierać zyski.
gdy kupimy, bot wprowadzi trzy zlecenia sprzedaży z limitem: jedno z zyskiem 1%, drugie z zyskiem 4% i ostatnie z zyskiem 7%. Pozwala nam to szybko zwolnić środki na wejście do kolejnej transakcji z dwoma pierwszymi zamówieniami, a zamówienie 7% zwiększa naszą ogólną rentowność.
- oprogramowanie
- Część 1: wywołanie bibliotek i funkcji budowania
- część 2: Przechowuj zmienne
- część 3: pętla transakcyjna wykonuje
- Część 4: Korzystanie z Harmonogramu zadań systemu Windows do automatyzacji skryptu
- Zaplanuj skrypt z dodatkiem Rstudio
- zmodyfikuj zaplanowane zadanie za pomocą Harmonogramu zadań
- miej oko na swoje zadanie za pomocą pliku dziennika
- zrób to sam
oprogramowanie
będziemy używać RStudio i Windows Task scheduler do regularnego wykonywania naszego kodu R (co 10 minut). Będziesz potrzebować konta GDAX, aby wysyłać zamówienia, i konta Gmail, aby otrzymywać powiadomienia o transakcjach.
Część 1: wywołanie bibliotek i funkcji budowania
zaczniemy od wywołania kilku bibliotek:
pakiet rgdax zapewnia interfejs do GDAX API, mailr służy do wysyłania nam aktualizacji e-mail z kontem Gmail, stringi pomaga nam analizować numery z JSON i TTR pozwala nam wykonywać obliczenia wskaźników technicznych.
funkcja: curr_bal_usd & curr_bal_eth
użyjesz swojego klucza api, tajnego i hasła wygenerowanego z GDAX w sekcji API. Funkcje te odpytują Twoje konto GDAX o najnowsze saldo, które będziemy używać wielokrotnie w naszym handlu:
funkcja: RSI
użyjemy RSI lub Relative Strength Index jako naszych głównych wskaźników dla tej strategii. Curr_rsi14_api pobiera wartość ostatniego 14 okresu RSI, używając 15-minutowych świec. RSI14_api_less_one i tak dalej wyciągnij RSI za okresy poprzedzające:
Function: bid & ask
Next, we will need the current bid and ask prices for our strategy:
Function: usd_hold, eth_hold i cancel_orders
aby móc składać zlecenia z limitem w iteracyjny sposób, musimy być w stanie odczytać aktualny status już złożonych zleceń i móc anulować zlecenia, które przesunęły się zbyt daleko w dół księgi zleceń, aby je wypełnić. Użyjemy funkcji” holds” pakietu rgdax, aby to zrobić dla pierwszego, a „cancel_order” dla drugiego: