OKCoin 期货 现货 API [Python版]

一、HttpMD5Util.py,基础类,包括MD5签名,HTTP Post及HTTP Get方法

#!/usr/bin/python
# -*- coding: utf-8 -*-
#用于进行http请求,以及MD5加密,生成签名的工具类import http.client
import urllib
import json
import hashlib
import timedef buildMySign(params,secretKey):sign = ''for key in sorted(params.keys()):sign += key + '=' + str(params[key]) +'&'data = sign+'secret_key='+secretKeyreturn  hashlib.md5(data.encode("utf8")).hexdigest().upper()def httpGet(url,resource,params=''):conn = http.client.HTTPSConnection(url, timeout=10)conn.request("GET",resource + '?' + params)response = conn.getresponse()data = response.read().decode('utf-8')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)conn.request("POST", resource, temp_params, headers)response = conn.getresponse()data = response.read().decode('utf-8')params.clear()conn.close()return data

二、OkcoinSpotAPI.py,OKCoin现货API

#!/usr/bin/python
# -*- coding: utf-8 -*-
#用于访问OKCOIN 现货REST API
from HttpMD5Util import buildMySign,httpGet,httpPostclass OKCoinSpot:def __init__(self,url,apikey,secretkey):self.__url = urlself.__apikey = apikeyself.__secretkey = 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.__apikeyparams['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'] = priceif amount:params['amount'] = amountparams['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)

三、OkcoinFutureAPI.py,OKCoin期货API

#!/usr/bin/python
# -*- coding: utf-8 -*-
#用于访问OKCOIN 期货REST API
from HttpMD5Util import buildMySign,httpGet,httpPostclass OKCoinFuture:def __init__(self,url,apikey,secretkey):self.__url = urlself.__apikey = apikeyself.__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=' +symbolif contractType:params += '&contract_type=' + contractType if params else 'contract_type=' +symbolreturn 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=' +symbolif contractType:params += '&contract_type=' + contractType if params else 'contract_type=' +symbolif size:params += '&size=' + size if params else 'size=' + sizereturn 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=' +symbolif contractType:params += '&contract_type=' + contractType if params else 'contract_type=' +symbolreturn 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=' +symbolreturn 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=' +symbolreturn httpGet(self.__url,FUTURE_ESTIMATED_PRICE,params)#期货全仓账户信息def future_userinfo(self):FUTURE_USERINFO = "/api/v1/future_userinfo.do?"params ={}params['api_key'] = self.__apikeyparams['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'] = priceparams['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)

四、Client.py,客户端参数配置及调用方法

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# encoding: utf-8
#客户端调用,用于查看API返回结果from OkcoinSpotAPI import OKCoinSpot
from OkcoinFutureAPI import OKCoinFuture#初始化apikey,secretkey,url
apikey = 'XXXX'
secretkey = 'XXXXX'
okcoinRESTURL = 'www.okcoin.com'   #请求注意:国内账号需要 修改为 www.okcoin.cn  #现货API
okcoinSpot = OKCoinSpot(okcoinRESTURL,apikey,secretkey)#期货API
okcoinFuture = OKCoinFuture(okcoinRESTURL,apikey,secretkey)print (u' 现货行情 ')
print (okcoinSpot.ticker('btc_usd'))print (u' 现货深度 ')
print (okcoinSpot.depth('btc_usd'))#print (u' 现货历史交易信息 ')
#print (okcoinSpot.trades())#print (u' 用户现货账户信息 ')
#print (okcoinSpot.userinfo())#print (u' 现货下单 ')
#print (okcoinSpot.trade('ltc_usd','buy','0.1','0.2'))#print (u' 现货批量下单 ')
#print (okcoinSpot.batchTrade('ltc_usd','buy','[{price:0.1,amount:0.2},{price:0.1,amount:0.2}]'))#print (u' 现货取消订单 ')
#print (okcoinSpot.cancelOrder('ltc_usd','18243073'))#print (u' 现货订单信息查询 ')
#print (okcoinSpot.orderinfo('ltc_usd','18243644'))#print (u' 现货批量订单信息查询 ')
#print (okcoinSpot.ordersinfo('ltc_usd','18243800,18243801,18243644','0'))#print (u' 现货历史订单信息查询 ')
#print (okcoinSpot.orderHistory('ltc_usd','0','1','2'))#print (u' 期货行情信息')
#print (okcoinFuture.future_ticker('ltc_usd','this_week'))#print (u' 期货市场深度信息')
#print (okcoinFuture.future_depth('btc_usd','this_week','6'))#print (u'期货交易记录信息')
#print (okcoinFuture.future_trades('ltc_usd','this_week'))#print (u'期货指数信息')
#print (okcoinFuture.future_index('ltc_usd'))#print (u'美元人民币汇率')
#print (okcoinFuture.exchange_rate())#print (u'获取预估交割价')
#print (okcoinFuture.future_estimated_price('ltc_usd'))#print (u'获取全仓账户信息')
#print (okcoinFuture.future_userinfo())#print (u'获取全仓持仓信息')
#print (okcoinFuture.future_position('ltc_usd','this_week'))#print (u'期货下单')
#print (okcoinFuture.future_trade('ltc_usd','this_week','0.1','1','1','0','20'))#print (u'期货批量下单')
#print (okcoinFuture.future_batchTrade('ltc_usd','this_week','[{price:0.1,amount:1,type:1,match_price:0},{price:0.1,amount:3,type:1,match_price:0}]','20'))#print (u'期货取消订单')
#print (okcoinFuture.future_cancel('ltc_usd','this_week','47231499'))#print (u'期货获取订单信息')
#print (okcoinFuture.future_orderinfo('ltc_usd','this_week','47231812','0','1','2'))#print (u'期货逐仓账户信息')
#print (okcoinFuture.future_userinfo_4fix())#print (u'期货逐仓持仓信息')
#print (okcoinFuture.future_position_4fix('ltc_usd','this_week',1))

