Articles

építsen egy kriptovaluta kereskedési botot R

fotó: Branko Stancevic az Unsplash oldalon

** vegye figyelembe, hogy az ebben az oktatóanyagban használt API már nem működik. Ezt a cikket szemléltető célokra kell elolvasni, ezt szem előtt tartva.

a kereskedő elméje a gyenge láncszem minden kereskedési stratégiában vagy tervben. A hatékony kereskedés végrehajtásához olyan emberi inputokra van szükség, amelyek az ösztöneinkkel ellentétes irányba futnak. Akkor kell vásárolnunk, amikor a hüllő agyunk el akarja adni. El kell adnunk, amikor a beleink azt akarják, hogy többet vásároljunk.

ez még nehezebb a kereskedelem cryptocurrencies egy kritikus alkotmány. A fiatal és a feltörekvő piacokat elárasztják a” szivattyúcsoportok”, amelyek elősegítik az intenzív FOMO-t (félelem a kimaradástól), amelyek az egekbe emelik az árakat, mielőtt a test visszavetné őket a földre. Sok kezdő befektető is kereskedik ezeken a piacokon, olyan befektetők, akik valószínűleg soha nem léptek kereskedelembe a NYSE-n. Minden kereskedelemben van egy készítő és egy vevő, és a ravasz kriptográfiai befektetők könnyen kihasználhatják a teret elárasztó újoncok előnyeit.

annak érdekében, hogy leválasszam az érzelmeimet a kripto kereskedésről, és kihasználjam a piacok 24/7-es megnyitását, úgy döntöttem, hogy egy egyszerű kereskedési botot építek, amely egyszerű stratégiát követ, és végrehajtja a kereskedéseket, ahogy aludtam.

sok “bot kereskedő”, ahogy hívják, használja a Python programozási nyelvet ezeknek a kereskedéseknek a végrehajtásához. Ha úgy döntesz, hogy a google, “crypto trading bot,” akkor talál linkeket Python kódot különböző Github adattárak.

adattudós vagyok, R pedig a fő eszközöm. Kerestem egy tisztességes oktatóanyagot az R nyelv használatáról egy kereskedelmi bot felépítéséhez, de nem találtam semmit. Arra készültem, hogy saját csomagot építsek a GDAX API-hoz való kapcsolódáshoz, amikor megtaláltam az rgdax csomagot, amely a GDAX API R burkolója. Az alábbiakban bemutatunk egy útmutatót egy kereskedési bot összeállításához, amelyet felhasználhat saját stratégiáinak felépítéséhez.

dióhéjban az Ethereum — USD párral fogunk kereskedni a GDAX tőzsdén az API-n keresztül az rgdax burkolón keresztül. Szeretem kereskedés ez a pár, mert Ethereum (ETH) jellemzően egy bullish álláspont, amely lehetővé teszi ezt a stratégiát, hogy világítsanak.

Megjegyzés: Ez egy szuper-egyszerű réteg, amely csak néhány dollárt keres egy bika piacon. Minden célból használja ezt a bázist a saját strat felépítéséhez.

akkor fogunk vásárolni, amikor a relatív erősségi Index (RSI) mutatók kombinációja átmenetileg túladott piacra mutat, azzal a feltételezéssel, hogy a bikák ismét fel fogják emelni az árakat, és nyereséget gyűjthetünk.

miután megvettük, a bot három limit eladási megbízást ad meg: az egyik 1% – os nyereséggel, a másik 4% – os nyereséggel, az utolsó pedig 7% – os nyereséggel. Ez lehetővé teszi számunkra, hogy gyorsan felszabadítsuk a pénzeszközöket egy másik kereskedésbe való belépéshez az 1.két megrendeléssel, és a 7% – os megrendelés megerősíti általános jövedelmezőségünket.

szoftver

az Rstudio és a Windows task scheduler segítségével rendszeresen (10 percenként) végrehajtjuk az R-kódot. Szüksége lesz egy GDAX-fiókra a megrendelések küldéséhez, valamint egy Gmail-fiókra a kereskedelmi értesítések fogadásához.

folyamatunk

1. rész: könyvtárak hívása és függvények készítése

Több könyvtár hívásával kezdjük:

az rgdax csomag biztosítja a felületet a GDAX API-hoz, a mailr-t arra használják, hogy e-mail frissítéseket küldjön nekünk Gmail-fiókkal, a stringi segít a JSON számainak elemzésében, a TTR pedig lehetővé teszi a technikai indikátor számítások elvégzését.

Function: curr_bal_usd& curr_bal_eth

az API szakaszban a GDAX-ból generált api kulcsot, titkot és jelszót fogja használni. Ezek a funkciók lekérdezik a GDAX számláját a legutóbbi egyenlegről, amelyet ismételten felhasználunk a kereskedésünkben:

funkció: RSI

ennek a stratégiának a fő mutatójaként az RSI-t vagy a relatív erősségi indexet fogjuk használni. Curr_rsi14_api húzza az értéke a legutóbbi 14 időszak RSI, segítségével 15 perces gyertyák. RSI14_api_less_one és így tovább húzza be az RSI-t az előző időszakokra:

