exchanges-wrapper 1.3.2__tar.gz → 1.3.4b0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. exchanges-wrapper-1.3.4b0/.deepsource.toml +12 -0
  2. exchanges-wrapper-1.3.4b0/.dockerignore +3 -0
  3. exchanges-wrapper-1.3.4b0/.github/FUNDING.yml +1 -0
  4. exchanges-wrapper-1.3.4b0/.github/dependabot.yml +11 -0
  5. exchanges-wrapper-1.3.4b0/.github/workflows/docker-image.yml +32 -0
  6. exchanges-wrapper-1.3.4b0/.github/workflows/python-publish.yml +40 -0
  7. exchanges-wrapper-1.3.4b0/CHANGELOG.md +232 -0
  8. exchanges-wrapper-1.3.4b0/Dockerfile +23 -0
  9. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/PKG-INFO +7 -11
  10. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/README.md +4 -8
  11. exchanges-wrapper-1.3.4b0/example/exch_client.py +415 -0
  12. exchanges-wrapper-1.3.4b0/example/ms_cfg.toml +5 -0
  13. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/__init__.py +1 -1
  14. exchanges-wrapper-1.3.4b0/exchanges_wrapper/api_pb2.py +120 -0
  15. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/bitfinex_parser.py +1 -1
  16. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/client.py +5 -9
  17. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/events.py +1 -1
  18. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/exch_srv.py +77 -83
  19. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/http_client.py +1 -2
  20. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/huobi_parser.py +1 -1
  21. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/okx_parser.py +1 -1
  22. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/pyproject.toml +2 -2
  23. exchanges-wrapper-1.3.4b0/requirements.txt +8 -0
  24. exchanges_wrapper-1.3.2/exchanges_wrapper/api_pb2.py +0 -513
  25. exchanges_wrapper-1.3.2/exchanges_wrapper/ws_api/__init__.py +0 -19
  26. exchanges_wrapper-1.3.2/exchanges_wrapper/ws_api/ws_session.py +0 -192
  27. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/LICENSE.md +0 -0
  28. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/api_pb2_grpc.py +0 -0
  29. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/c_structures.py +0 -0
  30. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/definitions.py +0 -0
  31. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/errors.py +0 -0
  32. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/exch_srv_cfg.toml.template +0 -0
  33. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/proto/exchanges_wrapper/api.proto +0 -0
  34. {exchanges_wrapper-1.3.2 → exchanges-wrapper-1.3.4b0}/exchanges_wrapper/web_sockets.py +0 -0
