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的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
python实现redis三种cas事务操作
Dec 19 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
python实现最大优先队列
Aug 29 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python os模块在系统管理中的应用
Jun 22 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
如何在python中处理配置文件代码实例
Sep 27 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 11 Python
python实现对doc、txt、xls等文档的读写操作
Apr 02 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python 命令行参数sys.argv
2008/09/06 Python
python访问类中docstring注释的实现方法
2015/05/04 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
python3中编码获取网页的实例方法
2020/11/16 Python
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
会议主持词
2014/03/17 职场文书
广告学专业求职信
2014/06/19 职场文书
党章培训心得体会
2014/09/04 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
市场营销计划书范文
2015/01/16 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书