okcoinapi----现货美元版本

来源:互联网 发布:win7自动开关机软件 编辑:程序博客网 时间:2024/06/10 23:25
""" Created on Fri Jan 13 10:36:19 2017  @author: yunjinqi  E-mail:yunjinqi@qq.com  Differentiate yourself in the world from anyone else. """  #用于访问OKCOIN 现货REST API  ##############################################################################  import http.client  import urllib  import json  import hashlib  import time    def buildMySign(params,secretKey):      sign = ''      for key in sorted(params.keys()):          sign += key + '=' + str(params[key]) +'&'      data = sign+'secret_key='+secretKey      return  hashlib.md5(data.encode("utf8")).hexdigest().upper()    def httpGet(url,resource,params=''):      conn = http.client.HTTPSConnection(url, timeout=10)      conn.request("GET",resource + '?' + params)      #print(resource + '?' + params)      response = conn.getresponse()      data = response.read().decode('utf8')    #print (data)    return json.loads(data)  def httpPost(url,resource,params):       headers = {              "Content-type" : "application/x-www-form-urlencoded"         }       conn = http.client.HTTPSConnection(url, timeout=10)       temp_params = urllib.parse.urlencode(params)       #print("https://"+url+resource+"?"+str(temp_params))       conn.request("POST", resource,temp_params,headers)       response = conn.getresponse()       data = response.read().decode('utf-8')       params.clear()       conn.close()       return data  #############################################################################  import urllib      class OKCoinSpot:        def __init__(self,url,apikey,secretkey):          self.__url = url          self.__apikey = apikey          self.__secretkey = secretkey          print(self.__secretkey)        #获取OKCOIN现货行情信息      def ticker(self,symbol = ''):          TICKER_RESOURCE = "/api/v1/ticker.do"          params=''          if symbol:              params = 'symbol=%(symbol)s' %{'symbol':symbol}          return httpGet(self.__url,TICKER_RESOURCE,params)        #获取OKCOIN现货市场深度信息      def depth(self,symbol = ''):          DEPTH_RESOURCE = "/api/v1/depth.do"          params=''          if symbol:              params = 'symbol=%(symbol)s' %{'symbol':symbol}          return httpGet(self.__url,DEPTH_RESOURCE,params)         #获取OKCOIN现货历史交易信息      def trades(self,symbol = ''):          TRADES_RESOURCE = "/api/v1/trades.do"          params=''          if symbol:              params = 'symbol=%(symbol)s' %{'symbol':symbol}          return httpGet(self.__url,TRADES_RESOURCE,params)            #获取用户现货账户信息      def userinfo(self):          USERINFO_RESOURCE = "/api/v1/userinfo.do"          params ={}          params['api_key'] = self.__apikey          params['sign'] = buildMySign(params,self.__secretkey)          return httpPost(self.__url,USERINFO_RESOURCE,params)        #现货交易      def trade(self,symbol,tradeType,price='',amount=''):          TRADE_RESOURCE = "/api/v1/trade.do"          params = {              'api_key':self.__apikey,              'symbol':symbol,              'type':tradeType          }          if price:              params['price'] = price          if amount:              params['amount'] = amount                        params['sign'] = buildMySign(params,self.__secretkey)          return httpPost(self.__url,TRADE_RESOURCE,params)        #现货批量下单      def batchTrade(self,symbol,tradeType,orders_data):          BATCH_TRADE_RESOURCE = "/api/v1/batch_trade.do"          params = {              'api_key':self.__apikey,              'symbol':symbol,              'type':tradeType,              'orders_data':orders_data          }          params['sign'] = buildMySign(params,self.__secretkey)          return httpPost(self.__url,BATCH_TRADE_RESOURCE,params)        #现货取消订单      def cancelOrder(self,symbol,orderId):          CANCEL_ORDER_RESOURCE = "/api/v1/cancel_order.do"          params = {               'api_key':self.__apikey,               'symbol':symbol,               'order_id':orderId          }          params['sign'] = buildMySign(params,self.__secretkey)          return httpPost(self.__url,CANCEL_ORDER_RESOURCE,params)        #现货订单信息查询      def orderinfo(self,symbol,orderId):           ORDER_INFO_RESOURCE = "/api/v1/order_info.do"           params = {               'api_key':self.__apikey,               'symbol':symbol,               'order_id':orderId           }           params['sign'] = buildMySign(params,self.__secretkey)           return httpPost(self.__url,ORDER_INFO_RESOURCE,params)        #现货批量订单信息查询      def ordersinfo(self,symbol,orderId,tradeType):           ORDERS_INFO_RESOURCE = "/api/v1/orders_info.do"           params = {               'api_key':self.__apikey,               'symbol':symbol,               'order_id':orderId,               'type':tradeType           }           params['sign'] = buildMySign(params,self.__secretkey)           return httpPost(self.__url,ORDERS_INFO_RESOURCE,params)        #现货获得历史订单信息      def orderHistory(self,symbol,status,currentPage,pageLength):             ORDER_HISTORY_RESOURCE = "/api/v1/order_history.do"             params = {                'api_key':self.__apikey,                'symbol':symbol,                'status':status,                'current_page':currentPage,                'page_length':pageLength             }             params['sign'] = buildMySign(params,self.__secretkey)             return httpPost(self.__url,ORDER_HISTORY_RESOURCE,params)          def getKline(self,duration,size,since):          kline_resourse = "/api/v1/kline.do"          params = {              #'api_key': self.__apikey,              'symbol': "btc_usd",              'type': duration,              'size': size,              'since': since          }          temp_params = urllib.parse.urlencode(params)          #print(temp_params)          return httpGet(self.__url, kline_resourse, temp_params)