转载于:https://www.cnblogs.com/fangbei/p/okcoin-api-python.html

OKCoin期货现货API[Python3版]相关推荐

  1. python 期货现货差价监测_火币网现货API[Python3版]

    #coding=utf-8 from Util import * '''获取账号详情''' defgetAccountInfo(method): params= {"method" ...

  2. python 期货现货差价监测_期货现货价差小工具——天勤量化(TqSdk)

    #!usr/bin/env python3 #-*- coding:utf-8 -*- """@author: yanqiong@file: futures_spot_s ...

  3. Windows下安装Z3的Python3版

    文章目录 Windows下安装Z3的Python3版 pip 安装(不推荐,很慢) 使用微软官方构建好的DLL(推荐,快速) Windows下安装Z3的Python3版 GitHub官方仓库地址:Z3 ...

  4. 微信app支付功能-服务端的实现-python3版

    微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...

  5. 支付宝app支付功能-服务端的实现-python3版

    支付宝app支付功能-服务端的实现-python3版 一:需求说明 二:支付宝app支付处理流程 三:所需依赖 3.1 依赖库 3.2 支付配置 3.2.1 沙箱环境配置 3.2.2 正式环境配置 四 ...

  6. 成功解决Python3版UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0x90 in position 614: ordinal not in

    成功解决Python3版UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 614: ordinal not in ...

  7. html5 百度地图api文档,开发指南--百度地图JavaScript API大众版.doc

    开发指南--百度地图JavaScriptAPI大众版开发指南--百度地图JavaScriptAPI大众版 简介 JavaScript API大众版 JavaScript API功能介绍 百度地图Jav ...

  8. asp 退出登录修改cookie能进入后台_Vue3.0 - Composition API 体验版开发后台管理系统...

    手把手撸码前端,实战大公司级后台管理系统开发,正规实践了解项目开发整体流程 由0到1搭建后台管理系统,采用 Vue3.0 - Composition API 体验版开发,优先体验3.0 API 语法: ...

  9. API v3版微信支付平台证书获取与自动更新

    API v3版微信支付平台证书获取与自动更新 关于微信证书 获取平台证书 证书自动更新 首次下载证书 关于微信证书 微信支付开发有两份证书. ♥ 商户证书:商户平台证书私钥可以对请求进行签名,微信服务 ...

最新文章

  1. 申报成功后怎样修改_每日分享|电子税务局操作指引之更正错误申报
  2. 【RxSwift 实践系列 2/3】thinking in Rx- Create和Drive
  3. Linux内核分析 - 网络[十六]:TCP三次握手
  4. php 控制器自动,ThinkPHP 新建控制器
  5. springcloud 服务降级
  6. 关于电子科技大学学生用餐状况的一些调查
  7. spring事务REQUIRED REQUIRES_NEW区别
  8. Java核心技术(进阶)
  9. springboot2 security 登陆成功后无法跳转到指定页面,还是默认页面
  10. 事务的传播级别(行为)
  11. openwrt对mt7620n的zbt-wa05路由器…
  12. 时间都去哪了——timing budget(一)
  13. 以太坊区块链入门之实现简单DApp开发
  14. Ubuntu 20.04 关闭鼠标加速
  15. 【实用工具】Chrome浏览器英文翻译插件推荐:Google翻译
  16. ubuntu手贱卸载Python导致桌面有些图标不见解决方案
  17. P1296 奶牛的耳语
  18. apache mina error dead lock: iofuture.await()-yidianfengfan-iteye技术网站
  19. BDP数据可视化 - 散点图
  20. 推迟和超前格林函数介绍

热门文章

  1. 人类最常见的25个认知偏误(一)
  2. 《Unity开发实战》——2.4节自定义镜头光晕效果
  3. iqn怎么查 linux_如何利用procfs读取iSCSI Initiator IQN信息
  4. ffmpeg/ffplay 添加实时的时间水印
  5. 从零开始java数据库SQL优化(二):多个LEFT JOIN的SQL优化
  6. 发现 3 个已存在的 RPM 数据库问题, 'yum check' 输出如下 解决办法
  7. [转载] Ruby、Rails、Agile的启示
  8. git rebase出错:Cannot rebase:You have unstaged changes
  9. Android 今日收获
  10. TCP/IP第二章笔记链路层协议