python-bitshares 边学边记 (五) / Market类

in #python-bitshares7 years ago

在之前的几篇文章中,我们简单介绍了如何安装python-bitshares 、python-bitshares的钱包相关操作、BitShares类以及Account类。

详情可以参考文末的参考链接。


(图源 :pixabay)

这节我们来继续学习python-bitshares 。

Market类

bitshares中最激动人心的特点是啥,我个人认为无疑就是去中心化交易所了,在这个市场你可以交易很多资产,和中心化交易所相比,交易都是由bitshares自动撮合完成的,公开透明。无需担心交易所搞鬼,侵吞你的资产。其实还有很多特性和有点,但是我水平有限,理解还不够深入,就不多加评论了,大家自己去慢慢发掘。

好啦,既然bitshares的交易所这么牛叉,我们来看看用python-bitshares咋玩。

创建实例

我们可以使用以下代码创建Market实例
from bitshares.market import Market
market = Market("BTS:CNY")

其中"BTS:CNY"为我们指定的市场。前边BASE, 后边QUOTE,亦即以BTS为基础的CNY报价。

其中市场交易对可以已如下方式指定(三者效果相同):

  • base:quote:分隔
  • base/quote/分隔
  • base-quote-分隔

查看报价

创建Market类实例之后,我们就可以随时查看市场报价了
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
pprint(market.ticker())

有没有发现,其实获取的信息和我们公众号获取的一样

所以你要仅仅想查个行情啥的,用我们公众号就好啦:)

获取24小时内的交易量

除了报价以外,还有个功能是获取24小时内的交易量
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
pprint(market.volume24h())

其实ticker信息中已经包含了交易量信息,但是bitshares还设计了这个API,估计是为了访问快速吧?我瞎猜的。😀

获取市场订单信息/orderbook

以下代码获取市场当前订单信息
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
pprint(market.orderbook(5))

我们可以通过指定limit参数,来返回指定数量的订单信息,示例中我指定为5。

获取历史成交信息

可以用history获取账户信息,参数定义如下:
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
pprint(market.trades(5))

我们同样可以通过指定limit参数来限制返回记录的个数。

除了获取整个市场的历史交易信息以外,我们还可以获得指定账户的历史交易信息,方法定义如下:
def accounttrades(self, account=None, limit=25):

我测试了一下,返回为空,看了一下代码,它是使用get_fill_order_historyAPI 获取所有的撮合订单信息,再按用户筛选出属于对应用户的订单。此处有很明显的BUG!

另外还有一个
accountopenorders方法,个人认为和Account类的openorders属性重复。

如何买卖对应资产

上述内容,我们介绍了如何使用Market类获取市场的各种信息。接下来则是激动人心的时刻了,亦即如何使用Market类下单。

buy方法

我们可以使用buy方法来挂买单:
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
market.buy(1.00001, 2, account='xxxxx')

挂单成功了,不过现在以这个价位挂单,想买到BTS,那无异于痴心妄想。

sell方法

用法和buy方法大同小异啦
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
market.sell(2.00001, 2, account='xxxx')

cancel方法

除了能挂买单、卖单以外,取消订单功能也很重要。
cancel方法 用于取消订单。
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
market.cancel(['1.7.42839275'], 'xxxx')

查看账户活动记录,可以发现订单取消成功。

总结

Market类可以用于获取bitshares交易所指定交易对的市场信息,也可以用来挂买单卖单以及取消订单。强大的不要不要的。

感兴趣的,自己去体验一下吧,写不动了,本文就此打住啦。

参考信息

Sort:  

sorry i can't relate....

非常感谢您的更新,共享bitshare程序,祝你好运 @oflyhigh

My translation is less supportive of your writing .. But I think your writing is very interesting friend. I upvote 100%

非常感谢您分享信息。成功和祝福

awesome tutorial , on python , will try and see if it works

I loved your tutorial more than me that I am learning Python

感谢您的信息

技术大牛

请问:取消订单,程序怎么获取到挂单的单号?

我用这个测试时候,不值得为什么,提示钱包锁定。
from pprint import pprint
from bitshares.market import Market
market = Market("BTS:CNY")
market.buy(0.1, 1, account="bitw002")

错误信息如下:

非常感谢!
问题解决了!
同时我还找到了这个链接,希望给后来查阅的人提供帮助
http://python.usyiyi.cn/sources/pythonbitshares/latest/index.html#document-market

bitshares中是不是没办法提交市价单啊