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

作者:云金杞 时间:2021-06-28 06:01:31 

本文实例为大家分享了python比特币初始配置的具体代码,供大家参考,具体内容如下


# -*- coding: utf-8 -*-
"""
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')
 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 = "https://www.okcoin.cn/api/v1/kline.do"
   params = {
     #'api_key': self.__apikey,
     'symbol': "btc_cny",
     'type': duration,
     'size': size,
     'since': since
   }
   temp_params = urllib.parse.urlencode(params)
   #print(temp_params)
   return httpGet(self.__url, kline_resourse, temp_params)
########################################################
#!/usr/bin/python
# -*- coding: utf-8 -*-
#用于访问OKCOIN 期货REST API
import urllib

class OKCoinFuture:

def __init__(self,url,apikey,secretkey):
   self.__url = url
   self.__apikey = apikey
   self.__secretkey = secretkey

#OKCOIN期货行情信息
 def future_ticker(self,symbol,contractType):
   FUTURE_TICKER_RESOURCE = "/api/v1/future_ticker.do"
   params = ''
   if symbol:
     params += '&symbol=' + symbol if params else 'symbol=' +symbol
   if contractType:
     params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
   return httpGet(self.__url,FUTURE_TICKER_RESOURCE,params)

#OKCoin期货市场深度信息
 def future_depth(self,symbol,contractType,size):  
   FUTURE_DEPTH_RESOURCE = "/api/v1/future_depth.do"
   params = ''
   if symbol:
     params += '&symbol=' + symbol if params else 'symbol=' +symbol
   if contractType:
     params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
   if size:
     params += '&size=' + size if params else 'size=' + size
   return httpGet(self.__url,FUTURE_DEPTH_RESOURCE,params)

#OKCoin期货交易记录信息
 def future_trades(self,symbol,contractType):
   FUTURE_TRADES_RESOURCE = "/api/v1/future_trades.do"
   params = ''
   if symbol:
     params += '&symbol=' + symbol if params else 'symbol=' +symbol
   if contractType:
     params += '&contract_type=' + contractType if params else 'contract_type=' +symbol
   return httpGet(self.__url,FUTURE_TRADES_RESOURCE,params)

#OKCoin期货指数
 def future_index(self,symbol):
   FUTURE_INDEX = "/api/v1/future_index.do"
   params=''
   if symbol:
     params = 'symbol=' +symbol
   return httpGet(self.__url,FUTURE_INDEX,params)

#获取美元人民币汇率
 def exchange_rate(self):
   EXCHANGE_RATE = "/api/v1/exchange_rate.do"
   return httpGet(self.__url,EXCHANGE_RATE,'')

#获取预估交割价
 def future_estimated_price(self,symbol):
   FUTURE_ESTIMATED_PRICE = "/api/v1/future_estimated_price.do"
   params=''
   if symbol:
     params = 'symbol=' +symbol
   return httpGet(self.__url,FUTURE_ESTIMATED_PRICE,params)

#期货全仓账户信息
 def future_userinfo(self):
   FUTURE_USERINFO = "/api/v1/future_userinfo.do?"
   params ={}
   params['api_key'] = self.__apikey
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_USERINFO,params)

#期货全仓持仓信息
 def future_position(self,symbol,contractType):
   FUTURE_POSITION = "/api/v1/future_position.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType
   }
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_POSITION,params)

#期货下单
 def future_trade(self,symbol,contractType,price='',amount='',tradeType='',matchPrice='',leverRate=''):
   FUTURE_TRADE = "/api/v1/future_trade.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType,
     'amount':amount,
     'type':tradeType,
     'match_price':matchPrice,
     'lever_rate':leverRate
   }
   if price:
     params['price'] = price
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_TRADE,params)

#期货批量下单
 def future_batchTrade(self,symbol,contractType,orders_data,leverRate):
   FUTURE_BATCH_TRADE = "/api/v1/future_batch_trade.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType,
     'orders_data':orders_data,
     'lever_rate':leverRate
   }
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_BATCH_TRADE,params)

#期货取消订单
 def future_cancel(self,symbol,contractType,orderId):
   FUTURE_CANCEL = "/api/v1/future_cancel.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType,
     'order_id':orderId
   }
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_CANCEL,params)

#期货获取订单信息
 def future_orderinfo(self,symbol,contractType,orderId,status,currentPage,pageLength):
   FUTURE_ORDERINFO = "/api/v1/future_order_info.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType,
     'order_id':orderId,
     'status':status,
     'current_page':currentPage,
     'page_length':pageLength
   }
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_ORDERINFO,params)

#期货逐仓账户信息
 def future_userinfo_4fix(self):
   FUTURE_INFO_4FIX = "/api/v1/future_userinfo_4fix.do?"
   params = {'api_key':self.__apikey}
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_INFO_4FIX,params)

#期货逐仓持仓信息
 def future_position_4fix(self,symbol,contractType,type1):
   FUTURE_POSITION_4FIX = "/api/v1/future_position_4fix.do?"
   params = {
     'api_key':self.__apikey,
     'symbol':symbol,
     'contract_type':contractType,
     'type':type1
   }
   params['sign'] = buildMySign(params,self.__secretkey)
   return httpPost(self.__url,FUTURE_POSITION_4FIX,params)

def getKline(self,duration,size,since):
   kline_resourse = "https://www.okcoin.com/api/v1/future_kline.do?"
   params = {
     #'api_key': self.__apikey,
     'symbol': "btc_usd",
     'type': duration,
     'contract_type':"quarter",
     'size': size,
     'since': since
   }
   temp_params = urllib.parse.urlencode(params)
   return httpGet(self.__url, kline_resourse, temp_params)
   #return httpPost(self.__url,kline_resourse,params)
   #temp_params = urllib.parse.urlencode(params)
   #print(temp_params)
   # return httpGet(self.__url, kline_resourse, temp_params)
########################

来源:http://blog.csdn.net/qq_26948675/article/details/54783472

标签:python,比特币
0
投稿

猜你喜欢

  • python自动化测试之如何解析excel文件

    2022-08-28 08:24:36
  • [翻译]网页设计中的模式窗口

    2009-05-29 18:00:00
  • 一分钟带你掌握Python中pip的安装与使用方法

    2021-02-10 10:38:12
  • Python编解码问题及文本文件处理方法详解

    2021-04-13 07:52:06
  • pip指定python位置安装软件包的方法

    2023-07-13 10:29:47
  • 经验之谈:MySQL与ASP.NET配合更强大

    2008-12-23 15:26:00
  • 有感用户体验规划与系统实现

    2009-11-27 18:33:00
  • python字符串str和字节数组相互转化方法

    2022-02-14 08:31:48
  • 如何解决ASP脚本运行超时的错误

    2007-10-14 11:38:00
  • PHP函数shuffle()取数组若干个随机元素的方法分析

    2023-10-14 16:06:55
  • python实现将列表中各个值快速赋值给多个变量

    2023-11-23 18:02:05
  • Python深度学习pytorch神经网络图像卷积运算详解

    2021-08-04 12:19:49
  • Mysql主从数据库(Master/Slave)同步配置与常见错误

    2024-01-21 17:48:35
  • Python中hash加密简介及使用方法

    2022-08-16 01:06:06
  • 从Vista地址栏到网站导航菜单

    2009-09-08 12:35:00
  • Python如何使用opencv进行手势识别详解

    2021-11-06 07:12:23
  • Python编写memcached启动脚本代码实例

    2023-02-13 19:59:51
  • focus 进 textarea 元素后光标位置的修复

    2008-09-27 13:27:00
  • Python 中制作偶数列表的方法

    2022-08-20 20:15:56
  • python实现将视频按帧读取到自定义目录

    2023-07-15 01:24:11
  • asp之家 网络编程 m.aspxhome.com