技术支持板块.Support Forums
比特股命令行神器: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交易,计算这些交易的平均价格

!/usr/bin/env python3

from bitshares.market import Marketmarket \= Market('BTS:CNY'smilefrom datetime import datetime,timedeltanow \= datetime.utcnow()d \= timedelta(hours\=-1)onehourago \= now + d

trades \= market.trades(limit\=50,start\=onehourago,stop\=now)

def getSum(filledOrders): cny \= 0 bts \= 0 for order in filledOrders: print(order['time']) cny += order['base']['amount'] bts += order['quote']['amount']

return {'cny': cny, 'bts': bts,        'price':  cny/bts if bts \>0 else 0,        'size': len(filledOrders) }

print('成交:', getSum(trades))

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

!/usr/bin/env python3

from bitshares.market import Marketmarket \= Market('BTS:CNY'smile

orderbook \= market.orderbook(limit\=50)

区块链最多返回50个买单和卖单,默认limit=25

bids\=orderbook['bids']asks\=orderbook['asks']

def getSum(orders): cny \= 0 bts \= 0 for order in orders: cny += order['base']['amount'] bts += order['quote']['amount']

return {'cny': cny, 'bts': bts,        'price': cny/bts,        'size': len(orders) }

print('买单:', getSum(bids))print('卖单:', getSum(asks))

给读者的思考

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

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

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


之前在介绍比特股开源代码时,漏掉了基于Python的uptick和其依赖库 python\-bitshares,因为我确实没发现。最近试用了一下uptick, 我认为非常好用,用了之后,我不想用图形界面的钱包了。本文介绍一下uptick和其依赖的库。 ## 作者:Fabian Schuh 这两个项目的作者是 Fabian Schuh,网名 xeroc, github地址:&nbsp;[https://github.com/xeroc](https://github.com/xeroc)&nbsp;,目前比特股理事会成员之一。个人感觉,他写的代码质量比较高。 ## 项目简介 ### uptick uptick是基于Python的命令行工具,用于获取比特股区块链上的各种信息,也可以发起交易和转账。 代码地址:&nbsp;[https://github.com/xeroc/uptick](https://github.com/xeroc/uptick) ### python\-bitshares python\-bitshares是基于Python的、与比特股API节点交互的库。uptick的底层。 代码地址:&nbsp;[https://github.com/xeroc/python\-bitshares](https://github.com/xeroc/python-bitshares) 文档地址:&nbsp;[http://docs.pybitshares.com/en/latest/](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 | 获取帮助 | &nbsp; | | uptick &minus;&minus;help | 获取帮助 | &nbsp; | | uptick &lt;COMMAND&gt; &minus;&minus;help | 获取特定子命令的帮助 | uptick trades &minus;&minus;help | | uptick addkey | 增加私钥到钱包,一般用active key用于交易 | &nbsp; | | uptick listkeys | 列出钱包中所有私钥 | &nbsp; | | uptick listaccounts | 列出钱包中所有账号 | &nbsp; | | uptick trades &lt;MARKET&gt; | 查看某个市场的交易历史 | uptick trades BTS:CNY #最近,基于CNY的BTS成交情况 | | uptick orderbook &lt;MARKET&gt; | 查看某个市场的当前限价单 | uptick orderbook BTS:CNY #现在市场上,基于CNY有多少BTS的买单和卖单 | | uptick buy &lt;AMOUNT&gt; &lt;ASSET&gt; &lt;PRICE&gt; &lt;BASE&gt; | 提交买单 | uptick buy 2 BTS 0.4 CNY # 想用0.4CNY/BTS的价格购买2BTS | | uptick configuration | 查看当前配置 | &nbsp; | | uptick set &lt;NAME&gt; &lt;VALUE&gt; | 修改配置 | uptick set node ws://127.0.0.1:8090 # 设置API节点为本地重钱包 | | uptick info | 获取各种信息 | &nbsp; | | uptick info bitcrab | 获取账号bitcrab的相关信息 | &nbsp; | | uptick info BTS | 获取核心资产BTS的相关信息 | &nbsp; | | uptick history &lt;account&gt; | 获取某个账号的历史交易记录 | uptick hisotry bitcrab | | uptick balance &lt;account&gt; | 获取某个账号的当前余额 | uptick balance os | | uptick feeds &lt;ASSET&gt; | 获取某个智能资产的喂价信息 | uptick feeds CNY | | uptick openorders &lt;account&gt; | 获取某个账号的未成交限价单 | uptick openorders a\-bot | ## python\-bitshares代码示例 python\-bitshares的文档也写得很好,有python基础的人能很快上手,这里给出两个示例代码。 获取最近一小时的最多50条BTS:CNY交易,计算这些交易的平均价格 #!/usr/bin/env python3 from bitshares.market import Market market \= Market(&#039;BTS:CNY&#039;) from datetime import datetime,timedelta now \= datetime.utcnow() d \= timedelta(hours\=\-1) onehourago \= now + d trades \= market.trades(limit\=50,start\=onehourago,stop\=now) def getSum(filledOrders): cny \= 0 bts \= 0 for order in filledOrders: print(order\[&#039;time&#039;\]) cny += order\[&#039;base&#039;\]\[&#039;amount&#039;\] bts += order\[&#039;quote&#039;\]\[&#039;amount&#039;\] return {&#039;cny&#039;: cny, &#039;bts&#039;: bts, &#039;price&#039;: cny/bts if bts \&gt;0 else 0, &#039;size&#039;: len(filledOrders) } print(&#039;成交:&#039;, getSum(trades)) 获取当前市场上BTS:CNY的最多100条限价单,并分别计算买单和卖单的平均价格 #!/usr/bin/env python3 from bitshares.market import Market market \= Market(&#039;BTS:CNY&#039;) orderbook \= market.orderbook(limit\=50) #区块链最多返回50个买单和卖单,默认limit=25 bids\=orderbook\[&#039;bids&#039;\] asks\=orderbook\[&#039;asks&#039;\] def getSum(orders): cny \= 0 bts \= 0 for order in orders: cny += order\[&#039;base&#039;\]\[&#039;amount&#039;\] bts += order\[&#039;quote&#039;\]\[&#039;amount&#039;\] return {&#039;cny&#039;: cny, &#039;bts&#039;: bts, &#039;price&#039;: cny/bts, &#039;size&#039;: len(orders) } print(&#039;买单:&#039;, getSum(bids)) print(&#039;卖单:&#039;, getSum(asks)) ## 给读者的思考 感谢阅读到这里的朋友,这么枯燥的技术细节您都读完了,能否思考以下问题呢? * uptick/python\-bitshares可以发起交易,账号存储在本地计算机,安全性如何? * 如何利用uptick/python\-bitshares发起交易? * 如何利用uptick/python\-bitshares发起转账? 虽然我的博客、公众号有一些读者,但很少有留言的,我希望读到这里的朋友留言,给出您的任何想法(不限上面的3个问题),谢谢!
74
0
1
实时预览.live preview
至少再输入.enter atleast 10 个字符.characters
警告.WARNING: 您提及.You mentioned %MENTIONS%, 但他们也能看到此消息并且也会被通知.but they cannot see this message and will not be notified
保存中.Saving...
已保存.Saved
以.With 选.selected 取消选择帖子.deselect posts 显示所选帖子.show selected posts
本主题下的所有帖子都是.All posts under this topic will be 已删除.deleted ?
Pending draft ... 单击以继续编辑.Click to resume editing
弃稿.Discard draft