Fix instrument types in symbol parsing on Bitmex. #981
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of code - what bug does this fix / what feature does this add?
This fix resolves two related bugs in the symbol handling for Bitmex. Firstly, it properly decodes instrument types, including disambiguating
SPOT
andPERPETUAL
symbols. Since both have the same counter and base currency, formerly the spot instrument would overwrite the perpetual instrument simply because it came later in the active instruments rest endpoint. For example, during parsing the normalized symbolBTC-USDT-PERP
would first (correctly) refer to Bitmex instrumentXBTUSDT
and later be overwritten to refer to Bitmex's spot marketXBT_USDT
(yes, the naming is indeed confusing).This fix resolves a second bug, in that Bitmex has two
ETH-USD-PERP
instruments, namelyETHUSD
andETHUSD_ETH
. Also in this case the latter, much less active instrument would overwrite the former. In case of ambiguity, this fix therefore gives precedence to the first match.I think this PR will resolve #905. Note that the instrument types were taking from the official documentation. An obvious consequence of this fix is that cryptofeed will support Bitmex's spot markets.