Function: bid & ask

Next, we will need the current bid and ask prices for our strategy:

Function: usd_hold, eth_hold és cancel_orders

annak érdekében, hogy limitáras megbízásokat tegyünk iteratív módon, be kell tudnunk húzni a már leadott megbízásaink aktuális állapotát, és meg kell tudnunk törölni azokat a megbízásokat, amelyek túl messzire kerültek a rendelési könyvben ahhoz, hogy kitöltsük őket. Az előbbinél az rgdax csomag “holds” funkcióját fogjuk használni, az utóbbinál pedig a “cancel_order” funkciót:

funkció: buy_exe

Ez a big-daddy függvény, amely ténylegesen végrehajtja a limit megbízásokat. Számos lépésben működik ez a funkció.

1. Order_size függvény kiszámítja, hogy mennyi eth tudunk vásárolni, mert azt akarjuk, hogy vásárolni, amennyire csak lehetséges minden alkalommal, kevesebb 0,005 eth figyelembe kerekítési hibák

2. A WHILE funkció Limit megbízásokat helyez el, miközben még mindig nulla ETH van.

3. A rendszer 17 másodpercet alszik, hogy lehetővé tegye a megrendelés kitöltését, majd ellenőrzi, hogy a megrendelés kitöltésre került-e. Ha nem, akkor a folyamat megismétlődik.

2.rész: változók tárolása

ezután néhány RSI indikátor változót objektumként kell tárolnunk, így a kereskedési ciklus gyorsabban fut, és így nem lépjük túl az API sebességkorlátját:

3. rész: a kereskedési ciklus végrehajtja

eddig csak a funkciókat és változókat készítettük elő a kereskedési ciklus végrehajtásához. A következő egy verbális séta a tényleges kereskedési hurokról:

ha számlánk aktuális egyenlege USD-ben nagyobb, mint 20 USD, akkor elindítjuk a hurkot. Ezután, ha a jelenlegi RSI nagyobb vagy egyenlő 30-mal, és az RSI Az előző időszakban kevesebb vagy egyenlő volt 30-mal, és az RSI Az előző 3 periódusban legalább egyszer kevesebb volt, mint 30, akkor annyi ETH-t vásárolunk, amennyit csak tudunk a jelenlegi USD egyenleggel.

ezután elmentjük ezt a vételi árat egy CSV fájlba.

ezután e-mailt küldünk magunknak, hogy figyelmeztessünk minket a vásárlási műveletre.

ezután a hurok kiírja a “buy” – t, így nyomon követhetjük ezt a naplófájlunkban.

ezután a rendszer 3 másodpercig alszik.

most 3 szintes limit eladási megbízást adunk meg a nyereség megszerzéséhez.

az első limit eladási megbízásunk 1% – os nyereséggel, a következő 4% – os nyereséggel, az utolsó pedig 7% – os nyereséggel profitál:

ennyi, ez az egész szkript.

4.rész: A Windows Feladatütemező használata a szkript automatizálásához

ennek a botnak az a célja, hogy kivegye az emberi hibát a kereskedelemből, és lehetővé tegye számunkra, hogy kereskedésekbe lépjünk anélkül, hogy jelen kellene lennünk a képernyőn. Ehhez a Windows Feladatütemezőt fogjuk használni.

script ütemezése az Rstudio addin segítségével

használja a praktikus Rstudio add in-t a szkript egyszerű ütemezéséhez:

módosítsa az ütemezett feladatot a feladatütemezővel

navigáljon az RStudio add in által létrehozott feladathoz, és állítsa be a triggert a kívánt időközönként. Az én esetemben 10 percenként választom a végtelenségig.

tartsa szemmel a feladatát a naplófájllal

minden alkalommal, amikor a szkript fut, bejegyzést tesz egy szöveges naplófájlba, amely lehetővé teszi a szkript hibáinak elhárítását:

láthatja, hogy a”naplóbejegyzés indítása “és a” naplóbejegyzés befejezése “nyomtatási funkció jól jön a bejegyzések elválasztásához.

Legyen saját

módosíthatja ezt a szkriptet, hogy olyan egyszerű vagy összetett legyen, amennyit csak akar. Azon dolgozom, hogy javítsam ezt a szkriptet a neurális hálózatok hozzáadásával a TensorFlow for RStudio Keras moduljából. Ezek a neurális hálózatok exponenciálisan összetettebb elemet adnak a szkripthez, de hihetetlenül hatékonyak az adatok rejtett mintáinak megtalálásához.

ezenkívül a TTR csomag számos pénzügyi funkciót és technikai mutatót biztosít számunkra, amelyek felhasználhatók a modell javítására.

mindezt mondta, Ne játsszon több pénzt, hogy megengedheti magának, hogy elveszíti. A piacok nem egy játék, és akkor lehet, és el fogja veszíteni a pólót.