market_center
market_center copied to clipboard
Center to collect market data from cryptocurrency exchanges and distribute it over UDS(Unix Domain Sockets) using GoEx
Market Center
A center to collect market data from cryptocurrency exchanges and distribute it over UDS(Unix Domain Sockets) using GoEx, it design for multi-strategy in one server, especial hft(high frequency trading)
NOT Support Windows
Why market center
Some exchanges has limitation for REST api, limit access frequency by IP or Account.
Usually we start some strategies in one server(description followed), Exchange 2 maybe ban your server IP because too many request.
So we could use a market center as a router to avoid limitation(description followed)
APIs
Ref to Client
params
- exchangeName: exchange name, ref to Supports
- currencyPair: currency pair, format with
_
, likeBTC_USDT
- period: market data update period, unit ms
- contractType: future/swap contract type
- GetSupportList() []
- SubscribeSpotTicker(exchangeName, currencyPair, period) (error)
- SubscribeSpotDepth(exchangeName, currencyPair, period) (error)
- ~~SubscribeSpotTrade(exchangeName, currencyPair) (error)~~
- GetSpotTicker(exchangeName, currencyPair) (*Ticker, error)
- GetSpotDepth(exchangeName, currencyPair) (*Depth, error)
- ~~GetSpotTrade(exchangeName, currencyPair) (*Trade, error)~~
- SubscribeFutureTicker(exchangeName, contractType, currencyPair, period) (error)
- SubscribeFutureDepth(exchangeName, contractType, currencyPair, period) (error)
- ~~SubscribeFutureTrade(exchangeName, contractType, currencyPair) (error)~~
- GetFutureTicker(exchangeName, contractType, currencyPair) (*Ticker, error)
- GetFutureDepth(exchangeName, contractType, currencyPair) (*Depth, error)
- ~~GetFutureTrade(exchangeName, contractType, currencyPair) (*Trade, error)~~
Support Exchanges
SPOT
- Poloniex
- Bitstamp
- Huobi
- Bitfinex
- Okex
- Binance
- Bittrex
- Bithumb
- Gdax
- Gate
- Coinex
- Zb
- Bigone
- Hitbtc
FUTURE
- Future_Bitmex
- Future_Okex
- Swap_Okex
- Future_Hbdm
- Swap_Binance
- Future_Coinbene
Proxy
center will get proxy setting from system environment, key word is HTTP_PROXY
. if you want to use proxy for center, set HTTP_PROXY=socks5://127.0.0.1:1080
or export HTTP_PROXY=socks5://127.0.0.1:1080
Client
golang client https://github.com/goex-top/market_center_client
fmz js client https://github.com/goex-top/market_center_client_fmz
Why UDS
benchmark compare between USD and TCP/IP loopback
- When the server and client benchmark programs run on the same box, both the TCP/IP loopback and unix domain sockets can be used. Depending on the platform, unix domain sockets can achieve around 50% more throughput than the TCP/IP loopback (on Linux for instance). The default behavior of redis-benchmark is to use the TCP/IP loopback.redis report
- Performance Analysis of Various Mechanisms for Inter-process Communication