Feat/support binance (#22)

* add docs

* Add Binance exchange support

- Updated the environment configuration to include Binance as a selectable exchange option.
- Enhanced the README documentation to reflect the addition of Binance.
- Implemented the Binance exchange adapter and integrated it into the existing exchange framework.
- Modified the basis arbitrage strategy to support Binance alongside existing exchanges.
- Added tests to ensure proper functionality and integration of Binance within the trading system.

* Enhance README with detailed Binance exchange configuration

- Added comprehensive instructions for setting up Binance as an exchange option.
- Included environment variable specifications for API keys, market types, and trading symbols.
- Provided examples for both perpetual and spot trading strategies.
- Clarified the use of WebSocket and REST for the Binance adapter.

* Enhance exchange support and testing framework

- Added a new test suite for exchange contracts to ensure consistency and functionality across supported exchanges.
- Refactored exchange ID handling to utilize a centralized list of supported exchanges, improving maintainability.
- Updated CLI argument parsing and help documentation to reflect the new exchange structure.
- Introduced utility functions for validating supported exchanges and their display names.
- Enhanced the BasisApp and strategy runner to leverage the new exchange validation logic.
- Added a new test command for running exchange-related tests.

* Refactor exchange contract tests and update CLI commands

- Removed the trailing supported exchanges set and simplified the logic for trailing stop support in the exchange contract tests.
- Updated the test command for exchange contracts to exclude unnecessary tests, streamlining the testing process.
- Enhanced test descriptions for clarity and improved understanding of the functionality being tested.
This commit is contained in:
Disney
2026-02-27 11:37:44 +08:00
committed by GitHub
parent 422ee6f465
commit d6399b92aa
588 changed files with 96879 additions and 106 deletions
@@ -0,0 +1,255 @@
---
title: "Common Definition | Binance Open Platform"
source: "https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition"
fetched_at: "2026-01-27T05:28:19.052Z"
---
# Public API Definitions
## Terminology[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- `baseasseet` refers to the asset that is the `quantity` of a symbol.
- `quoteAsset` refers to the asset that is the `price` of a symbol.
- `Margin` refers to `Cross Margin`
- `UM` refers to `USD-M Futures`
- `CM` refers to `Coin-M Futures`
## ENUM definitions[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
**Order side (side)**
- BUY
- SELL
**Position side for Futures (positionSide)**
- BOTH
- LONG
- SHORT
**Time in force (timeInForce)**
- GTC - Good Till Cancel
- IOC - Immediate or Cancel
- FOK - Fill or Kill
- GTX - Good Till Crossing (Post Only)
**Stop-Limit Time in force (stopLimitTimeInForce)**
- GTC - Good Till Cancel
- IOC - Immediate or Cancel
- FOK - Fill or Kill
**Side Effect Type (sideEffectType)**
- NO\_SIDE\_EFFECT
- MARGIN\_BUY
- AUTO\_REPAY
**Price Match (priceMatch)**
- NONE: no price match
- OPPONENT: counterparty best price
- OPPONENT\_5: counterparty 5th best price
- OPPONENT\_10: counterparty 10th best price
- OPPONENT\_20: counterparty 20th best price
- QUEUE: the best price on the same side of the order book
- QUEUE\_5: the 5th best price on the same side of the order book
- QUEUE\_10: the 10th best price on the same side of the order book
- QUEUE\_20: the 20th best price on the same side of the order book
**Self-Trade Prevention mode (selfTradePreventionMode)**
- NONE: No Self-Trade Prevention
- EXPIRE\_TAKER: expire taker order when STP trigger
- EXPIRE\_BOTH: expire taker and maker order when STP trigger
- EXPIRE\_MAKER: expire maker order when STP trigger
**Response Type (newOrderRespType)**
- ACK
- RESULT
**Order types (type)**
- LIMIT
- MARKET
**Conditional Order types (strategyType)**
- STOP
- STOP\_MARKET
- TAKE\_PROFIT
- TAKE\_PROFIT\_MARKET
- TRAILING\_STOP\_MARKET
**Working Type for Futures Conditional Orders (workingType)**
- MARK\_PRICE
**Order status (status)**
- NEW
- CANCELED
- REJECTED
- PARTIALLY\_FILLED
- FILLED
- EXPIRED
**Conditional Order status (strategyStatus)**
- NEW
- CANCELED
- TRIGGERED - conditional order is triggered
- FINISHED - triggered order is filled
- EXPIRED
**Futures Contract type (contractType):**
- PERPETUAL
- CURRENT\_MONTH
- NEXT\_MONTH
- CURRENT\_QUARTER
- NEXT\_QUARTER
- PERPETUAL\_DELIVERING
**Contract status (contractStatus, status):**
- PENDING\_TRADING
- TRADING
- PRE\_DELIVERING
- DELIVERING
- DELIVERED
- PRE\_SETTLE
- SETTLING
- CLOSE
**Rate limiters (rateLimitType)**
- REQUEST\_WEIGHT
- ORDERS
> **REQUEST\_WEIGHT**
```
{ "rateLimitType": "REQUEST_WEIGHT", "interval": "MINUTE", "intervalNum": 1, "limit": 2400 }
```
> **ORDERS**
```
{ "rateLimitType": "ORDERS", "interval": "MINUTE", "intervalNum": 1, "limit": 1200 }
```
**Rate limit intervals (interval)**
- MINUTE
# Filters
Filters define trading rules on a symbol or an exchange.
## Symbol filters[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
### PRICE\_FILTER[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `PRICE_FILTER` defines the `price` rules for a symbol. There are 3 parts:
- `minPrice` defines the minimum `price`/`stopPrice` allowed; disabled on `minPrice` == 0.
- `maxPrice` defines the maximum `price`/`stopPrice` allowed; disabled on `maxPrice` == 0.
- `tickSize` defines the intervals that a `price`/`stopPrice` can be increased/decreased by; disabled on `tickSize` == 0.
Any of the above variables can be set to 0, which disables that rule in the `price filter`. In order to pass the `price filter`, the following must be true for `price`/`stopPrice` of the enabled rules:
- sell order `price` >= `minPrice`
- buy order `price` <= `maxPrice`
- (`price`\-`minPrice`) % `tickSize` == 0
> **ExchangeInfo format:**
```
{ "filterType": "PRICE_FILTER", "minPrice": "0.00000100", "maxPrice": "100000.00000000", "tickSize": "0.00000100"}
```
### LOT\_SIZE[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `LOT_SIZE` filter defines the `quantity` (aka "lots" in auction terms) rules for a symbol. There are 3 parts:
- `minQty` defines the minimum `quantity` allowed.
- `maxQty` defines the maximum `quantity` allowed.
- `stepSize` defines the intervals that a `quantity` can be increased/decreased by.
In order to pass the `lot size`, the following must be true for `quantity`:
- `quantity` >= `minQty`
- `quantity` <= `maxQty`
- (`quantity`\-`minQty`) % `stepSize` == 0
> **/exchangeInfo format:**
```
{ "filterType": "LOT_SIZE", "minQty": "0.00100000", "maxQty": "100000.00000000", "stepSize": "0.00100000"}
```
### PERCENT\_PRICE[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `PERCENT_PRICE` filter defines valid range for a price based on the mark price in Futures and on the average of the previous trades in Cross Margin. For Cross Margin `avgPriceMins` is the number of minutes the average price is calculated over. 0 means the last price is used.
In order to pass the `percent price`, the following must be true for `price`:
- Futures BUY: `price` <= `markPrice` \_ `multiplierUp` SELL: `price` >= `markPrice` \_ `multiplierDown`
- Cross Margin BUY: `price` <= `weightedAveragePrice` \_ `multiplierUp` SELL: `price` >= `weightedAveragePrice` \_ `multiplierDown`
### MIN\_NOTIONAL[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `MIN_NOTIONAL` filter defines the minimum notional value allowed for an order on a symbol. An order's notional value is the `price` \* `quantity`. Since `MARKET` orders have no price, the `mark price` is used in Futures and the average price is used over the last `avgPriceMins` for Cross Margin. `avgPriceMins` is the number of minutes the average price is calculated over. 0 means the last price is used.
### MARKET\_LOT\_SIZE[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `MARKET_LOT_SIZE` filter defines the `quantity` (aka "lots" in auction terms) rules for `MARKET` orders on a symbol. There are 3 parts:
- `minQty` defines the minimum `quantity` allowed.
- `maxQty` defines the maximum `quantity` allowed.
- `stepSize` defines the intervals that a `quantity` can be increased/decreased by.
In order to pass the `market lot size`, the following must be true for `quantity`:
- `quantity` >= `minQty`
- `quantity` <= `maxQty`
- (`quantity`\-`minQty`) % `stepSize` == 0
> **/exchangeInfo format:**
```
{ "filterType": "MARKET_LOT_SIZE", "minQty": "0.00100000", "maxQty": "100000.00000000", "stepSize": "0.00100000"}
```
### MAX\_NUM\_ORDERS[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `MAX_NUM_ORDERS` filter defines the maximum number of orders an account is allowed to have open on a symbol. Note that both "algo" orders and normal orders are counted for this filter.
> **/exchangeInfo format:**
```
{ "filterType": "MAX_NUM_ORDERS", "limit": 200}
```
### MAX\_NUM\_ALGO\_ORDERS[](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
The `MAX_NUM_ALGO_ORDERS` filter defines the maximum number of all kinds of algo orders an account is allowed to have open on a symbol. The algo orders include `STOP`, `STOP_MARKET`, `TAKE_PROFIT`, `TAKE_PROFIT_MARKET`, and `TRAILING_STOP_MARKET` orders.
> **/exchangeInfo format:**
```
{ "filterType": "MAX_NUM_ALGO_ORDERS", "limit": 100}
```
- [Terminology](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [ENUM definitions](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [Symbol filters](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [PRICE\_FILTER](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [LOT\_SIZE](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [PERCENT\_PRICE](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [MIN\_NOTIONAL](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [MARKET\_LOT\_SIZE](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [MAX\_NUM\_ORDERS](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)
- [MAX\_NUM\_ALGO\_ORDERS](https://developers.binance.com/docs/derivatives/portfolio-margin/common-definition)