用python做量化投资系列之比特币--初始配置

来源:互联网 发布:部落冲突弹簧升级数据 编辑:程序博客网 时间:2024/04/28 14:25

  1. http://blog.csdn.net/qq_26948675/article/details/54783472

  2. # -*- coding: utf-8 -*-  
  3. """ 
  4. Created on Fri Jan 13 10:36:19 2017 
  5.  
  6. @author: yunjinqi 
  7.  
  8. E-mail:yunjinqi@qq.com 
  9.  
  10. Differentiate yourself in the world from anyone else. 
  11. """  
  12. #用于访问OKCOIN 现货REST API  
  13. ##############################################################################  
  14. import http.client  
  15. import urllib  
  16. import json  
  17. import hashlib  
  18. import time  
  19.   
  20. def buildMySign(params,secretKey):  
  21.     sign = ''  
  22.     for key in sorted(params.keys()):  
  23.         sign += key + '=' + str(params[key]) +'&'  
  24.     data = sign+'secret_key='+secretKey  
  25.     return  hashlib.md5(data.encode("utf8")).hexdigest().upper()  
  26.   
  27. def httpGet(url,resource,params=''):  
  28.     conn = http.client.HTTPSConnection(url, timeout=10)  
  29.     conn.request("GET",resource + '?' + params)  
  30.     #print(resource + '?' + params)  
  31.     response = conn.getresponse()  
  32.     data = response.read().decode('utf8')  
  33.     return json.loads(data)  
  34.   
  35. def httpPost(url,resource,params):  
  36.      headers = {  
  37.             "Content-type" : "application/x-www-form-urlencoded"  
  38.   
  39.      }  
  40.      conn = http.client.HTTPSConnection(url, timeout=10)  
  41.      temp_params = urllib.parse.urlencode(params)  
  42.      #print("https://"+url+resource+"?"+str(temp_params))  
  43.      conn.request("POST", resource,temp_params,headers)  
  44.      response = conn.getresponse()  
  45.      data = response.read().decode('utf-8')  
  46.      params.clear()  
  47.      conn.close()  
  48.      return data  
  49. #############################################################################  
  50. import urllib  
  51.   
  52.   
  53. class OKCoinSpot:  
  54.   
  55.     def __init__(self,url,apikey,secretkey):  
  56.         self.__url = url  
  57.         self.__apikey = apikey  
  58.         self.__secretkey = secretkey  
  59.         print(self.__secretkey)  
  60.   
  61.     #获取OKCOIN现货行情信息  
  62.     def ticker(self,symbol = ''):  
  63.         TICKER_RESOURCE = "/api/v1/ticker.do"  
  64.         params=''  
  65.         if symbol:  
  66.             params = 'symbol=%(symbol)s' %{'symbol':symbol}  
  67.         return httpGet(self.__url,TICKER_RESOURCE,params)  
  68.   
  69.     #获取OKCOIN现货市场深度信息  
  70.     def depth(self,symbol = ''):  
  71.         DEPTH_RESOURCE = "/api/v1/depth.do"  
  72.         params=''  
  73.         if symbol:  
  74.             params = 'symbol=%(symbol)s' %{'symbol':symbol}  
  75.         return httpGet(self.__url,DEPTH_RESOURCE,params)   
  76.   
  77.     #获取OKCOIN现货历史交易信息  
  78.     def trades(self,symbol = ''):  
  79.         TRADES_RESOURCE = "/api/v1/trades.do"  
  80.         params=''  
  81.         if symbol:  
  82.             params = 'symbol=%(symbol)s' %{'symbol':symbol}  
  83.         return httpGet(self.__url,TRADES_RESOURCE,params)  
  84.       
  85.     #获取用户现货账户信息  
  86.     def userinfo(self):  
  87.         USERINFO_RESOURCE = "/api/v1/userinfo.do"  
  88.         params ={}  
  89.         params['api_key'] = self.__apikey  
  90.         params['sign'] = buildMySign(params,self.__secretkey)  
  91.         return httpPost(self.__url,USERINFO_RESOURCE,params)  
  92.   
  93.     #现货交易  
  94.     def trade(self,symbol,tradeType,price='',amount=''):  
  95.         TRADE_RESOURCE = "/api/v1/trade.do"  
  96.         params = {  
  97.             'api_key':self.__apikey,  
  98.             'symbol':symbol,  
  99.             'type':tradeType  
  100.         }  
  101.         if price:  
  102.             params['price'] = price  
  103.         if amount:  
  104.             params['amount'] = amount  
  105.               
  106.         params['sign'] = buildMySign(params,self.__secretkey)  
  107.         return httpPost(self.__url,TRADE_RESOURCE,params)  
  108.   
  109.     #现货批量下单  
  110.     def batchTrade(self,symbol,tradeType,orders_data):  
  111.         BATCH_TRADE_RESOURCE = "/api/v1/batch_trade.do"  
  112.         params = {  
  113.             'api_key':self.__apikey,  
  114.             'symbol':symbol,  
  115.             'type':tradeType,  
  116.             'orders_data':orders_data  
  117.         }  
  118.         params['sign'] = buildMySign(params,self.__secretkey)  
  119.         return httpPost(self.__url,BATCH_TRADE_RESOURCE,params)  
  120.   
  121.     #现货取消订单  
  122.     def cancelOrder(self,symbol,orderId):  
  123.         CANCEL_ORDER_RESOURCE = "/api/v1/cancel_order.do"  
  124.         params = {  
  125.              'api_key':self.__apikey,  
  126.              'symbol':symbol,  
  127.              'order_id':orderId  
  128.         }  
  129.         params['sign'] = buildMySign(params,self.__secretkey)  
  130.         return httpPost(self.__url,CANCEL_ORDER_RESOURCE,params)  
  131.   
  132.     #现货订单信息查询  
  133.     def orderinfo(self,symbol,orderId):  
  134.          ORDER_INFO_RESOURCE = "/api/v1/order_info.do"  
  135.          params = {  
  136.              'api_key':self.__apikey,  
  137.              'symbol':symbol,  
  138.              'order_id':orderId  
  139.          }  
  140.          params['sign'] = buildMySign(params,self.__secretkey)  
  141.          return httpPost(self.__url,ORDER_INFO_RESOURCE,params)  
  142.   
  143.     #现货批量订单信息查询  
  144.     def ordersinfo(self,symbol,orderId,tradeType):  
  145.          ORDERS_INFO_RESOURCE = "/api/v1/orders_info.do"  
  146.          params = {  
  147.              'api_key':self.__apikey,  
  148.              'symbol':symbol,  
  149.              'order_id':orderId,  
  150.              'type':tradeType  
  151.          }  
  152.          params['sign'] = buildMySign(params,self.__secretkey)  
  153.          return httpPost(self.__url,ORDERS_INFO_RESOURCE,params)  
  154.   
  155.     #现货获得历史订单信息  
  156.     def orderHistory(self,symbol,status,currentPage,pageLength):  
  157.            ORDER_HISTORY_RESOURCE = "/api/v1/order_history.do"  
  158.            params = {  
  159.               'api_key':self.__apikey,  
  160.               'symbol':symbol,  
  161.               'status':status,  
  162.               'current_page':currentPage,  
  163.               'page_length':pageLength  
  164.            }  
  165.            params['sign'] = buildMySign(params,self.__secretkey)  
  166.            return httpPost(self.__url,ORDER_HISTORY_RESOURCE,params)  
  167.   
  168.   
  169.     def getKline(self,duration,size,since):  
  170.         kline_resourse = "https://www.okcoin.cn/api/v1/kline.do"  
  171.         params = {  
  172.             #'api_key': self.__apikey,  
  173.             'symbol'"btc_cny",  
  174.             'type': duration,  
  175.             'size': size,  
  176.             'since': since  
  177.         }  
  178.         temp_params = urllib.parse.urlencode(params)  
  179.         #print(temp_params)  
  180.         return httpGet(self.__url, kline_resourse, temp_params)  
  181. #############################################################################  
  182. #!/usr/bin/python  
  183. # -*- coding: utf-8 -*-  
  184. #用于访问OKCOIN 期货REST API  
  185. import urllib  
  186.   
  187. class OKCoinFuture:  
  188.   
  189.     def __init__(self,url,apikey,secretkey):  
  190.         self.__url = url  
  191.         self.__apikey = apikey  
  192.         self.__secretkey = secretkey  
  193.   
  194.     #OKCOIN期货行情信息  
  195.     def future_ticker(self,symbol,contractType):  
  196.         FUTURE_TICKER_RESOURCE = "/api/v1/future_ticker.do"  
  197.         params = ''  
  198.         if symbol:  
  199.             params += '&symbol=' + symbol if params else 'symbol=' +symbol  
  200.         if contractType:  
  201.             params += '&contract_type=' + contractType if params else 'contract_type=' +symbol  
  202.         return httpGet(self.__url,FUTURE_TICKER_RESOURCE,params)  
  203.   
  204.     #OKCoin期货市场深度信息  
  205.     def future_depth(self,symbol,contractType,size):   
  206.         FUTURE_DEPTH_RESOURCE = "/api/v1/future_depth.do"  
  207.         params = ''  
  208.         if symbol:  
  209.             params += '&symbol=' + symbol if params else 'symbol=' +symbol  
  210.         if contractType:  
  211.             params += '&contract_type=' + contractType if params else 'contract_type=' +symbol  
  212.         if size:  
  213.             params += '&size=' + size if params else 'size=' + size  
  214.         return httpGet(self.__url,FUTURE_DEPTH_RESOURCE,params)  
  215.   
  216.     #OKCoin期货交易记录信息  
  217.     def future_trades(self,symbol,contractType):  
  218.         FUTURE_TRADES_RESOURCE = "/api/v1/future_trades.do"  
  219.         params = ''  
  220.         if symbol:  
  221.             params += '&symbol=' + symbol if params else 'symbol=' +symbol  
  222.         if contractType:  
  223.             params += '&contract_type=' + contractType if params else 'contract_type=' +symbol  
  224.         return httpGet(self.__url,FUTURE_TRADES_RESOURCE,params)  
  225.   
  226.     #OKCoin期货指数  
  227.     def future_index(self,symbol):  
  228.         FUTURE_INDEX = "/api/v1/future_index.do"  
  229.         params=''  
  230.         if symbol:  
  231.             params = 'symbol=' +symbol  
  232.         return httpGet(self.__url,FUTURE_INDEX,params)  
  233.   
  234.     #获取美元人民币汇率  
  235.     def exchange_rate(self):  
  236.         EXCHANGE_RATE = "/api/v1/exchange_rate.do"  
  237.         return httpGet(self.__url,EXCHANGE_RATE,'')  
  238.   
  239.     #获取预估交割价  
  240.     def future_estimated_price(self,symbol):  
  241.         FUTURE_ESTIMATED_PRICE = "/api/v1/future_estimated_price.do"  
  242.         params=''  
  243.         if symbol:  
  244.             params = 'symbol=' +symbol  
  245.         return httpGet(self.__url,FUTURE_ESTIMATED_PRICE,params)  
  246.   
  247.     #期货全仓账户信息  
  248.     def future_userinfo(self):  
  249.         FUTURE_USERINFO = "/api/v1/future_userinfo.do?"  
  250.         params ={}  
  251.         params['api_key'] = self.__apikey  
  252.         params['sign'] = buildMySign(params,self.__secretkey)  
  253.         return httpPost(self.__url,FUTURE_USERINFO,params)  
  254.   
  255.     #期货全仓持仓信息  
  256.     def future_position(self,symbol,contractType):  
  257.         FUTURE_POSITION = "/api/v1/future_position.do?"  
  258.         params = {  
  259.             'api_key':self.__apikey,  
  260.             'symbol':symbol,  
  261.             'contract_type':contractType  
  262.         }  
  263.         params['sign'] = buildMySign(params,self.__secretkey)  
  264.         return httpPost(self.__url,FUTURE_POSITION,params)  
  265.   
  266.     #期货下单  
  267.     def future_trade(self,symbol,contractType,price='',amount='',tradeType='',matchPrice='',leverRate=''):  
  268.         FUTURE_TRADE = "/api/v1/future_trade.do?"  
  269.         params = {  
  270.             'api_key':self.__apikey,  
  271.             'symbol':symbol,  
  272.             'contract_type':contractType,  
  273.             'amount':amount,  
  274.             'type':tradeType,  
  275.             'match_price':matchPrice,  
  276.             'lever_rate':leverRate  
  277.         }  
  278.         if price:  
  279.             params['price'] = price  
  280.         params['sign'] = buildMySign(params,self.__secretkey)  
  281.         return httpPost(self.__url,FUTURE_TRADE,params)  
  282.   
  283.     #期货批量下单  
  284.     def future_batchTrade(self,symbol,contractType,orders_data,leverRate):  
  285.         FUTURE_BATCH_TRADE = "/api/v1/future_batch_trade.do?"  
  286.         params = {  
  287.             'api_key':self.__apikey,  
  288.             'symbol':symbol,  
  289.             'contract_type':contractType,  
  290.             'orders_data':orders_data,  
  291.             'lever_rate':leverRate  
  292.         }  
  293.         params['sign'] = buildMySign(params,self.__secretkey)  
  294.         return httpPost(self.__url,FUTURE_BATCH_TRADE,params)  
  295.   
  296.     #期货取消订单  
  297.     def future_cancel(self,symbol,contractType,orderId):  
  298.         FUTURE_CANCEL = "/api/v1/future_cancel.do?"  
  299.         params = {  
  300.             'api_key':self.__apikey,  
  301.             'symbol':symbol,  
  302.             'contract_type':contractType,  
  303.             'order_id':orderId  
  304.         }  
  305.         params['sign'] = buildMySign(params,self.__secretkey)  
  306.         return httpPost(self.__url,FUTURE_CANCEL,params)  
  307.   
  308.     #期货获取订单信息  
  309.     def future_orderinfo(self,symbol,contractType,orderId,status,currentPage,pageLength):  
  310.         FUTURE_ORDERINFO = "/api/v1/future_order_info.do?"  
  311.         params = {  
  312.             'api_key':self.__apikey,  
  313.             'symbol':symbol,  
  314.             'contract_type':contractType,  
  315.             'order_id':orderId,  
  316.             'status':status,  
  317.             'current_page':currentPage,  
  318.             'page_length':pageLength  
  319.         }  
  320.         params['sign'] = buildMySign(params,self.__secretkey)  
  321.         return httpPost(self.__url,FUTURE_ORDERINFO,params)  
  322.   
  323.     #期货逐仓账户信息  
  324.     def future_userinfo_4fix(self):  
  325.         FUTURE_INFO_4FIX = "/api/v1/future_userinfo_4fix.do?"  
  326.         params = {'api_key':self.__apikey}  
  327.         params['sign'] = buildMySign(params,self.__secretkey)  
  328.         return httpPost(self.__url,FUTURE_INFO_4FIX,params)  
  329.   
  330.     #期货逐仓持仓信息  
  331.     def future_position_4fix(self,symbol,contractType,type1):  
  332.         FUTURE_POSITION_4FIX = "/api/v1/future_position_4fix.do?"  
  333.         params = {  
  334.             'api_key':self.__apikey,  
  335.             'symbol':symbol,  
  336.             'contract_type':contractType,  
  337.             'type':type1  
  338.         }  
  339.         params['sign'] = buildMySign(params,self.__secretkey)  
  340.         return httpPost(self.__url,FUTURE_POSITION_4FIX,params)  
  341.   
  342.     def getKline(self,duration,size,since):  
  343.         kline_resourse = "https://www.okcoin.com/api/v1/future_kline.do?"  
  344.         params = {  
  345.             #'api_key': self.__apikey,  
  346.             'symbol'"btc_usd",  
  347.             'type': duration,  
  348.             'contract_type':"quarter",  
  349.             'size': size,  
  350.             'since': since  
  351.         }  
  352.         temp_params = urllib.parse.urlencode(params)  
  353.         return httpGet(self.__url, kline_resourse, temp_params)  
  354.         #return httpPost(self.__url,kline_resourse,params)  
  355.         #temp_params = urllib.parse.urlencode(params)  
  356.         #print(temp_params)  
  357.        # return httpGet(self.__url, kline_resourse, temp_params)  
  358. ########################  

原创粉丝点击