火幣網現貨API[Python3版]


火幣 期貨 現貨 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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM