发布

  • 9395 934128cfa0

    Binance Brokerage implementation (#4688)

    frostbyte_neo 发布于 2020-09-28 18:57:10 +00:00 | 2785 次提交 在此版本后已推送到 master

    • Binance Brokerage skeleton

    • Market hours

    • Implement Symbol Mapper

    • known symbols available on /api/v1/exchangeInfo
    • fiat currencies are pegged
    • Implement GetCashBalance

    • Implement GetAccountHoldings

    • there are no pre-existing currency swaps
    • cash balances are pulled and stored in the cashbook
    • Implement GetOpenOrders

    • Manage orders: PlaceOrder

    • Manage orders: UpdateOrder

    Update operation is not supported

    • Manage orders: CancelOrder

    • Messaging: order book

    • Messaging: trades

    • Messaging: combine streams

    • connect to fake /ws/open channel on init
    • case by channel name, but not event type
    • Messaging: order depth updates
    • ticker symbol is not enough as it pushes updates only once a second, this would be a very incomplete data stream
    • fetch ticker snapshot if lastUpdateId == 0
    • follow Binance instructions for keeping local orderbook fresh
    • Messaging: user data streaming
    • Request userDataStream endpoint to get listenKey
    • keep listenkey alive
    • handle order close event
    • handle order fill event
    • DataDownloader: get history
    • we can aggregate minute candles for higher resolutions
    • fix data stream

    • Tests: FeeModel tests

    • Tests: base brokerage tests

    • Tests: download history

    • Tests: symbol mapper

    • Support StopLimit andd StopMarket orders

    • StopMarket orders disabled

    Take profit and Stop loss orders are not supported for any symbols (tested with BTCUSDT, ETHUSDT)

    • Tests: StopLimit order

    • Tests: crypto parsing

    • Reissue user data listen key

    • comment custom currency limitation

    • rework websocket connections

    • implement delayed subscription

    • adapt ignore message

    • add license banner

    • use better suited exception type

    • avoid message double parsing

    • support custom fee values

    • extract BinanceApiClient to manage the request/response between lean and binance

    • use api events to invoke brokerage events

    • do not allow to terminate session if it wasn't allocated.

    • update binance exchange info

    • tool to add or update binance exchange info

    • ExchangeInfo basic test

    • Rebase + Resharp

    • Binance brokerage updates

    • Fix sign bug in sell order fills
    • Fix bug in GetHistory
    • Remove duplicate symbol from symbol properties db
    • Remove unused code

    • Revert removal of account currency check

    • Update symbols properties database

    • Address review

    • Address review

    • Upgrade API endpoints from v1 to v3
    • Updated sub/unsub for new subscription manager
    • Subscribe best bid/ask quotes instead of full order book
    • Added handling of websocket error messages
    • Cleanup + refactor
    • Update symbol properties database

    • Remove list from symbol mapper

    • Fix symbol mapper tests

    • Address review

    • Fix resubscribe after reconnect
    • Fix quote tick edge case
    • Fix EnsureCurrencyDataFeed for non-tradeable currencies

    • Fix check in EnsureCurrencyDataFeed

    • Reuse base class subscribe on reconnect

    Co-authored-by: Adalyat Nazirov aenazirov@gmail.com
    Co-authored-by: Martin-Molinero martin@quantconnect.com

    下载附件