@@ -0,0 +1,12 @@
1
+ version = 1
2
+
3
+ exclude_patterns = ["*/api*.*",
4
+ ]
5
+
6
+ [[analyzers]]
7
+ name = "python"
8
+ enabled = true
9
+
10
+ [analyzers.meta]
11
+ runtime_version = "3.x.x"
12
+ max_line_length = 120
@@ -0,0 +1,3 @@
1
+ **/__pycache__/
2
+ exchanges_wrapper/exchanges_wrapper/
3
+ exchanges_wrapper/proto/
@@ -0,0 +1 @@
1
+ custom: ['https://github.com/DogsTailFarmer/exchanges-wrapper#donate']
@@ -0,0 +1,11 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "pip" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
@@ -0,0 +1,32 @@
1
+ name: Docker Image CI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ release:
6
+ types: [published]
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout
13
+ uses: actions/checkout@v3
14
+
15
+ - name: PrepareReg Names
16
+ run: |
17
+ echo IMAGE_REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV
18
+ echo IMAGE_TAG=$(echo ${{ github.ref }} | tr '[:upper:]' '[:lower:]' | awk '{split($0,a,"/"); print a[3]}') >> $GITHUB_ENV
19
+
20
+ - name: Login to GHCR
21
+ uses: docker/login-action@v2
22
+ with:
23
+ registry: ghcr.io
24
+ username: ${{ github.repository_owner }}
25
+ password: ${{ secrets.GITHUB_TOKEN }}
26
+
27
+ - name: Build and push
28
+ run: |
29
+ docker build . --tag ghcr.io/$IMAGE_REPOSITORY:$IMAGE_TAG
30
+ docker push ghcr.io/$IMAGE_REPOSITORY:$IMAGE_TAG
31
+ docker build . --tag ghcr.io/$IMAGE_REPOSITORY:latest
32
+ docker push ghcr.io/$IMAGE_REPOSITORY:latest
@@ -0,0 +1,40 @@
1
+ # This workflow will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ workflow_dispatch:
13
+ release:
14
+ types: [published]
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ jobs:
20
+ deploy:
21
+
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - uses: actions/checkout@v3
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v3
28
+ with:
29
+ python-version: '3.x'
30
+ - name: Install dependencies
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ pip install build
34
+ - name: Build package
35
+ run: python -m build
36
+ - name: Publish package
37
+ uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
38
+ with:
39
+ user: __token__
40
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,232 @@
1
+ ## v1.3.3-1 2023-07-xx
2
+ ### Update
3
+ * Bitfinex: `exchanges_wrapper.client.Client.cancel_all_orders()`: removed unnecessary status check after cancel request
4
+
5
+ ## v1.3.3 2023-07-04
6
+ ### Update
7
+ * UserWSSession moved to crypto-ws-api pkg
8
+ * Refactoring logging
9
+ * CheckStream(): fix log spamming on passed check
10
+ * Up requirements for crypto-ws-api to 1.0.1
11
+
12
+ ## v1.3.2 - 2023-06-29
13
+ ### Added for new features
14
+ * Binance: ws_api package implemented, last version
15
+ [Websocket API](https://developers.binance.com/docs/binance-trading-api/websocket_api#general-api-information)
16
+ used for the most commonly used methods
17
+
18
+ In `exch_srv_cfg.toml` added:
19
+
20
+ ```bazaar
21
+ [endpoint]
22
+ [endpoint.binance]
23
+ ...
24
+ ws_api = 'wss://ws-api.binance.com:443/ws-api/v3'
25
+ ws_api_test = 'wss://testnet.binance.vision/ws-api/v3'
26
+
27
+ ```
28
+
29
+ ## v1.3.1 - 2023-06-20
30
+ ### Update
31
+ * Optimizing installation and initial settings
32
+
33
+ ## v1.3.0-2 - 2023-06-19
34
+ ### Update
35
+ * Binance: keepalive WSS
36
+
37
+ ## v1.3.0 - 2023-06-01
38
+ ### Fix
39
+ * exchanges_wrapper.client.Client.cancel_all_orders() set correct 'status' for cancelled orders
40
+
41
+ ### Update
42
+ * protobuf format for CancelAllOrders() and OnOrderUpdate(). Now simple use ```result = eval(json.loads(res.result))```
43
+ for unpack incoming message. **Not compatible with earlier versions**
44
+ * dependencies
45
+
46
+ ## v1.2.10-6-HotFix - 2023-04-12
47
+ ### Fix
48
+ * Binance: REST API update for endpoint: GET /api/v3/exchangeInfo was changed MIN_NOTIONAL filter
49
+
50
+ ## v1.2.10-5 - 2023-04-05
51
+ ### Update
52
+ * Minor improvements
53
+
54
+ ## v1.2.10-4 - 2023-03-04
55
+ ### Fix
56
+ * OKX: intersection wss streams for several trades on one client (same account). WSS buffer moved from
57
+ client instance to EventsDataStream instance
58
+
59
+ ## v1.2.10-3 - 2023-03-01
60
+ ### Fix
61
+ * OKX: FetchOpenOrders(): getting orders list for all pair per account instead specific one pair
62
+
63
+ ## v1.2.10-2 - 2023-02-26
64
+ ### Added for new features
65
+ * CheckStream() method which request active WSS for trade_id
66
+
67
+ ## v1.2.10 - 2023-02-22
68
+ ### Added for new features
69
+ * Add method TransferToMaster():
70
+
71
+ >Send request to transfer asset from subaccount to main account
72
+ Binance, OKX: not additional settings needed
73
+ Bitfinex: for subaccount setting 2FA method, set WITHDRAWAL permission for API key,
74
+ in config for subaccount set 2FA key and master account EMail
75
+ Huobi: in config for subaccount set master_name for Main account
76
+
77
+ ### Update
78
+ * Up requirements aiohttp to 3.8.4
79
+ * Some minor improvements
80
+
81
+ ## v1.2.9-2 - 2023-02-04
82
+ ### Fixed
83
+ * Fix DogsTailFarmer/martin-binance#50
84
+
85
+ ### Update
86
+ * Remove unnecessary shebang
87
+
88
+ ## v1.2.9-1 - 2023-01-23
89
+ ### Update
90
+ * Additional check for order status if its can't place during timeout period for avoid place duplicate order
91
+
92
+ ## v1.2.9 - 2023-01-08
93
+ ### Update
94
+ * Removing FTX smell
95
+
96
+ ## v1.2.8 - 2023-01-01
97
+ ### Added for new features
98
+ * Add connection to binance.us
99
+
100
+ ## v1.2.7-7 2022-12-15
101
+ ### Fixed
102
+ * DogsTailFarmer/martin-binance#42
103
+
104
+ ## v1.2.7-6 2022-12-08
105
+ ### Fixed
106
+ * Bitfinex: handling canceled TP order after it partially filled
107
+
108
+ ### Update
109
+ * Binance: REST API: filter type "PERCENT_PRICE" to "PERCENT_PRICE_BY_SIDE"
110
+
111
+ ## v1.2.7-5 2022-12-04
112
+ ### Update
113
+ * FetchOpenOrders() add handler for errors.QueryCanceled, in case RateLimitReached was raised elsewhere
114
+ * Some minor improvements
115
+
116
+ ## v1.2.7-4 2022-11-25
117
+ ### Fixed
118
+ * Clearing cancel previous wss start() before restart from 1.2.7-3 was a bad idea. It's kill himself. Rollback.
119
+
120
+ ## v1.2.7-3 2022-11-24
121
+ ### Fixed
122
+ * Huobi: incorrect handling for incoming ping for private channel
123
+ * OKX: refactoring wss heartbeat
124
+ * Clearing cancel previous wss start() before restart
125
+
126
+ ## v1.2.7-2 2022-11-23
127
+ ### Update
128
+ * Bitfinex: add "receive_timeout=30" parameter in ws_connect(), this is a reliable solution for monitoring the presence
129
+ of a connection
130
+
131
+ ## v1.2.7-1 2022-11-21
132
+ ### Update
133
+ * Add OKX section in config file
134
+
135
+ ## v1.2.7 2022-11-21
136
+ ### Added for new features
137
+ * OKX exchange
138
+
139
+ ## v1.2.6-1 2022-11-11
140
+ ### Fixed
141
+ * FTX: OnFundsUpdate() did not return a result
142
+
143
+ ### Added for new features
144
+ * OnBalanceUpdate() for autocorrect depo and initial balance
145
+
146
+ ### Update
147
+ * refactoring http_client module for multi exchanges purposes
148
+ * added _percent_price filter dummy for all parsers
149
+
150
+ ## v1.2.6 2022-10-13
151
+ ### Fixed
152
+ * Huobi Restart WSS for PING timeout, 20s for market and 60s for user streams
153
+ * Removed unnecessary refine amount/price in create_order() for Bitfinex, FTX and Huobi
154
+
155
+ ## v1.2.6b1 2022-10-12
156
+ ### Added for new features
157
+ * Huobi exchange
158
+
159
+ ## v1.2.5-3 2022-09-26
160
+ ### Fixed
161
+ * #2 FTX WS market stream lies down quietly
162
+
163
+ ### Update
164
+ * Slightly optimized process of docker container setup and start-up
165
+
166
+ ## v1.2.5-2 2022-09-23
167
+ ### Added for new features
168
+ * Published as Docker image
169
+
170
+ ### Update
171
+ * README.md add info about Docker image use
172
+
173
+ ## v1.2.5-1 2022-09-21
174
+ ### Update
175
+ * Restoring the closed WSS for any reason other than forced explicit shutdown
176
+
177
+ ## v1.2.5 2022-09-20
178
+ ### Update
179
+ * Correct max size on queue() for book WSS
180
+
181
+ ## v1.2.5b0 2022-09-18
182
+ ### Fixed
183
+ * [Doesn't work on bitfinex: trading rules, step_size restriction not applicable, check](https://github.com/DogsTailFarmer/martin-binance/issues/28#issue-1366945816)
184
+ * [FTX WS market stream lies down quietly](https://github.com/DogsTailFarmer/exchanges-wrapper/issues/2#issue-1362214342) Refactoring WSS control
185
+ * Keep alive Binance combined market WSS, correct restart after stop pair
186
+
187
+ ### Update
188
+ * FetchOrder for 'PARTIALLY_FILLED' event on 'binance' and 'ftx'
189
+ * User data and settings config are moved outside the package to simplify the upgrade
190
+ * Version accounting of the configuration file is given to the package
191
+
192
+ ### Added for new features
193
+ * Published as Docker image
194
+ * On first run create catalog structure for user files at ```/home/user/.MartinBinance/```
195
+
196
+ ## v1.2.4 2022-08-27
197
+ ### Fixed
198
+ * [Incomplete account setup](DogsTailFarmer/martin-binance#17)
199
+ * 1.2.3-2 Fix wss market handler, was stopped after get int type message instead of dict
200
+ * 1.2.3-5 clear console output
201
+ * 1.2.3-6 Bitfinex WSServerHandshakeError handling
202
+ * refactoring web_socket.py for correct handling and restart wss
203
+
204
+ ### Update
205
+ * up to Python 3.10.6 compatible
206
+ * reuse aiohttp.ClientSession().ws_connect() for client session
207
+
208
+ ## v1.2.3 - 2022-08-14
209
+ ### Fixed
210
+ * Bitfinex: restore active orders list after restart
211
+ * [exch_server not exiting if it can't obtain port](https://github.com/DogsTailFarmer/martin-binance/issues/12#issue-1328603498)
212
+
213
+ ## v1.2.2 - 2022-08-06
214
+ ### Fixed
215
+ * Incorrect handling fetch_open_orders response after reinit connection
216
+
217
+ ## v1.2.1 - 2022-08-04
218
+ ### Added for new features
219
+ * FTX: WSS 'orderbook' check status by provided checksum value
220
+
221
+ ### Fixed
222
+ * FTX: WSS 'ticker' incorrect init
223
+ * Bitfinex: changed priority for order status, CANCELED priority raised
224
+
225
+
226
+ ## v1.2.0 - 2022-06-30
227
+ ### Added for new features
228
+ * Bitfinex REST API / WSS implemented
229
+
230
+ ### Updated
231
+ * Optimized WSS processing methods to improve performance and fault tolerance
232
+ * Updated configuration file format for multi-exchange use
@@ -0,0 +1,23 @@
1
+ # syntax=docker/dockerfile:1
2
+ FROM python:3.10.6-slim
3
+
4
+ RUN useradd -ms /bin/bash appuser
5
+ USER appuser
6
+
7
+ ENV PATH="/home/appuser/.local/bin:${PATH}"
8
+ ENV PATH="/home/appuser/.local/lib/python3.10/site-packages:${PATH}"
9
+ ENV PYTHONUNBUFFERED = 1
10
+
11
+ COPY requirements.txt requirements.txt
12
+
13
+ RUN pip3 install -r requirements.txt
14
+
15
+ COPY ./exchanges_wrapper/* /home/appuser/.local/lib/python3.10/site-packages/exchanges_wrapper/
16
+
17
+ WORKDIR "/home/appuser/.local/lib/python3.10/site-packages"
18
+
19
+ LABEL org.opencontainers.image.description = "See README.md 'Get started' for setup and run package"
20
+
21
+ EXPOSE 50051
22
+
23
+ CMD ["python3","exchanges_wrapper/exch_srv.py"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: exchanges-wrapper
3
- Version: 1.3.2
3
+ Version: 1.3.4b0
4
4
  Summary: REST API and WebSocket asyncio wrapper with grpc powered multiplexer server
5
5
  Author-email: Thomas Marchand <thomas.marchand@tuta.io>, Jerry Fedorenko <jerry.fedorenko@yahoo.com>
6
6
  Requires-Python: >=3.8
@@ -12,27 +12,23 @@ Classifier: Operating System :: Unix
12
12
  Classifier: Operating System :: Microsoft :: Windows
13
13
  Classifier: Operating System :: MacOS
14
14
  Requires-Dist: aiohttp==3.8.4
15
- Requires-Dist: grpcio==1.48.1
16
- Requires-Dist: grpcio-tools==1.48.1
15
+ Requires-Dist: grpcio==1.56.0
17
16
  Requires-Dist: toml==0.10.2
18
17
  Requires-Dist: idna==3.4
19
18
  Requires-Dist: pyotp~=2.8.0
20
19
  Requires-Dist: simplejson==3.19.1
21
20
  Requires-Dist: shortuuid~=1.0.11
21
+ Requires-Dist: crypto_ws_api~=1.0.1
22
22
  Project-URL: Source, https://github.com/DogsTailFarmer/exchanges-wrapper
23
23
 
24
-
25
- <p align="center"><img src="https://raw.githubusercontent.com/gist/DogsTailFarmer/167eaf65cebfe95d954082c7f181a2cc/raw/a67270de8663ad3de4733330ff64c9ba3153f87d/Logo%202v3.svg" width="300"></p>
26
-
27
- ***
28
- <h1 align="center">Crypto exchanges API/WSS wrapper with grpc powered server</h1>
24
+ <h1 align="center"><img align="center" src="https://raw.githubusercontent.com/gist/DogsTailFarmer/167eaf65cebfe95d954082c7f181a2cc/raw/a67270de8663ad3de4733330ff64c9ba3153f87d/Logo%202v3.svg" width="75">Crypto exchanges API/WSS wrapper with grpc powered server</h1>
29
25
 
30
26
  <h2 align="center">Binance, Bitfinex, Huobi, OKX,</h2>
31
27
 
32
28
  <h3 align="center">For SPOT markets</h3>
33
29
 
34
30
  ***
35
- <a href="https://badge.fury.io/py/exchanges-wrapper"><img src="https://badge.fury.io/py/exchanges-wrapper.svg" alt="PyPI version"></a>
31
+ <a href="https://pypi.org/project/exchanges-wrapper/"><img src="https://img.shields.io/pypi/v/exchanges-wrapper" alt="PyPI version"></a>
36
32
  <a href="https://codeclimate.com/github/DogsTailFarmer/exchanges-wrapper/maintainability"><img src="https://api.codeclimate.com/v1/badges/f333ab9b1f3024699e09/maintainability" /></a>
37
33
  <a href="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper/?ref=repository-badge}" target="_blank"><img alt="DeepSource" title="DeepSource" src="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper.svg/?label=resolved+issues&token=XuG5PmzMiKlDL921-qREIuX_"/></a>
38
34
  <a href="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper/?ref=repository-badge}" target="_blank"><img alt="DeepSource" title="DeepSource" src="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper.svg/?label=active+issues&token=XuG5PmzMiKlDL921-qREIuX_"/></a>
@@ -149,8 +145,8 @@ see ```proto/exchanges_wrapper/api.proto```
149
145
  *USDT* (TRC20) TP1Y43dpY7rrRyTSLaSKDZmFirqvRcpopC
150
146
 
151
147
  ## Powered by exchanges-wrapper
152
- <p align="left"><a href="https://github.com/DogsTailFarmer/martin-binance"></a><img src="https://github.com/DogsTailFarmer/martin-binance/raw/public/doc/Modified%20martingale.svg" width="50"></p>
153
-
148
+ <a><img align="middle" src="https://github.com/DogsTailFarmer/martin-binance/raw/public/doc/Modified%20martingale.svg" width="50"></a>
154
149
  [martin-binance](https://github.com/DogsTailFarmer/martin-binance)
150
+
155
151
  Free trading system for crypto exchanges SPOT markets. Adaptive customizable reverse grid strategy based on martingale.
156
152
 
@@ -1,15 +1,11 @@
1
-
2
- <p align="center"><img src="https://raw.githubusercontent.com/gist/DogsTailFarmer/167eaf65cebfe95d954082c7f181a2cc/raw/a67270de8663ad3de4733330ff64c9ba3153f87d/Logo%202v3.svg" width="300"></p>
3
-
4
- ***
5
- <h1 align="center">Crypto exchanges API/WSS wrapper with grpc powered server</h1>
1
+ <h1 align="center"><img align="center" src="https://raw.githubusercontent.com/gist/DogsTailFarmer/167eaf65cebfe95d954082c7f181a2cc/raw/a67270de8663ad3de4733330ff64c9ba3153f87d/Logo%202v3.svg" width="75">Crypto exchanges API/WSS wrapper with grpc powered server</h1>
6
2
 
7
3
  <h2 align="center">Binance, Bitfinex, Huobi, OKX,</h2>
8
4
 
9
5
  <h3 align="center">For SPOT markets</h3>
10
6
 
11
7
  ***
12
- <a href="https://badge.fury.io/py/exchanges-wrapper"><img src="https://badge.fury.io/py/exchanges-wrapper.svg" alt="PyPI version"></a>
8
+ <a href="https://pypi.org/project/exchanges-wrapper/"><img src="https://img.shields.io/pypi/v/exchanges-wrapper" alt="PyPI version"></a>
13
9
  <a href="https://codeclimate.com/github/DogsTailFarmer/exchanges-wrapper/maintainability"><img src="https://api.codeclimate.com/v1/badges/f333ab9b1f3024699e09/maintainability" /></a>
14
10
  <a href="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper/?ref=repository-badge}" target="_blank"><img alt="DeepSource" title="DeepSource" src="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper.svg/?label=resolved+issues&token=XuG5PmzMiKlDL921-qREIuX_"/></a>
15
11
  <a href="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper/?ref=repository-badge}" target="_blank"><img alt="DeepSource" title="DeepSource" src="https://deepsource.io/gh/DogsTailFarmer/exchanges-wrapper.svg/?label=active+issues&token=XuG5PmzMiKlDL921-qREIuX_"/></a>
@@ -126,7 +122,7 @@ see ```proto/exchanges_wrapper/api.proto```
126
122
  *USDT* (TRC20) TP1Y43dpY7rrRyTSLaSKDZmFirqvRcpopC
127
123
 
128
124
  ## Powered by exchanges-wrapper
129
- <p align="left"><a href="https://github.com/DogsTailFarmer/martin-binance"></a><img src="https://github.com/DogsTailFarmer/martin-binance/raw/public/doc/Modified%20martingale.svg" width="50"></p>
130
-
125
+ <a><img align="middle" src="https://github.com/DogsTailFarmer/martin-binance/raw/public/doc/Modified%20martingale.svg" width="50"></a>
131
126
  [martin-binance](https://github.com/DogsTailFarmer/martin-binance)
127
+
132
128
  Free trading system for crypto exchanges SPOT markets. Adaptive customizable reverse grid strategy based on martingale.