2017-11-17 4 views
3

간단한 질문 - 파이썬 3.6을 사용하고 내 콘솔에서 BTC 구매/판매 가격을받는 Coinbase API에 성공적으로 연결했습니다.kdb 데이터베이스에 API 연결

이걸 kdb 데이터베이스에 연결하고 틱 데이터의 HDB를 생성하고 싶습니다.하지만이 설정을 구조화하는 방법에 대해 혼란 스럽습니다. 즉, 저장소에 대한 데이터베이스에 요청을 푸시합니다. . 내 파이썬 코드는

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("=-=-=-=-=-=") 

... 같은 콘솔 인쇄 로컬로 데이터를 저장의 모든 지침이 도움이 될 것처럼 보이는 피드, ...

{ 
    "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

실제로이 API에 액세스하기 위해 Python을 사용할 필요는 없습니다. Q에서 직접 모든 것을 할 수 있습니다. 아래에서 내 대답을 볼 수 있습니다. 물론 API의보다 복잡한 측면을 사용하거나 PyQ를 배우는 데 관심이 있다면 파이썬 접근 방식을 고수하는 것이 좋습니다. –

답변

4

당신은 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 
+0

고마워, 알렉산더. PyQ를 명령 행에 입력하면 다음 오류가 발생합니다 ...'Welcome to kdb + 32bit edition 이 시작 msg를 제거하려면 qq '2017.11.19T16 : 05 : 15.635 dlopen (/Library/Frameworks/Python.framework)을 편집하십시오./Versions/3.파이썬 _dll' ... 이유는 다음과 같을 수도 있습니다 : 6/bin/python3 :, 10) : 이미지를 찾지 못했습니다 [4]/Users/marrowgari/q/pk : 3 : ('p 2 : ('p_init; 필자는 64 비트 Personal Edition 외에도 컴퓨터에 32 비트 버전의 kdb +/q가 설치되어 있어야합니다. 로드 경로를 변경하여 64 비트 버전에서 설치하는지 확인하려면 어떻게합니까? – marrowgari

+0

가상 환경에 pyq를 설치하려면 설치 지침을 따르십시오. 작동하지 않는 경우 Github에서 문제를 열고 설정에 대한 세부 정보를 제공하십시오. –

+0

가상 환경에서 [here] (https://pyq.enlnt.com/install/install.html) 단계에 따라 PyQ를 설치하려고했으나 같은 오류가 발생했습니다. 내 설치 프로세스에 대한 문서를 Github에서 열었습니다. – marrowgari

3

을 Coinbase 같은 간단한 API를 들어, 실제로 JSON을 구문 분석 다운로드 할 .Q.hg를 사용하여 매우 간단 KDB에 직접 데이터를 다운로드하고 .j.k 수 있습니다. 예를 들어, 다음 샘플 "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 타이머의 사용 (첫 번째 줄에 주파수를 조정할 수 있습니다 - 현재 30000 밀리 초) 30 초마다 실행 할 수 있습니다 & 다운로드 구매 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의 사용 등

$ curl https://curl.haxx.se/ca/cacert.pem > $HOME/certs/cabundle.pem 
$ export SSL_CA_CERT_FILE=$HOME/certs/cabundle.pem 

나는 또한와 통합이 스크립트의 버전을 만들었습니다 : HTTPS 당신은 당신이 이렇게 (code.kx.com에서) 같은 것을 할 SSL 인증서 설치가 필요합니다, AquaQ Analytics에서 발행 한 무료 KDB 프레임 워크 (면책 조항 : AquaQ에서 일하고 있음). 그 버전은 여기에 있습니다 :

https://github.com/jonathonmcmurray/TorQ-Coinbase

이 버전은 필요한 SSL 인증서를 다운로드하고 전술 한 바와 같이 SSL_CA_CERT_FILE을 설정하는 시작 스크립트가 포함되어 있습니다. 이 설정은 피드에서 반환 된 데이터를 저장하는 & 처리를위한 일련의 프로세스 (tickerplant, rdb, hdb 등)를 시작할 수있게합니다.