火幣 期貨 現貨 API [Python3版]
一、Util.py,基礎類,包括參數配置、簽名,HTTP 請求方法,發送信息到API
#coding=utf-8 import hashlib import time import urllib import urllib.parse import urllib.request #在此輸入您的Key ACCESS_KEY = "" SECRET_KEY = "" HUOBI_SERVICE_API="https://api.huobi.com/apiv3" ACCOUNT_INFO = "get_account_info" GET_ORDERS = "get_orders" ORDER_INFO = "order_info" BUY = "buy" BUY_MARKET = "buy_market" CANCEL_ORDER = "cancel_order" NEW_DEAL_ORDERS = "get_new_deal_orders" ORDER_ID_BY_TRADE_ID = "get_order_id_by_trade_id" SELL = "sell" SELL_MARKET = "sell_market" ''' 發送信息到api ''' def send2api(pParams, extra): pParams['access_key'] = ACCESS_KEY pParams['created'] = int(time.time()) pParams['sign'] = createSign(pParams) if(extra) : for k in extra: v = extra.get(k) if(v != None): pParams[k] = v #pParams.update(extra) tResult = httpRequest(HUOBI_SERVICE_API, pParams) return tResult ''' 生成簽名 ''' def createSign(params): params['secret_key'] = SECRET_KEY; params = sorted(params.items(), key=lambda d:d[0], reverse=False) message = urllib.parse.urlencode(params) message=message.encode(encoding='UTF8') m = hashlib.md5() m.update(message) m.digest() sig=m.hexdigest() return sig ''' request ''' def httpRequest(url, params): postdata = urllib.parse.urlencode(params) postdata = postdata.encode('utf-8') fp = urllib.request.urlopen(url, postdata) if fp.status != 200 : return None else: mybytes = fp.read() mystr = mybytes.decode("utf8") fp.close() return mystr
二、HuobiService.py,火幣現貨API
#coding=utf-8 from Util import * ''' 獲取賬號詳情 ''' def getAccountInfo(method): params = {"method":method} extra = {} res = send2api(params, extra) return res ''' 獲取所有正在進行的委托 ''' def getOrders(coinType,method): params = {"method":method} params['coin_type'] = coinType extra = {} res = send2api(params, extra) return res ''' 獲取訂單詳情 @param coinType @param id ''' def getOrderInfo(coinType,id,method): params = {"method":method} params['coin_type'] = coinType params['id'] = id extra = {} res = send2api(params, extra) return res ''' 限價買入 @param coinType @param price @param amount @param tradePassword @param tradeid @param method ''' def buy(coinType,price,amount,tradePassword,tradeid,method): params = {"method":method} params['coin_type'] = coinType params['price'] = price params['amount'] = amount extra = {} extra['trade_password'] = tradePassword extra['trade_id'] = tradeid res = send2api(params, extra) return res ''' 限價賣出 @param coinType @param price @param amount @param tradePassword @param tradeid ''' def sell(coinType,price,amount,tradePassword,tradeid,method): params = {"method":method} params['coin_type'] = coinType params['price'] = price params['amount'] = amount extra = {} extra['trade_password'] = tradePassword extra['trade_id'] = tradeid res = send2api(params, extra) return res ''' 市價買 @param coinType @param amount @param tradePassword @param tradeid ''' def buyMarket(coinType,amount,tradePassword,tradeid,method): params = {"method":method} params['coin_type'] = coinType params['amount'] = amount extra = {} extra['trade_password'] = tradePassword extra['trade_id'] = tradeid res = send2api(params, extra) return res ''' 市價賣出 @param coinType @param amount @param tradePassword @param tradeid ''' def sellMarket(coinType,amount,tradePassword,tradeid,method): params = {"method":method} params['coin_type'] = coinType params['amount'] = amount extra = {} extra['trade_password'] = tradePassword extra['trade_id'] = tradeid res = send2api(params, extra) return res ''' 查詢個人最新10條成交訂單 @param coinType ''' def getNewDealOrders(coinType,method): params = {"method":method} params['coin_type'] = coinType extra = {} res = send2api(params, extra) return res ''' 根據trade_id查詢oder_id @param coinType @param tradeid ''' def getOrderIdByTradeId(coinType,tradeid,method): params = {"method":method} params['coin_type'] = coinType params['trade_id'] = tradeid extra = {} res = send2api(params, extra) return res ''' 撤銷訂單 @param coinType @param id ''' def cancelOrder(coinType,id,method): params = {"method":method} params['coin_type'] = coinType params['id'] = id extra = {} res = send2api(params, extra) return res
三、HuobiMain.py,客戶端調用方法
#coding=utf-8 ''' 本程序在 Python 3.3.0 環境下測試成功 使用方法:python HuobiMain.py ''' from Util import * import HuobiService if __name__ == "__main__": print ("獲取賬號詳情") print (HuobiService.getAccountInfo(ACCOUNT_INFO)) print ("獲取所有正在進行的委托") print (HuobiService.getOrders(1,GET_ORDERS)) print ("獲取訂單詳情") print (HuobiService.getOrderInfo(1,68278313,ORDER_INFO)) print ("限價買入") print (HuobiService.buy(1,"1","0.01",None,None,BUY)) print ("限價賣出") print (HuobiService.sell(2,"100","0.2",None,None,SELL)) print ("市價買入") print (HuobiService.buyMarket(2,"30",None,None,BUY_MARKET)) print ("市價賣出") print (HuobiService.sellMarket(2,"1.3452",None,None,SELL_MARKET)) print ("查詢個人最新10條成交訂單") print (HuobiService.getNewDealOrders(1,NEW_DEAL_ORDERS)) print ("根據trade_id查詢order_id") print (HuobiService.getOrderIdByTradeId(1,274424,ORDER_ID_BY_TRADE_ID)) print ("取消訂單接口") print (HuobiService.cancelOrder(1,68278313,CANCEL_ORDER))