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)
这是一个用于[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)