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

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

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

(0)

相关推荐

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

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

  • Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals

  • python微信跳一跳系列之自动计算跳一跳距离

    到现在为止,我们通过前面几篇博文的描述和分析,已经可以自动实现棋子.棋盘位置的准确判断,计算一下两个中心点之间的距离,并绘制在图形上,效果如下. 效果 图中的棋子定位采用HSV颜色识别,棋盘定位采用轮廓分割的方法获得,感兴趣的同学可以对其它的定位方法自行验证. 代码 # -*- coding: utf-8 -*- #VS2017+python3.6+opencv3.4 #2018.02.03 #作者:艾克思 import cv2 import numpy as np import math de

  • Python 做曲线拟合和求积分的方法

    这是一个由加油站油罐传感器测量的油罐高度数据和出油体积,根据体积和高度的倒数,用截面积来描述油罐形状,求出拟合曲线,再用标准数据,求积分来验证拟合曲线效果和误差的一个小项目. 主要的就是首先要安装Anaconda  python库,然后来运用这些数学工具. ###最小二乘法试验### import numpy as np import pymysql from scipy.optimize import leastsq from scipy import integrate ###绘图,看拟合效

  • Python做图像处理及视频音频文件分离和合成功能

    一.简介 Imageio是一个Python库,提供了一个简单的界面来读取和写入各种图像数据,包括动画图像,视频,体积数据和科学格式.它是跨平台的,运行在Python 2.7和3.4+上,易于安装. 作为用户,您只需要记住一些功能: imread()和imwrite() - 用于单个图像 mimread()和mimwrite() - 用于图像系列(动画) volread()和volwrite() - 用于体积图像数据 get_reader()和get_writer() - 用于更多控制(例如流式传

  • Python还能这么玩之用Python做个小游戏的外挂

    一.前言 我打开4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单做好端给他便好~要怎么实现他自动做菜呢? 二.工具的准备 需要安装autopy和PIL以及pywin32包. 1.截屏和图像处理工具 截屏是获取游戏图像以供分析游戏提示,其实没有专门的工具直接Print Screen粘贴到图像处理工具里也可以.我用的是PicPick,相当好用,而且个人用户是免费的,而图像处理则是为了获取各种信息的,我们要用它得到点菜图像后保存起来,供外挂分析

  • 我用Python做个AI出牌器斗地主把把赢

    目录 前言 一.核心功能设计 二.实现步骤 1. UI设计排版布局 2. 手牌和出牌数据识别 3. AI出牌方案输出 三.出牌器用法 1. 环境配置 2. 坐标调整确认 3. 运行测试 前言 最近在网上看到一个有意思的开源项目,基于快手团队开发的开源AI斗地主--DouZero做的一个"成熟"的AI,项目开源地址[https://github.com/tianqiraf/DouZero_For_HappyDouDiZhu – tianqiraf]. 今天我们就一起来学习下是如何制作一个

  • 教你使用python做一个“罚点球”小游戏

    在学习了一点 Python 基础之后,我们可以做一个罚点球的小游戏,大概流程是这样: 每一轮,你先输入一个方向射门,然后电脑随机判断一个方向扑救.方向不同则算进球得分,方向相同算扑救成功,不得分. 之后攻守轮换,你选择一个方向扑救,电脑随机方向射门. 第5轮结束之后,如果得分不同,比赛结束. 5轮之内,如果一方即使踢进剩下所有球,也无法达到另一方当前得分,比赛结束. 5论之后平分,比赛继续进行,直到某一轮分出胜负. 实现方法有很多种,我这里提供的只是一种参考.你可以按照自己喜欢的方式去做,那样才

  • Python做文本按行去重的实现方法

    文本: 每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行. 思路: 根据字典和字符串切割. 建立一个空字典. 读入文本,并对每行切割前半部分,在读入文本的过程中循环在这个字典中查找,如果没找到,则写入该行到字典.否则,则表示该行已经被写入过字典了(即出现重复的行了),不再写入字典,这就实现了对于重复的行只保留一行的目的. 文本如下: /promotion/232 utm_source /promotion/237 LandingPage/

  • 用python做一个搜索引擎(Pylucene)的实例代码

    1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信息到网络信息库之中(一般使用爬虫):然后信息整理模块对采集的信息进行分词.去停用词.赋权重等操作后建立索引表(一般是倒排索引)构成索引库:最后用户查询模块就可以识别用户的检索需求并提供检索服务啦. 图1 搜索引擎的一般结构 2. 使用python实现一个简单搜索引擎 2.1 问题分析 从图1看,一个完整的搜索

随机推荐