Umelá inteligencia - obchodovanie na burze s kryptomenami 1. diel
Dnes začneme zarábať love na burzách s kryptomenami. Teda nebude to ešte dnes, ale ten deň sa blíži.
V predchádzajúcich dieloch ste videli
Umelá inteligencia - nám predpovie budúcnosťUmelá inteligencia sa učí počítať
Umelá inteligencia - prvý praktický príklad v rozpoznávaní obrazu
Data augmentation
Vytvorenie datasetu
Prvé kroky k programovaniu
Umelá inteligencia v rozpoznávaní obrazu
Umelá inteligencia nás všetkých zabije
Úvod
Najskôr si stiahneme históriu nejakých párov kryptomien aby sme mohli naučiť AI ako sa správala mena v čase. Spôsobov ako si také dáta stiahnuť, je viacero. Veľké množstvo búrz vyžaduje registráciu, ale poznám jednu burzu, kde to ide aj bez registrácie a to Binance. Aby ste si všetko nemuseli riešiť sami, tak som vytvoril projekt CryptoCoin_stock_trading.Obsah
Projekt si naklonujeme príkazom:git clone https://github.com/bedna-KU/CryptoCoin_stock_trading.gitVojdeme do neho:
cd CryptoCoin_stock_tradingNainštalujeme si Python3 vývojársku knižnicu:
sudo apt install python3-devNainštalujeme si závislosti:
python3 -m pip install -r requirements.txtAk si chceme vypísať všetky páry čo podporuje Binance, napíšeme príkaz?
python3 binance/get_all_pairs.pyPre zobrazenie dvojíc len pre Bitcoin, napíšeme príkaz?
python3 binance/get_all_pairs.py btcTo nám vráti 305 záznamov, ak by sme chceli ten zoznam zúžiť na meny, ktoré majú v názve BTC a USD, tak použijeme príkaz:
python3 binance/get_all_pairs.py btc usdTo nám už vráti kratší zoznam z ktorého sa dá rozumne vybrať.
BTCUSDT BTCTUSD TUSDBTC BTCUSDC BTCUSDS BTCBUSD BTCUPUSDT BTCDOWNUSDT SUSDBTCTo by na ukážku stačilo, mi si vyberieme DOGE :) Hlavne je COOL a už sa o nej zmienil aj Musk ako som písal v predminulom blogu. Dosť (občasne) kopíruje Bitcoin a môžeme si potom skúšať naučiť AI na Bitcoine a výsledky budeme predpovedať pre Dogecoin.
Stiahneme si preto pár DOGE/USDT. USDT je digitálna obdoba Amerického doláru a stále sa na tej hodnote pohybuje v rozmedzí +-1%. Na stiahnutie dát slúži skript binance/save_historical_data.py. Pre vypísanie nápovedy zadáme:
python3 binance/save_historical_data.py -h usage: save_historical_data.py [-h] -x SYMBOL -s START [-e END] -i {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} optional arguments: -h, --help show this help message and exit -x SYMBOL, --symbol SYMBOL symbol for download -s START, --start START start date for download -e END, --end END end date fo download -i {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w}, --interval {1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w} intervalZ nápovedy vidíme že je potrebná zadať symbol v našom prípade DOGEUSDT štartovací dátum napríklad 1. Dec 2019 a interval napríklad jednu minútu 1m. Konkrétne použijeme píkaz:
python3 binance/save_historical_data.py --symbol DOGEUSDT --start "1. Dec 2019" --interval 1mPočkáme pár minút a máme u seba stiahnutú históriu od 1 decembra 2019 po aktuálny čas. To máme cez 500K údajov a to pre je pre AI viac ako dostatočný počet údajov. Toto je taký prvý rozdiel oproti návodom čo nájdete na internete.
Teraz sa pozrieme na dáta čo sme si stiahli. Na to slúži skript python3 csv_columns.py pre nápovedu napíšeme:
python3 csv_columns.py -h usage: csv_columns.py [-h] -a {show,save,graph} -c COLUMNS optional arguments: -h, --help show this help message and exit -a {show,save,graph}, --action {show,save,graph} select action -c COLUMNS, --columns COLUMNS select columnsKeď sa pozrieme priamo na dáta čo sme si stiahli, zistíme, že majú dvanásť stĺpcov:
cat file.csv | head 1575158400000,0.00229200,0.00229200,0.00229200,0.00229200,25805.00000000,1575158459999,59.14506000,1,0.00000000,0.00000000,0 1575158460000,0.00229200,0.00229200,0.00229200,0.00229200,0.00000000,1575158519999,0.00000000,0,0.00000000,0.00000000,0 1575158520000,0.00229200,0.00229200,0.00229200,0.00229200,0.00000000,1575158579999,0.00000000,0,0.00000000,0.00000000,0 1575158580000,0.00229200,0.00229200,0.00229200,0.00229200,0.00000000,1575158639999,0.00000000,0,0.00000000,0.00000000,0 1575158640000,0.00229200,0.00229200,0.00229200,0.00229200,0.00000000,1575158699999,0.00000000,0,0.00000000,0.00000000,0 1575158700000,0.00230410,0.00230410,0.00230410,0.00230410,48022.00000000,1575158759999,110.64749020,1,48022.00000000,110.64749020,0 1575158760000,0.00229000,0.00229000,0.00229000,0.00229000,48119.00000000,1575158819999,110.19251000,2,8332.00000000,19.08028000,0 1575158820000,0.00229000,0.00229000,0.00229000,0.00229000,0.00000000,1575158879999,0.00000000,0,0.00000000,0.00000000,0 1575158880000,0.00229000,0.00229000,0.00229000,0.00229000,0.00000000,1575158939999,0.00000000,0,0.00000000,0.00000000,0 1575158940000,0.00229000,0.00229000,0.00229000,0.00229000,0.00000000,1575158999999,0.00000000,0,0.00000000,0.00000000,0Keby sme potrebovali zo súboru vytiahnuť len nejaké stĺpce na to práve slúži vyššie spomínaný skript. Popis stĺpcov čo sme si stiahli sa nazýva OHLCV čo vám samozrejme povie aj váš obľúbený internetový vyhľadávač.
Prvý stĺpec je unixtime, druhý je otvárací kurz (O), tretí je maximálny kurz (H), štvrtý je najnižší kurz (L), piaty je uzatvárací kurz (C) a šiesty objem obchodov (V), na ostatné kľudne zabudnite.
Na zobrazenie grafu s dátami slúži prepínač --graph. Môžeme si to skúsiť s prepínačmi na zobrazenie prvého a piateho stĺpca, čiže času a uzatváracieho kurzu:
python3 csv_columns.py --action graph --columns "0 4"
Pre zobrazenie dát len z prvého a piateho stĺpca, použijeme príkaz:
python3 csv_columns.py --action show --columns "0 4"Vybrané stĺpce si uložíme, prepínačom save. Napríklad chceme uložiť prvý, druhý, tretí, štvrtý, piaty a šiesty stĺpec použijeme príkaz:
python3 csv_columns.py --action save --columns "0 1 2 3 4 5"Vyfiltrovaný CSV súbor s dátami nájdeme v súbore file_new.csv.
Záver
Dnes už vieme ako si pripraviť dataseset s dátami na naučenie AI. V ďalšom diele, mno uvidíme čo sa stane, minimálne sa určite zas niečo naučíme, alebo si niečo zas odskúšame. Všetko najlepšie v novom roku 2021 :-)Pre pridávanie komentárov sa musíte prihlásiť.
c
Ja že históriu,
Ale nevadí, som zvedavý akú to bude mať hodnotu v tom budúcom svete.
Le bo ten to svet ako ho poznáme už končí.
Opravené.
V budúcom svete bez nealka?
Fixol som zobrazovanie grafu a trochu upravil zápisok.
Vcelku náučné, fajne napísané, teším sa na pokračovanie
Napísal som už aj sieť a učenie. K tomu teraz prasím predikciu kurzu, nebude to žiadna krása, ale je to pre prvý test.