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 ...
随机推荐
- 使用apidoc根据JS文件生成接口文档
1.安装nodejs.下载网址:http://www.nodejs.org: 2.安装apidoc.运行cmd,切换到nodejs的安装目录,在命令行输入: 1 npm install apidoc ...
- Python爬虫番外篇之Cookie和Session
关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...
- JavaScript中的设计模式:策略模式
无论学习前端还是后端设计模式是作为一名程序员不可缺少的知识,就像下底传中对于一个边锋来说. 一.策略模式 策略模式给人的第一感觉就是在代码里面消除了很多if-else分支语句,比如一个求员工奖金的程序 ...
- 如何删除svn标签
SVN是Subversion的简称,是一个开放源代码的版本控制系统,对于多人共同开发同一个项目非常有用,但有一点比较让人头疼,那就是项目移植的时候,原来的文件夹带有很多可恶的svn标签,使其不能add ...
- BI服务器配置与客户端情况
1. BI描述 FineBI是一款纯B/S端的商业智能分析服务平台:支持通过web应用服务器将其部署在服务器上,提供企业云服务器.用户端只需要使用一个浏览器即可进行服务平台的访问和使用.因此在配置使用 ...
- AugularJS从入门到实践(三)
前 言 前端 AngularJS是为了克服HTML在构建应用上的不足而设计的.(引用百度百科) AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.Angu ...
- (转)Spring 的 init-method 和 destory-method
背景:今天在项目中看到spring中bean在初始化和注销时候的方法定义,之前没有用过这种方式,在此记录下,方便后期查看! 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: ...
- 【Mysql】MySQL与Oracle的大小写问题
转载来源:http://aofengblog.blog.163.com/blog/static/63170212010101065030136/ MySQL与Oracle在大小写处理上的区别: 1MY ...
- C#导入导出Excele数据
注:对于实体类对象最好新建一个并且继承原有实体类,这样可以将类型进行修改: 方法一:此种方法是用EPPLUS中的FileInfo流进行读取的(是不是流我还真不太了解,若有懂得请留言,非常感谢了) us ...
- if else 和switch case以及continue,break的区别
1,if 经常用于做区间判断 或者 固定值: break和continue的使用 break:用来结束循环结构或者switch case continue:结束此次循环进入 ...