huobi API使用经验整理

mac2024-12-16  44

开局不知道说什么, 韭就完事了

文章目录

基础知识REST API实例1.start2.更多数据

基础知识

现在火币/大多数交易所的API都有两种. 一种是REST API, 类似于浏览网页, 由客户发起请求到服务器, 然后服务器发送相关数据; 另一种是基于socket的, 当用户建立与服务器的请求后, 由服务器不断连续将数据推送过来(当然中间用户需要发送一些数据来表明自己还在).

火币虽然高杠杆合约很坑(保证金比友商多一倍而且波动更大), 但对于低杠杆来说交易费用相对友好一些, 而且不需要科学上网, 作为练手很适合

REST API实例

1.start

restapi的使用与访问网页的过程是一致的 以下代码参考了火币官方api代码

import urllib #用于生成报文 import requests #用于投递/接受报文 params = {'symbol': 'ETH'} postdata = urllib.parse.urlencode(params) url = 'https://www.hbdm.com/api/v1/contract_index' # 并没有模拟浏览器的必要, headers为非必要参数 headers = {"Content-type": "application/x-www-form-urlencoded", 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0'} response = requests.get(url, postdata, headers=headers, timeout=3) # 以下在实际应用时需要加入异常处理模块 if response.status_code == 200: result = response.json();print(result)

以下是一个更让人喜欢的船新版本:

import requests url = 'https://www.hbdm.com/api/v1/contract_index' params = {'symbol': 'ETH'} response = requests.get(url=url, params=params, timeout=2) result = response.json() print(result)

2.更多数据

官方API目录 那么,哪些数据是最重要的? 1.实时k线, 决定决策 2.盘口数据, 决定make/take以及程度

host = "https://www.hbdm.com" # kline url = host + "/market/history/kline" params = {'symbol': 'ETH_CQ', 'period': '1', 'size':200} response = requests.get(url=url, params=params, timeout=2) assert response.status_code==200 result = response.json()

野生的bug出现了:JSONDecodeError: Expecting value debug半天, 然后发现这个response.text与上面的不同, 上面是简单的两行数据, 这边的是html网页,这似乎需要借助一些爬虫知识来解决

再来试试盘口数据

host = "https://www.hbdm.com" # depth url = host + "/market/depth" params = {'symbol': 'ETH_CQ', 'type':'step5'} response = requests.get(url=url, params=params, timeout=2) assert response.status_code==200 print(response.text)

依然是一个html页面 结合官方文档,推测就是下面两个页面(事实上不是) https://api.hbdm.com/market/history/kline?period=1min&size=200&symbol=ETH_CQ https://api.hbdm.com/market/depth?symbol=ETH_CQ&type=step5

以下是debug尝试

json.loads(response.text) #error response = requests.get(url='https://api.hbdm.com/market/depth?symbol=ETH_CQ&type=step5') depth = response.json() #good

阿西吧可算是好了 对得到的数据进行可视化

import numpy as np import matplotlib.pyplot as plt asks = np.array(depth['tick']['asks']) bids = np.array(depth['tick']['bids']) plt.plot(asks[:,0],asks[:,1]) plt.plot(bids[:,0],bids[:,1])
最新回复(0)