Python自動交易比特幣 – 什麼是API?如何用API取得加密貨幣的價格-自動交易程式教學

雜記

這篇文章是要介紹什麼事「API」,以及如何使用API來取得加密貨幣(bitcoin等等)的價格。在閱讀這篇文章之前要先確認已經下載Anaconda,並可以以使用Python!

API是什麼?

API是Application Programming Interface的簡稱,也是一個和軟體溝通的窗口。常常會聽到「用API將JSON path…」等類似的話,但其實API本身其實不是一個很難的東西。

簡單來說,API是為了對外部的伺服器發送命令的command。雖然如果是自己從零開始製作API的話很難,但是如果外部伺服器已經做好的話我們其實只是要發送命令而已!

例如,下面的網址是API的其中一個例子。大家可以把URL直接貼到瀏覽器試試看。

https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1514764800

接著會出現下面這樣的畫面。

到這邊你也已經會「使用API」了!

其實這是cryptowatch這個網站製作的API,內容是Bitflyer 2017年1月1日以後的bitcoin每天的價格。

cryptowatch這個網站有世界上各個交易所的虛擬貨幣的資料。另外,網站也有給我們API來使用,所以只要像上面那樣輸入網址就可以直接取得價格了!

API的內容

因為API本身是為了讓「程式來使用」,不是為了讓人來看的,所以基本上我們看到的就是一群數字本身。

這些數字會被逗號來分割,目的是為了決定data的順序。例如我們剛剛取得的API一開始的部分。

{"result":{"86400":[[1514764800,1519999,1713306,1502242,1675100,20188.11,32083065000]

上面這串數字是什麼意思呢?

首先,86400的意思是「一天的K線」也就是日線。

之後在寫程式的時候也會常常碰到,在程式裡我們通常會用秒數來表示時間。這邊的86400也就是86400秒的意思。因此,一小時,一天,一週的話我們會寫成3600秒,86400秒,604800秒。

接著我們來看看[]裡的數字所代表的意義。

1514678400 ・・・ UNIX時間「2017/1/1 09:00:00」的意思
1519999 ・・・ 這天的開盤價 151万9999円
1713306 ・・・ 這天的最高價 171万3306円
1502242 ・・・ 這天的最低價 150万2242円
1675100 ・・・ 這天的收盤價 167万5100円
20188.11 ・・・ 這天的交易量

會知道這些數字的原因是因為寫在Cryptowatch的API裡面(笑)。如果有興趣的話可以參考下面的網站。

Cryptowatch API

裡面有寫著

values are in this order:
[ CloseTime , OpenPrice , HighPrice , LowPrice , ClosePrice , Volume]

API網址的意義

剛剛有提到這次的API內容是「Bitflyer 2017年1月1日以後的比特幣的日線價格」。我們現在再來看看剛剛的URL。

https://api.cryptowat.ch/markets/bitflyer/btcjpy/ohlc?periods=86400&after=1514764800

我們可以看到URL裡面有下面幾個文字。

bitflyer・・・交易所名稱
btcjpy・・・BTC/JPY
periods=86400・・・日線
after=1514764800・・・UNIX時間「2017/01/01 09:00:00」以後

如果對程式語言比較了解的人應該發現了,我們把bitflyer的部分改成poloniex的話就可以看到poloniex的價格了。

但是因為poloniex沒有使用日圓,因此需要把JPY的部分改成USDT,網址的話會變成下面這樣。

https://api.cryptowat.ch/markets/poloniex/btcusdt/ohlc?periods=86400&after=1514764800

API其實不會很難!

最後想要講的是,其實在使用API上不會很難,實際難的部分是製作API(笑)。雖然一開始看到一個陌生的網址的時候會有點不清楚他在寫什麼,但是只要去讀API的說明書就可以理解他的意義。

而且在讀API說明書的時候也不用全部都讀,可以善用ctrl+F來搜尋自己想查的部分。例如想查有關價格的東西的話可以輸入price就可以特定出價格的部分。

這次介紹完API之後下次要來介紹如何使用交易所的API!

留言