'Find tickSize Binance
I'm trying to find tickSize using this method but it returns an error.
Data:
{'symbol': 'FIROUSDT', 'status': 'TRADING', 'baseAsset': 'FIRO', 'baseAssetPrecision': 8, 'quoteAsset': 'USDT', 'quotePrecision': 8, 'quoteAssetPrecision': 8, 'baseCommissionPrecision': 8, 'quoteCommissionPrecision': 8, 'orderTypes': ['LIMIT', 'LIMIT_MAKER', 'MARKET', 'STOP_LOSS_LIMIT', 'TAKE_PROFIT_LIMIT'], 'icebergAllowed': True, 'ocoAllowed': True, 'quoteOrderQtyMarketAllowed': True, 'allowTrailingStop': False, 'isSpotTradingAllowed': True, 'isMarginTradingAllowed': False, 'filters': [{'filterType': 'PRICE_FILTER', 'minPrice': '0.00100000', 'maxPrice': '10000.00000000', 'tickSize': '0.00100000'}, {'filterType': 'PERCENT_PRICE', 'multiplierUp': '5', 'multiplierDown': '0.2', 'avgPriceMins': 5}, {'filterType': 'LOT_SIZE', 'minQty': '0.10000000', 'maxQty': '90000.00000000', 'stepSize': '0.10000000'}, {'filterType': 'MIN_NOTIONAL', 'minNotional': '10.00000000', 'applyToMarket': True, 'avgPriceMins': 5}, {'filterType': 'ICEBERG_PARTS', 'limit': 10}, {'filterType': 'MARKET_LOT_SIZE', 'minQty': '0.00000000', 'maxQty': '26259.97721527', 'stepSize': '0.00000000'}, {'filterType': 'MAX_NUM_ORDERS', 'maxNumOrders': 200}, {'filterType': 'MAX_NUM_ALGO_ORDERS', 'maxNumAlgoOrders': 5}], 'permissions': ['SPOT']}
Code:
data = client.get_symbol_info('FIROUSDT')
print(data['filters']['filterType']['PRICE_FILTER']['tickSize'])
Error:
print(data['filters']['filterType']['PRICE_FILTER']['tickSize'])
TypeError: list indices must be integers or slices, not str
What's the mistake here?
Solution 1:[1]
data["filters"]
returns a List, not a Dictionary, so to access the "PRICE_FILTER" we need to use the index of this filter.
[
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00100000",
"maxPrice": "10000.00000000",
"tickSize": "0.00100000"
},
{
"filterType": "PERCENT_PRICE",
"multiplierUp": "5",
"multiplierDown": "0.2",
"avgPriceMins": 5
},
{
"filterType": "LOT_SIZE",
"minQty": "0.10000000",
"maxQty": "90000.00000000",
"stepSize": "0.10000000"
},
{
"filterType": "MIN_NOTIONAL",
"minNotional": "10.00000000",
"applyToMarket": true,
"avgPriceMins": 5
},
{
"filterType": "ICEBERG_PARTS",
"limit": 10
},
{
"filterType": "MARKET_LOT_SIZE",
"minQty": "0.00000000",
"maxQty": "26259.97721527",
"stepSize": "0.00000000"
},
{
"filterType": "MAX_NUM_ORDERS",
"maxNumOrders": 200
},
{
"filterType": "MAX_NUM_ALGO_ORDERS",
"maxNumAlgoOrders": 5
}
]
The first filter has a filterType of "PRICE_FILTER" so our index is 0 because Python uses 0-based indexing, so to get this filter we use
data["filters"][0]
This returns the following dictionary
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00100000",
"maxPrice": "10000.00000000",
"tickSize": "0.00100000"
}
So to print the tickSize you can run
print(data['filters'][0]['tickSize'])
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Ryan White |