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压缩解压缩zip文件及破解zip文件密码的方法
Nov 04 Python
Apache如何部署django项目
May 21 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
python实现俄罗斯方块
Jun 26 Python
详解python多线程之间的同步(一)
Apr 03 Python
python dlib人脸识别代码实例
Apr 04 Python
基于Python函数和变量名解析
Jul 19 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
python实现批量文件重命名
Oct 31 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
Python爬取阿拉丁统计信息过程图解
May 12 Python
Python实现简繁体转换
Jun 07 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产生动态的影像图
2006/10/09 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
json跟xml的对比分析
2008/06/10 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
AngularJS ng-app 指令实例详解
2016/07/30 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
js 作用域和变量详解
2017/02/16 Javascript
react-router中的属性详解
2017/06/01 Javascript
javascript数组定义的几种方法
2017/10/06 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python利用lxml读写xml格式的文件
2017/08/10 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
基于Python log 的正确打开方式
2018/04/28 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python tkinter和exe打包的方法
2020/02/05 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
女性时尚在线:IVRose
2019/02/23 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
中文专业毕业生自荐信
2013/10/28 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书