OKCoin期货现货API[Python3版]
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 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) 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,httpPost class OKCoinSpot: def __init__(self,url,apikey,secretkey): self.__url = url self.__apikey = apikey self.__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.__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)
三、OkcoinFutureAPI.py,OKCoin期货API
#!/usr/bin/python # -*- coding: utf-8 -*- #用于访问OKCOIN 期货REST API from HttpMD5Util import buildMySign,httpGet,httpPost 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)
四、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))
代码地址
http://files.cnblogs.com/files/fangbei/okcoin-api-python3.zip
OKCoin期货现货API[Python3版]的更多相关文章
- 火币网现货API[Python3版]
火币 期货 现货 API [Python3版] 一.Util.py,基础类,包括参数配置.签名,HTTP 请求方法,发送信息到API #coding=utf-8 import hashlib impo ...
- 聚币网API[Python3版]
代码 #!/usr/bin/env python # -*- coding:utf-8 -*- import hashlib import requests import time import ur ...
- 聚币网API[Python2版]
聚币 现货 API [Python2版] 一.utils.py,基础类,包括HTTP 请求.签名等 # -*- coding: utf-8 -*- import hashlib import hmac ...
- RESTful API终极版序列化封装
urls: from django.conf.urls import url from app01 import views urlpatterns = [ # url(r"comment/ ...
- 百度地图 JavaScript API 极速版 开发体会
前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发人员细分成普通web开发人员和移动web开发人员.正好用到了手机地图这块决定尝 ...
- 阿里大鱼短信接口(Python3版)
近期由于须要用到短信接口,选型的的结果是用阿里大鱼的短信服务,然而淘宝开放平台(TOP)的SDK已经非常多年没有更新了.不支持python3.自己动手改了半天,还是不太正常,索性不用它,自己写一个算了 ...
- ffmpeg 部分api delphi 版
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c++ 调用, 抽空研究了一下该库的最新版 ,把部分api 翻译成了dephi版的 记录一下 地址 ffmpegvcl.zip
- 百度翻译新API C#版在 winform,Asp.Net的小程序
3月的下午,在C#群里日常装逼(聊天), 一兄弟说百度翻译有没有winfrom上用的Demo,问了一天 嫌烦了 我就干脆自己写个: PS 百度上的部分代码害死人啊 api地址都换的不成样了, 还 ...
- Git项目代码统计-Python3版gitstats
gitstats是一个Git项目统计工具,可以统计git项目代码提交量,提交者的贡献量及活动热力图等信息,如下图. gitstats基于Python2.7,使用git log命令生成统计信息,基于gn ...
随机推荐
- 字符的读写函数:fgetc()和fputc()
fgetc(); 功能: 从文件中读取字符. 头文件: #include <stdio.h> 函数原型:int fgetc(FILE *stream); 返 ...
- 关于shell脚本函数、数组、字符串截取、svn更新发布实例
#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm #svn发布目录,要 ...
- Linux基础(三)
一.正文处理命令及tar命令 1.文件合并 cat a.txt b.txt > c.txt 2.打包 归档命令tar可以把多个文件打包成一个文件 如tar cvf test.tar a.txt ...
- Docker 中的一些概念
笔者使用 Mac 系统玩的,所以会更多阐述 Mac 上使用的一些东西. 在安装之前有些 Docker 相关的概念需要了解一下,以便我们更好了解 Docker. 简单来说,安装 Docker 之后,会在 ...
- jsp 重定向技术
页面重定向之后,request对象的属性全部失效,生成一个新的requeset对象
- strtok函数 分类: c++ 2014-11-02 15:24 214人阅读 评论(0) 收藏
strtok函数是cstring文件中的函数 strtok函数是cstring文件中的函数 其功能是截断字符串 原型为:char *strtok(char s[],const char *delin) ...
- Python数据网络采集5--处理Javascript和重定向
Python数据网络采集5--处理Javascript和重定向 到目前为止,我们和网站服务器通信的唯一方式,就是发出HTTP请求获取页面.有些网页,我们不需要单独请求,就可以和网络服务器交互(收发信息 ...
- CentOS下安装Nginx服务器
一.nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos7作为安装环境. 1.1 gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果 ...
- 使用Spring Cloud和Docker构建微服务架构
原文:https://dzone.com/articles/microservice-architecture-with-spring-cloud-and-do 作者:Alexander Lukyan ...
- NYOJ--42--dfs--一笔画问题
/* Name: NYOJ--42--一笔画问题 Author: shen_渊 Date: 18/04/17 15:22 Description: 这个题用并查集做,更好.在练搜索,试试手 本来用的v ...