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


Posted in Python onJanuary 23, 2018

本文实例为大家分享了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) 
########################

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作json数据的一个简单例子
Apr 17 Python
python音频处理用到的操作的示例代码
Oct 27 Python
python模块之paramiko实例代码
Jan 31 Python
python3实现磁盘空间监控
Jun 21 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
pytorch数据预处理错误的解决
Feb 20 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
如何基于Python按行合并两个txt
Nov 03 Python
浅谈Python类的单继承相关知识
May 12 Python
python在非root权限下的安装方法
Jan 23 #Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 #Python
Python 查看文件的读写权限方法
Jan 23 #Python
Python3 中文文件读写方法
Jan 23 #Python
Python3之文件读写操作的实例讲解
Jan 23 #Python
Python实现邮件的批量发送的示例代码
Jan 23 #Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 #Python
You might like
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP crc32()函数讲解
2019/02/14 PHP
自己动手开发jQuery插件教程
2011/08/25 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python获取本机所有IP地址的方法
2018/12/26 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
通过实例了解python property属性
2019/11/01 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
活动总结格式范文
2014/04/26 职场文书
节能环保演讲稿
2014/08/28 职场文书
立志成才演讲稿
2014/09/04 职场文书
学校捐款活动总结
2015/05/09 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
html5调用摄像头截图功能
2022/01/18 Javascript
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript