bitmex api的市场开发bot

bitmex-market-maker的Python项目详细描述


#BitMex Market Maker

这是一个用于[BitMex]的示例做市机器人(https://www.bitmex.com)。

它提供了以下功能:

*一个"bitmex"对象包装其余的和websocket api。
*所有数据都是实时有效的[通过websocket获取](market-maker/ws/ws-thread.py)。这是获取市场数据的最快方式。
*可以通过"bitmex.buy()"、"bitmex.sell()"、"bitmex.open_orders()"等创建、查询和取消订单。
*可以请求提款(但仍必须通过电子邮件和2fa进行确认)。
*连接错误和WebSoCKET重新连接是为您处理的。
*[永久API密钥](https://testnet.bitmex.com/app/apikeys)支持包括在内。
*[构建您自己的交易策略的脚手架。]("高级用法")
*开箱即用,实现了一个简单的做市策略,覆盖了出价问一下。
*更复杂的策略取决于用户。尝试合并[索引数据](https://testnet.bitmex.com/app/index/.xbt),
查询其他市场以便及早发现动向,或制定自己完全定制的策略。

**首先在[测试网](https://testnet.bitmex.com)上开发!**TestNet Trading是完全免费的,与实时市场完全相同。

>;BitMex不对使用此代码时产生的任何损失负责。此代码仅用于示例目的-除非您完全了解此代码的用途和注意事项,否则不要将此代码用于实际交易。

>;这不是一个复杂的做市程序。它旨在展示做市的基础知识,同时抽象出一些与bitmex api交互的机械工作。它不会做出明智的决定,而且可能会亏损。

创建一个[testnet bitmex帐户](https://testnet.bitmex.com)和[deposit some tbtc](https://testnet.bitmex.com/app/deposit)。
2.安装:pip install bitmex market maker。强烈建议使用virtualenv.
3.创建MarketMaker项目:运行"marketMaker安装程序"
*这将在工作目录中创建"settings.py"和"market\u maker/"。
*修改"settings.py"以优化参数。
4.编辑settings.py以添加[BitMex API密钥和密钥](https://testnet.bitmex.com/app/apikeys)并更改bot参数。
*请注意,不支持用户/密码身份验证。
*使用"dry_run=true"运行以测试成本和分摊。
5。运行它:`marketmaker[symbol]`
6.对你的机器人的表现满意吗?为您的
bitmex帐户创建一个[Live API密钥](https://www.bitmex.com/app/apikeys),设置"基本URL"并开始交易!

要下的订单的数量。
-如果设置了"settings.maintain_spreads",则bot将在当前排列内开始并向外工作。
-否则,排列由间隔计算确定。
*如果用户指定了位置限制,则选中这些限制。如果当前位置超出限制,
机器人停止引用市场的那一边。
*将这些订单描述符与机器人当前在市场上投放的订单进行比较。
-如果现有订单可以修改为所需的值,则对其进行修改。
-否则,将新订单订单被创建。
-额外的订单被取消。
*机器人然后打印交易合同、股票和总增量的详细信息。

Aker-Bitmex Market Mak公司ER版本:1.0
2016-01-28 17:29:31074-信息-WS-U线程-连接到wss://testnet.bitmex.com/realtime?subscribe=quote:xbt7d,trade:xbt7d,instrument,order:xbt7d,execution:xbt7d,margin,position
2016-01-28 17:29:31074-info-ws-u thread-使用api密钥进行身份验证。
2016-01-28 17:29:31075-info-ws-u thread-启动的线程
2016-01-28 17:29:32079-info-ws-u thread-连接到ws。等待数据图片,这可能需要一点时间…
2016-01-28 17:29:32079-info-ws_thread-获取所有市场数据。开始。
2016-01-28 17:29:32079-info-market\u maker-使用符号XBT7D。
2016-01-28 17:29:32079-info-market\u maker-订单管理器初始化,连接到BitMex。实时运行:执行真实交易。
2016-01-28 17:29:32079-信息-做市商-重置当前头寸。取消所有现有订单。
2016-01-28 17:29:33460-信息-做市商-XBT7D票务:买入:388.61,卖出:389.89
2016-01-28 17:29:33461-信息-做市商-起始头寸:买入:388.62,卖出:389.88,中:389.25
2016-01-28 17:29:33461-信息-做市商-当前XBT余额:3.443498
2016-01-28 17:29:33461-信息-做市商-当前合同位置:-1
2016-01-28 17:29:33461-信息-做市商-平均成本价:389.75
2016-01-28 17:29:33461-信息-做市商-平均进场价:389.75
2016-01-28 17:29:33462-信息-做市商-本次交易的合同:0
2016-01-28 17:29:33,462-信息-做市商-总合同增量:-17.7510 xbt
2016-01-28 17:29:33462-信息-做市商-创建4个订单:
2016-01-28 17:29:33462-信息-做市商-卖出100@389.88
2016-01-28 17:29:33462-信息-做市商-卖出200@390.27
2016-01-28 17:29:33,463-信息-市场-做市商-购买100@388.62
2016-01-01-28 17:29:334663-信息-市场-做市商-购买200@388.23
-
2016-01-28 17:29:29:37366-信息-WS-U线程-执行:在389.88处出售1份XT7D XT7D合同
2016-01-01-28 17:29:38943-信息-市场-做市商-XT7D Ticker:购买:388.62,出售:389.88
2016-01-01-28 17:28 17:29:28:28:28:28:28:28:38.28.23
2016-2016-01-01-01-01-943-信息-做市商-起始头寸:买入:388.62,卖出:389.88,中:389.25
2016-01-28 17:29:38944-信息-做市商-当前XBT余额:3.443496
2016-01-28 17:29:38944-信息-做市商-当前合同头寸:-2
2016-01-28 17:29:38944-信息-做市商-平均成本价:389.75
2016-01-28 17:29:38944-信息-做市商-平均进场价格:389.75
2016-01-28 17:29:38944-信息-做市商-本次交易的合同数:-1
2016-01-28 17:29:38944-信息-做市商-总合同增量:-17.7510 xbt
2016-01-28 17:29:38,945-信息-做市商-修改卖出:99@389.88到100@389.88(+0.00)

`````

` market\u maker.ordermanager`
控制bitmex上的订单放置、更新和监视。要实现您自己的定制策略,请将"market-maker.ordermanager"子类划分为"market-maker.ordermanager",并重写"ordermanager.place-orders()":

````
无:
订单是包含价格、数量和
订单是买卖的dict。例如:


````
buy-order={
‘price’:1234.5,` float
‘orderqty’:100,` int
‘side’:‘buy’




‘sell-order={
‘price’:9876.5,` float
‘orderqty’:100,` int
‘side’:‘sell’


``````

```````
‘float
‘orderqqty’:br/>调用"self.converge_orders()"提交订单。` converge_orders()`将根据需要在bitmex上创建、修改、删除订单,以匹配您传入的内容:

```
def place庠orders(self)->;无:
buy庠orders=[]
销售订单=[]

r/>销售订单。附加({价格:1001.0,'订单数量:100,'边':"销售"})


self.converge订单(购买订单,销售订单)
````


OM Strategy将一直运行,直到您使用CTRL-C终止程序为止。在"custom廑strategy.py"中有一个示例




DER Placement/Amend可大大减少发送到BitMex API的调用数。


对API的大多数调用只消耗一个请求,除了:

*批量订单放置/Amend:每个订单消耗0.1个请求(向上舍入)。例如,下16个订单将消耗2个请求。
*批量订单取消:无论大小,都将消耗1个请求。未被超出速率限制阻止;取消将始终成功。如果出现错误或中断,此bot将始终取消所有订单。

如果您正在引用多个合同,并且您的费率限制正在成为一个障碍,请
[电子邮件支持](mailto:support@bitmex.com)提供报价的详细信息。在绝大多数情况下,
我们可以毫无问题地提高用户的费率限制。

运行"pip install-u requests"进行更新。



](https://github.com/bitmex/api-connectors/tree/master/officer-ws/python)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ApachePOI如何通过java从excel文件中删除空白列?   linux到后台Java服务应用程序的简单发送/接收接口   java ActionBarPullToRefresh什么都没发生   java从millis获取错误的整数天   java相同的代码在两个不同的包上表现不同   java将每个新的char元素写入一个文件(如果被覆盖)   mysql如何在Java中通过外键链接的多个表中插入数据   java环境下mysql网络文件访问   java当使用构建器模式时,为什么我不应该重用builderobject来访问对象配置?   java jQueryServlet post异常失败   java应该使用什么逻辑来创建像《愤怒的小鸟》中那样的锁屏   java Android:在不滑动的情况下更改ViewPager中的片段   java在使用我的程序逻辑时获得空输出