比特股命令行神器:uptick

来自技术流笔记
Admin讨论 | 贡献2018年3月3日 (六) 16:57的版本 (创建页面,内容为“ 之前在介绍比特股开源代码时,漏掉了基于Python的uptick和其依赖库 python-bitshares,因为我确实没发现。最近试用了一下uptick...”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索


之前在介绍比特股开源代码时,漏掉了基于Python的uptick和其依赖库 python-bitshares,因为我确实没发现。最近试用了一下uptick, 我认为非常好用,用了之后,我不想用图形界面的钱包了。本文介绍一下uptick和其依赖的库。 作者:Fabian Schuh

这两个项目的作者是 Fabian Schuh,网名 xeroc, github地址: https://github.com/xeroc ,目前比特股理事会成员之一。个人感觉,他写的代码质量比较高。 项目简介 uptick

uptick是基于Python的命令行工具,用于获取比特股区块链上的各种信息,也可以发起交易和转账。

代码地址: https://github.com/xeroc/uptick python-bitshares

python-bitshares是基于Python的、与比特股API节点交互的库。uptick的底层。

代码地址: https://github.com/xeroc/python-bitshares

文档地址: http://docs.pybitshares.com/en/latest/ 安装步骤

   确保系统安装了Python3 (3.3 3.4 3.5 3.6应该都没问题)
   确保系统安装了基于Python3的最新版本pip(9.0.1)
   命令行: pip3 install uptick
   命令行: pip3 install pycrypto (这一步理论上不需要,应该是某一个库依赖没写好的bug)

安装完成之后,首先需要设置API节点,否则默认是一个欧洲的节点,国内用的话很慢。国内尝试这两种

uptick set node wss://bit.btsabc.org/ws     #比特帝国节点
uptick set node wss://bts.transwiser.com/ws #transwiser节点

当然,自己编译了并运行了全节点的话,就更快了:

uptick set node ws://127.0.0.1:8090/

这个节点设定同时影响uptick和python-bitshares库,或者说uptick直接修改和使用了库里面的配置。 uptick常用命令用法表 命令 含义 举例 uptick 获取帮助 uptick −−help 获取帮助 uptick <COMMAND> −−help 获取特定子命令的帮助 uptick trades −−help uptick addkey 增加私钥到钱包,一般用active key用于交易 uptick listkeys 列出钱包中所有私钥 uptick listaccounts 列出钱包中所有账号 uptick trades <MARKET> 查看某个市场的交易历史 uptick trades BTS:CNY #最近,基于CNY的BTS成交情况 uptick orderbook <MARKET> 查看某个市场的当前限价单 uptick orderbook BTS:CNY #现在市场上,基于CNY有多少BTS的买单和卖单 uptick buy <AMOUNT> <ASSET> <PRICE> <BASE> 提交买单 uptick buy 2 BTS 0.4 CNY # 想用0.4CNY/BTS的价格购买2BTS uptick configuration 查看当前配置 uptick set <NAME> <VALUE> 修改配置 uptick set node ws://127.0.0.1:8090 # 设置API节点为本地重钱包 uptick info 获取各种信息 uptick info bitcrab 获取账号bitcrab的相关信息 uptick info BTS 获取核心资产BTS的相关信息 uptick history <account> 获取某个账号的历史交易记录 uptick hisotry bitcrab uptick balance <account> 获取某个账号的当前余额 uptick balance os uptick feeds <ASSET> 获取某个智能资产的喂价信息 uptick feeds CNY uptick openorders <account> 获取某个账号的未成交限价单 uptick openorders a-bot python-bitshares代码示例

python-bitshares的文档也写得很好,有python基础的人能很快上手,这里给出两个示例代码。

获取最近一小时的最多50条BTS:CNY交易,计算这些交易的平均价格

 1 #!/usr/bin/env python3
 2 
 3 from bitshares.market import Market
 4 market = Market('BTS:CNY')
 5 from datetime import datetime,timedelta
 6 now = datetime.utcnow()
 7 d = timedelta(hours=-1)
 8 onehourago = now + d
 9 
10 
11 trades = market.trades(limit=50,start=onehourago,stop=now)
12 
13 def getSum(filledOrders):
14     cny = 0
15     bts = 0
16     for order in filledOrders:
17         print(order['time'])
18         cny += order['base']['amount']
19         bts += order['quote']['amount']
20 
21     return {'cny': cny, 'bts': bts,
22             'price':  cny/bts if bts >0 else 0,
23             'size': len(filledOrders) }
24 
25 print('成交:', getSum(trades))

获取当前市场上BTS:CNY的最多100条限价单,并分别计算买单和卖单的平均价格

 1 #!/usr/bin/env python3
 2 
 3 from bitshares.market import Market
 4 market = Market('BTS:CNY')
 5 
 6 orderbook = market.orderbook(limit=50)
 7 #区块链最多返回50个买单和卖单,默认limit=25
 8 bids=orderbook['bids']
 9 asks=orderbook['asks']
10 
11 def getSum(orders):
12     cny = 0
13     bts = 0
14     for order in orders:
15         cny += order['base']['amount']
16         bts += order['quote']['amount']
17 
18     return {'cny': cny, 'bts': bts,
19             'price': cny/bts,
20             'size': len(orders) }
21 
22 print('买单:', getSum(bids))
23 print('卖单:', getSum(asks))

给读者的思考

感谢阅读到这里的朋友,这么枯燥的技术细节您都读完了,能否思考以下问题呢?

   uptick/python-bitshares可以发起交易,账号存储在本地计算机,安全性如何?
   如何利用uptick/python-bitshares发起交易?
   如何利用uptick/python-bitshares发起转账?

虽然我的博客、公众号有一些读者,但很少有留言的,我希望读到这里的朋友留言,给出您的任何想法(不限上面的3个问题),谢谢!