聚币网API[Python2版]
聚币 现货 API [Python2版]
一、utils.py,基础类,包括HTTP 请求、签名等
# -*- coding: utf-8 -*- import hashlib import hmac import time import urllib import urllib2 import json from datetime import datetime from uuid import UUID from objutil import dict_obj # import requests def http_get(url, data_wrap, encode=False): if encode is True: data_wrap = urllib.urlencode(data_wrap) req = urllib2.Request(url, data=data_wrap) resp = urllib2.urlopen(req).read() dic = json.loads(resp) return dict_obj(dic) def get_signature(private_key, data): data_en = urllib.urlencode(data) md5_hash = getHash(private_key) msg = bytes(data_en).encode('utf-8') key = bytes(md5_hash).encode('utf-8') signature = hmac.new(key, msg, digestmod=hashlib.sha256).digest() last_warp = "%s&signature=%s" % (data_en, toHex(signature)) return last_warp def get_nonce_time(): curr_stamp = time.time() * 100 return str(long(curr_stamp)) def getHash(s): m = hashlib.md5() m.update(s) return m.hexdigest() def toHex(str): lst = [] for ch in str: hv = hex(ord(ch)).replace('0x', '') if len(hv) == 1: hv = ' + hv lst.append(hv) return reduce(lambda x, y: x + y, lst) def getUserData(cfg_file): f = open(cfg_file, 'r') account = {} for i in f.readlines(): ctype, passwd = i.split('=') account[ctype.strip()] = passwd.strip() return account class CJsonEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj, UUID): return str(obj) else: return json.JSONEncoder.default(self, obj) def json_dumps(result): return json.dumps(result, cls=CJsonEncoder)
二、jubi.py,聚币网API
# -*- coding: utf-8 -*- # @Author: wujiyu # @Date: 2017-07-09 10:44:41 # @Last Modified by: far # @Last Modified time: 2017-07-25 09:28:12 from utils import * BASE_API = "https://www.jubi.com/api/v1" TICKER_API = "%s/ticker" % BASE_API DEPTH_API = "%s/depth" % BASE_API ORDERS_API = "%s/orders" % BASE_API BALANCE_API = "%s/balance" % BASE_API TRADLIST_API = "%s/trade_list" % BASE_API TRADEVIEW_API = "%s/trade_view" % BASE_API TRADECANCEL_API = "%s/trade_cancel" % BASE_API TRADEADD_API = "%s/trade_add" % BASE_API class JuBi(object): """docstring for JuBi""" def __init__(self): super(JuBi, self).__init__() cfg = getUserData('data.cfg') self.public_key = cfg['public_key'] self.private_key = cfg['private_key'] def get_ticker(self, coin): data_wrap = {'coin': coin} return http_get(TICKER_API, data_wrap, True) def get_depth(self, coin): data_wrap = {'coin': coin} return http_get(DEPTH_API, data_wrap, True) def get_orders(self, coin): data_wrap = {'coin': coin} return http_get(ORDERS_API, data_wrap, True) def get_balance(self): nonce = get_nonce_time() data_wrap = {'nonce': nonce, 'key': self.public_key} all_data = get_signature(self.private_key, data_wrap) return http_get(BALANCE_API, all_data) def get_trade_list(self, coin): # open:正在挂单, all:所有挂单 trade_type = "open" since = " nonce = get_nonce_time() data_wrap = {'nonce': nonce, 'type': trade_type, 'coin': coin, 'since': since, 'key': self.public_key} all_data = get_signature(self.private_key, data_wrap) return http_get(TRADLIST_API, all_data) def get_trade_view_list(self, coin, id): nonce = get_nonce_time() data_wrap = {'nonce': nonce, 'coin': coin, 'key': self.public_key, 'id': id} all_data = get_signature(self.private_key, data_wrap) return http_get(TRADEVIEW_API, all_data) def cancel(self, coin, id): nonce = get_nonce_time() data_wrap = {'nonce': nonce, 'coin': coin, 'key': self.public_key, 'id': id} all_data = get_signature(self.private_key, data_wrap) return http_get(TRADECANCEL_API, all_data) def trade_add(self, coin, amount, price, sell_type): nonce = get_nonce_time() data_wrap = {'nonce': nonce, 'coin': coin, 'key': self.public_key, 'amount': amount, "price": price, "type": sell_type} all_data = get_signature(self.private_key, data_wrap) return http_get(TRADEADD_API, all_data) def sell(self, coin, amount, price): return self.trade_add(coin, amount, price, "sell") def buy(self, coin, amount, price): return self.trade_add(coin, amount, price, "buy") def cancel_all(self, coin, sell_type="all"): lst = self.get_trade_list(coin) print("当前挂单!!!!!!!!!!:%s" % (lst)) for item in lst: if sell_type == "all" or sell_type == item["type"]: self.cancel(coin, item["id"]) print("取消挂单成功!!!!!!!!!") print("当前挂单!!!!!!!!!!:%s" % (self.get_trade_list(coin))) return True def cancel_all_sell(self, coin): return self.cancel_all(coin, "sell") def cancel_all_buy(self, coin): return self.cancel_all(coin, "buy")
三、调用方法
coin = "btc" jubi = JuBi() print(jubi.get_ticker(coin)) # print(jubi.get_depth(coin)) # print(jubi.get_orders(coin)) # print(jubi.get_balance()) # print(jubi.get_trade_list(coin)) # print(jubi.get_trade_view_list(coin, "1")) # print(jubi.get_trade_cancel_list(coin, "1")) # print(jubi.sell(coin, 10000, 0.001)) # print(jubi.buy(coin, 100, 0.2)) # print(jubi.get_trade_cancel_list(coin, "1")) # print(jubi.cancel(coin, 940591))
四、下载地址
http://www.cnblogs.com/fangbei/p/jubi-api-python.html
http://files.cnblogs.com/files/fangbei/jubi-api-python2.zip
聚币网API[Python2版]的更多相关文章
- 聚币网API[Python3版]
代码 #!/usr/bin/env python # -*- coding:utf-8 -*- import hashlib import requests import time import ur ...
- 聚币网API使用教程 demo
原文 http://30daydo.com/article/181 目前还在完善,等功能完善了,就更新到csdn. 更新 2017-05-27 官方有API的文档,可是这个文档就像一个草稿一样,两个基 ...
- 火币网现货API[Python3版]
火币 期货 现货 API [Python3版] 一.Util.py,基础类,包括参数配置.签名,HTTP 请求方法,发送信息到API #coding=utf-8 import hashlib impo ...
- 淘宝网触屏版 - 学习笔记(1 - 关于meta)
注:本文是学习笔记,并不是教程,所以会有很多我不理解或猜测的问题,也会有不尽详实之处,望见谅. <meta charset="utf-8"> <meta cont ...
- 淘宝网触屏版 - 学习笔记(0 - 关于dpr)
注:本文是学习笔记,并不是教程,所以会有很多我不理解或猜测的问题,也会有不尽详实之处,望见谅. 对于pc端网页设计师来说,移动端的网页制作,我之前只是简单的加了一个 <meta name=&qu ...
- [转载]中国天气网API
最近在做个网站要用到天气网的api,在网上找了些参考资料,这篇文章对天气网api的介绍比较详细,所以转载之,谢谢原作者的辛勤劳动和奉献精神. 原文地址:http://g.kehou.com/t1033 ...
- OKCoin期货现货API[Python3版]
OKCoin 期货 现货 API [Python版] 一.HttpMD5Util.py,基础类,包括MD5签名,HTTP Post及HTTP Get方法 #!/usr/bin/python # -*- ...
- 火币Huobi API Websocket
本文介绍火币Huobi API Websocket WebSocket API简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了客户端与服务器之间在单个 tcp 连接上的全双工通信, ...
- 火币Huobi API
本文介绍火币Huobi API REST API 简介 火币为用户提供了一套全新的API,可以帮用户快速接入火币PRO站及HADAX站的交易系统,实现程序化交易. 访问地址 适用站点 适用功能 适用交 ...
随机推荐
- Android - TabHost 与 Fragment 制作页面切换效果
Android - TabHost 与 Fragment 制作页面切换效果 Android API 19 , API 23 三个标签页置于顶端 效果图: 在文件BoardTabHost.java中定义 ...
- 如何通过android代码获取LTE信息?
最近为了成功得到LTE的信号强度,尝试了很多种方法: (1)通过解析signalstrength字符串,但是不同手机设备获得的字符串排列顺序不同,代码如下: private PhoneStateLis ...
- ES6正则表达式扩展
前面的话 正则表达式是javascript操作字符串的一个重要组成部分,但在以往的版本中并未有太多改变.然而,在ES6中,随着字符串操作的变更, ES6也对正则表达式进行了一些更新.本文将详细介绍ES ...
- Linux shell for while 循环
1.数字段形式for i in {1..10}do echo $idone 2.详细列出(字符且项数不多)for File in 1 2 3 4 5 do echo $File done ...
- Storm/JStorm之TopologyBuilder源码阅读
在Strom/JStorm中有一个类是特别重要的,主要用来构建Topology的,这个类就是TopologyBuilder. 咱先看一下简单的例子: public static void main(S ...
- redis 订阅与发布
PUBLISH,SUBSCRIBE,等命令实现订阅与发布 订阅/发布到频道 订阅/发布到模式 频道的订阅与信息发送 订阅subscribe,可以让客户端订阅任意数量的频道, 每当有新信息发送到 ...
- YARN笔记——技术点汇总
目录 · 概况 · 原理 · 资源调度器分类 · YARN架构 · ResourceManager · NodeManager · ApplicationMaster · Container · YA ...
- 【机器学习】反向传播算法 BP
知识回顾 1:首先引入一些便于稍后讨论的新标记方法: 假设神经网络的训练样本有m个,每个包含一组输入x和一组输出信号y,L表示神经网络的层数,S表示每层输入的神经元的个数,SL代表最后一层中处理的单元 ...
- 爬虫协议robots
前面的话 Robots协议(也称为爬虫协议.机器人协议等)全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页 ...
- hdu2108 Shape of HDU 极角排序判断多边形
Problem Description 话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,"徐队"的称呼逐渐被"徐总"所取代,海东 ...