From f6949235df44e2162a53f2df8fc71a39a77b36c9 Mon Sep 17 00:00:00 2001 From: alplabin <122352306+alplabin@users.noreply.github.com> Date: Mon, 27 Oct 2025 14:55:16 +0100 Subject: [PATCH] Release v1.1.0 --- CHANGELOG.md | 4 ++++ examples/general/instrument_list.py | 26 +++++++++++++++++++------- pyproject.toml | 2 +- tests/general/test_instrument_list.py | 20 +++++++++++++++++++- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c26c41..7f919eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.1.0 - 2025-10-27 +### Updated +- Added parameters `min_price`, `max_price` and `min_price_increment` to `InstrumentList` response. + ## 1.0.1 - 2025-05-08 ### Removed - Removed the references for `auto-reconnect` in the dropcopy session to fix the following [issue](https://github.com/binance/binance-fix-connector-python/issues/2). diff --git a/examples/general/instrument_list.py b/examples/general/instrument_list.py index 1c1c3a9..2e67d7b 100644 --- a/examples/general/instrument_list.py +++ b/examples/general/instrument_list.py @@ -42,6 +42,22 @@ def show_rendered_instrument_list(client: BinanceFixConnector) -> None: else msg.get(15, i + 1).decode("utf-8") ) header = f"Symbol: {symbol}, Currency: {currency}" + min_price = ( + None + if not msg.get(2551, i + 1) + else msg.get(2551, i + 1).decode("utf-8") + ) + max_price = ( + None + if not msg.get(2552, i + 1) + else msg.get(2552, i + 1).decode("utf-8") + ) + min_price_inc = ( + None + if not msg.get(969, i + 1) + else msg.get(969, i + 1).decode("utf-8") + ) + body1 = f"Min price: {min_price} | Max price: {max_price} | Min price inc: {min_price_inc}" min_trade_vol = ( None if not msg.get(562, i + 1) @@ -57,12 +73,7 @@ def show_rendered_instrument_list(client: BinanceFixConnector) -> None: if not msg.get(25039, i + 1) else msg.get(25039, i + 1).decode("utf-8") ) - min_price_inc = ( - None - if not msg.get(969, i + 1) - else msg.get(969, i + 1).decode("utf-8") - ) - body1 = f"Min trade vol: {min_trade_vol} | Max trade vol: {max_trade_vol} | Min Qty: {min_qty} | Min price inc: {min_price_inc}" + body2 = f"Min trade vol: {min_trade_vol} | Max trade vol: {max_trade_vol} | Min Qty: {min_qty}" market_min_trade_vol = ( None if not msg.get(25040, i + 1) @@ -78,11 +89,12 @@ def show_rendered_instrument_list(client: BinanceFixConnector) -> None: if not msg.get(25042, i + 1) else msg.get(25042, i + 1).decode("utf-8") ) - body2 = f"Market Min trade vol: {market_min_trade_vol} | Market Max trade vol: {market_max_trade_vol} | Market Min Qty: {market_min_qty}" + body3 = f"Market Min trade vol: {market_min_trade_vol} | Market Max trade vol: {market_max_trade_vol} | Market Min Qty: {market_min_qty}" client.logger.info(header) client.logger.info(body1) client.logger.info(body2) + client.logger.info(body3) client_md = create_market_data_session( diff --git a/pyproject.toml b/pyproject.toml index 26d7d3b..e1f31c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "binance_fix_connector" -version = "1.0.1" +version = "1.1.0" authors = [{name = "Binance"}] description = "This is a simple Python library that provides access to Binance Financial Information eXchange (FIX) SPOT messages using the FIX protocol." readme = "README.md" diff --git a/tests/general/test_instrument_list.py b/tests/general/test_instrument_list.py index f47adec..8f235cc 100644 --- a/tests/general/test_instrument_list.py +++ b/tests/general/test_instrument_list.py @@ -33,7 +33,7 @@ def recv_side_effect(self, *args, **kwargs): return b"" else: if not self.logOutSent: - return b"8=FIX.4.4\x019=227\x0135=y\x0149=SPOT\x0156=BMDWATCH\x0134=2\x0152=20250301-01:00:00.001000\x01320=GetInstrumentList\x01146=1\x0155=BNBUSDT\x0115=USDT\x01562=0.00100000\x011140=900000.00000000\x0125039=0.00100000\x0125040=0.00000001\x0125041=6629.33313692\x0125042=0.00000001\x01969=0.01000000\x0110=110\x01" + return b"8=FIX.4.4\x019=227\x0135=y\x0149=SPOT\x0156=BMDWATCH\x0134=2\x0152=20250301-01:00:00.001000\x01320=GetInstrumentList\x01146=1\x0155=BNBUSDT\x0115=USDT\x012551=0.01000000\x012552=100000.00000000\x01969=0.01000000\x01562=0.00100000\x011140=900000.00000000\x0125039=0.00100000\x0125040=0.00000001\x0125041=6629.33313692\x0125042=0.00000001\x01969=0.01000000\x0110=110\x01" else: return b"8=FIX.4.4\x019=84\x0135=5\x0134=4\x0149=SPOT\x0152=20250301-01:00:00.002000\x0156=GhQHzrLR\x0158=Logout acknowledgment.\x0110=212\x01" @@ -121,6 +121,21 @@ def test_instrument_list( if not msg.get(15, i + 1) else msg.get(15, i + 1).decode("utf-8") ) + min_price = ( + None + if not msg.get(2551, i + 1) + else msg.get(2551, i + 1).decode("utf-8") + ) + max_price = ( + None + if not msg.get(2552, i + 1) + else msg.get(2552, i + 1).decode("utf-8") + ) + min_price_inc = ( + None + if not msg.get(969, i + 1) + else msg.get(969, i + 1).decode("utf-8") + ) min_trade_vol = ( None if not msg.get(562, i + 1) @@ -159,6 +174,9 @@ def test_instrument_list( self.assertEqual("BNBUSDT", symbol) self.assertEqual("USDT", currency) + self.assertEqual("0.01000000", min_price) + self.assertEqual("100000.00000000", max_price) + self.assertEqual("0.01000000", min_price_inc) self.assertEqual("0.00100000", min_trade_vol) self.assertEqual("900000.00000000", max_trade_vol) self.assertEqual("0.00100000", min_qty)