简单的问题 - 我已经使用Python 3.6成功连接到Coinbase API并在我的控制台中接收BTC买/卖价格。
我想将它连接到kdb数据库并开始创建一个滴答数据的HDB但我对如何构建这个设置感到有点困惑,即将get请求推送到数据库进行存储。我的python代码看起来像......
api_key = 'XXXXX'
api_secret = 'XXXXX'
from coinbase.wallet.client import Client
import time, requests
client = Client(api_key, api_secret)
starttime = time.time()
while True:
buy_price = client.get_buy_price(currency_pair = 'BTC-USD')
sell_price = client.get_sell_price(currency_pair = 'BTC-USD')
time.sleep(10.0)
print(buy_price)
print(sell_price)
print("=-=-=-=-=-=")
控制台打印Feed,看起来像......
{
"amount": "8034.79",
"base": "BTC",
"currency": "USD"
}
{
"amount": "7875.67",
"base": "BTC",
"currency": "USD"
}
=-=-=-=-=-=
{
"amount": "8034.80",
"base": "BTC",
"currency": "USD"
}
{
"amount": "7875.97",
"base": "BTC",
"currency": "USD"
}
=-=-=-=-=-=
在本地存储此数据的任何指导都会有所帮助。如果您需要任何其他信息,请与我们联系。
提前谢谢!
答案 0 :(得分:5)
您可以使用PyQ:
>>> from pyq import q
>>> p = {
... "amount": "8034.79",
... "base": "BTC",
... "currency": "USD"
... }
>>> q.set(':x', [p])
k('`:x')
>>> q.upsert(':x', p)
k('`:x')
>>> q.get(':x').show()
amount base currency
---------------------
8034.79 BTC USD
8034.79 BTC USD
答案 1 :(得分:4)
对于像Coinbase这样的简单API,您可以非常简单地直接在KDB中下载数据,使用.Q.hg进行下载,使用.j.k来解析JSON。例如,这是一个示例“feedhandler”:
/q feed.q [host]:port[:user:pwd]
\t 30000
h:hopen `$":",$[count .z.x;.z.x 0;":6000"]; //open handle to TP, use first arg or default to :6000
//define timer function to run every 30 seconds & retrieve prices, send to TP
.z.ts:{
a:{@[(.j.k .Q.hg`$":https://api.coinbase.com/v2/prices/BTC-USD/",x)`data;`typ;:;x]}'[("buy";"sell";"spot")];
t:select time:1#.z.N,sym:first `$(base,'currency),
bid: "F"$first amount where typ like "sell",
ask: "F"$first amount where typ like "buy" ,
spot:"F"$first amount where typ like "spot"
from a;
h(`.u.upd;`btc;get first t);
}
此脚本使用KDB计时器每30秒运行一次(您可以调整第一行的频率 - 当前为30000毫秒)&下载买,卖&来自Coinbase API的现货价格,并将它们发送给tickerplant(在加载脚本时将端口指定为第一个参数,或默认为端口6000)。结果表如下所示:
:3002>btc
time sym bid ask spot
------------------------------------------------------------
2017.11.20D21:32:48.697085000 BTCUSD 8164.23 8329.17 8246.5
2017.11.20D21:33:20.376192000 BTCUSD 8164.27 8331.69 8246.5
2017.11.20D21:33:50.709364000 BTCUSD 8164.27 8331.69 8247.27
2017.11.20D21:34:21.544488000 BTCUSD 8166.71 8331.69 8249
tick.q(默认名称sym.q)的架构应如下所示:
btc:([]time:`timespan$(); sym:`g#`symbol$(); bid:`float$(); ask:`float$(); spot:`float$())
需要注意的一点是,由于此API使用HTTPS,您需要设置SSL证书,您可以这样做(来自code.kx.com):
$ curl https://curl.haxx.se/ca/cacert.pem > $HOME/certs/cabundle.pem
$ export SSL_CA_CERT_FILE=$HOME/certs/cabundle.pem
我还制作了这个脚本的一个版本,它集成了TorQ,AquaQ Analytics发布的免费KDB框架(免责声明:我为AquaQ工作)。该版本可在此处获取:
https://github.com/jonathonmcmurray/TorQ-Coinbase
此版本包含一个启动脚本,可下载必要的SSL证书并按上述方法设置SSL_CA_CERT_FILE。此设置允许您启动一组进程(tickerplant,rdb,hdb等)进行处理和处理。存储从Feed返回的数据。