Skip to content

Latest commit

 

History

History
220 lines (187 loc) · 14.6 KB

README.md

File metadata and controls

220 lines (187 loc) · 14.6 KB

Bitmex REST/Realtime APIs for Go

Fork & Tribute

github@zmxv

Overview

This go-bitmex package enables golang clients to call REST APIs for the Bitmex crypto trading platform. It fixes critical bugs in the swagger-generated code and enhances its usability.

Notable changes:

  • Fixed the authentication logic and API endpoint
  • Fixed form data encoding
  • Renamed the package from swagger to bitmex
  • Removed all external dependencies (golang.org/x/oauth2 and github.com/antihax/optional)
  • Added a local optional package with mutable states to simplify parameter assignment
  • Fixed many type issues and removed the obsolete XAny type

This package also differs from an alternative library at https://github.com/qct/bitmex-go in the following ways:

  • bitmex employs strongly-typed structs for API parameters instead of map[string]interface{}.
  • bitmex is forked from a more recent version of the swagger-generated code.
  • bitmex depends on no external packages and is compatible with Google App Engine.

Installation

$ go get github.com/go-numb/go-bitmex

Usage

import "github.com/go-numb/go-bitmex"

const (
    // Get your API key/secret pair at https://www.bitmex.com/app/apiKeys
    key := "<API_KEY>"
    secret := "<API_SECRET>"
    isTestNet = false
)

func main() {

    // Create an authentication context
    auth := bitmex.NewAPIKeyContext(key, secret)

    // Create a shareable API client instance
    client := bitmex.NewAPIClient(bitmex.NewConfiguration())
    if isTestNet {
        // Create a testnet API client instance
        client := bitmex.NewAPIClient(bitmex.NewTestnetConfiguration())
    }

    // Manager API Limit
    isPrivate := true
    publicAPI := bitmex.NewLimit(!isPrivate)
    privateAPI := bitmex.NewLimit(isPrivate)


    // Call APIs without parameters by passing the auth context.
    // e.g. getting exchange-wide turnover and volume statistics:
    stats, res, err := client.StatsApi.StatsGet(auth)

    // gets API Remain from header x-ratelimit-remain & more
    publicAPI.FromHeader(res.Header)

    // Call APIs with default parameters by passing the auth context and a nil.
    // e.g. getting all open positions:
    pos, res, err := client.PositionApi.PositionGet(auth, nil)

    // gets API Remain from header x-ratelimit-remain & more
    publicAPI.FromHeader(res.Header)

    // Call APIs with additional parameters by constructing a corresponding XXXOpts struct.
    // e.g. submitting a limit order to buy 20000 contracts of XBTUSD at $6000.5:
    var params bitmex.OrderNewOpts
    params.OrdType.Set("Limit")
    params.Side.Set("Buy")
    params.OrderQty.Set(20000)
    params.Price.Set(6000.5)

    // checks API Limit
    if err := privateAPI.Check();err != nil {
        return
    }

    // order with params
    order, res, err := client.OrderApi.OrderNew(auth, "XBTUSD", &params)
    
    // gets API Remain from header x-ratelimit-remain & more
    privateAPI.FromHeader(res.Header)
}

Documentation for API Endpoints

All URIs are relative to https://www.bitmex.com/api/v1

Class Method HTTP request Description
APIKeyApi APIKeyDisable Post /apiKey/disable Disable an API Key.
APIKeyApi APIKeyEnable Post /apiKey/enable Enable an API Key.
APIKeyApi APIKeyGet Get /apiKey Get your API Keys.
APIKeyApi APIKeyNew Post /apiKey Create a new API Key.
APIKeyApi APIKeyRemove Delete /apiKey Remove an API Key.
AnnouncementApi AnnouncementGet Get /announcement Get site announcements.
AnnouncementApi AnnouncementGetUrgent Get /announcement/urgent Get urgent (banner) announcements.
ChatApi ChatGet Get /chat Get chat messages.
ChatApi ChatGetChannels Get /chat/channels Get available channels.
ChatApi ChatGetConnected Get /chat/connected Get connected users.
ChatApi ChatNew Post /chat Send a chat message.
ExecutionApi ExecutionGet Get /execution Get all raw executions for your account.
ExecutionApi ExecutionGetTradeHistory Get /execution/tradeHistory Get all balance-affecting executions. This includes each trade, insurance charge, and settlement.
FundingApi FundingGet Get /funding Get funding history.
InstrumentApi InstrumentGet Get /instrument Get instruments.
InstrumentApi InstrumentGetActive Get /instrument/active Get all active instruments and instruments that have expired in <24hrs.
InstrumentApi InstrumentGetActiveAndIndices Get /instrument/activeAndIndices Helper method. Gets all active instruments and all indices. This is a join of the result of /indices and /active.
InstrumentApi InstrumentGetActiveIntervals Get /instrument/activeIntervals Return all active contract series and interval pairs.
InstrumentApi InstrumentGetCompositeIndex Get /instrument/compositeIndex Show constituent parts of an index.
InstrumentApi InstrumentGetIndices Get /instrument/indices Get all price indices.
InsuranceApi InsuranceGet Get /insurance Get insurance fund history.
LeaderboardApi LeaderboardGet Get /leaderboard Get current leaderboard.
LeaderboardApi LeaderboardGetName Get /leaderboard/name Get your alias on the leaderboard.
LiquidationApi LiquidationGet Get /liquidation Get liquidation orders.
NotificationApi NotificationGet Get /notification Get your current notifications.
OrderApi OrderAmend Put /order Amend the quantity or price of an open order.
OrderApi OrderAmendBulk Put /order/bulk Amend multiple orders for the same symbol.
OrderApi OrderCancel Delete /order Cancel order(s). Send multiple order IDs to cancel in bulk.
OrderApi OrderCancelAll Delete /order/all Cancels all of your orders.
OrderApi OrderCancelAllAfter Post /order/cancelAllAfter Automatically cancel all your orders after a specified timeout.
OrderApi OrderClosePosition Post /order/closePosition Close a position. [Deprecated, use POST /order with execInst: 'Close']
OrderApi OrderGetOrders Get /order Get your orders.
OrderApi OrderNew Post /order Create a new order.
OrderApi OrderNewBulk Post /order/bulk Create multiple new orders for the same symbol.
OrderBookApi OrderBookGetL2 Get /orderBook/L2 Get current orderbook in vertical format.
PositionApi PositionGet Get /position Get your positions.
PositionApi PositionIsolateMargin Post /position/isolate Enable isolated margin or cross margin per-position.
PositionApi PositionTransferIsolatedMargin Post /position/transferMargin Transfer equity in or out of a position.
PositionApi PositionUpdateLeverage Post /position/leverage Choose leverage for a position.
PositionApi PositionUpdateRiskLimit Post /position/riskLimit Update your risk limit.
QuoteApi QuoteGet Get /quote Get Quotes.
QuoteApi QuoteGetBucketed Get /quote/bucketed Get previous quotes in time buckets.
SchemaApi SchemaGet Get /schema Get model schemata for data objects returned by this API.
SchemaApi SchemaWebsocketHelp Get /schema/websocketHelp Returns help text & subject list for websocket usage.
SettlementApi SettlementGet Get /settlement Get settlement history.
StatsApi StatsGet Get /stats Get exchange-wide and per-series turnover and volume statistics.
StatsApi StatsHistory Get /stats/history Get historical exchange-wide and per-series turnover and volume statistics.
StatsApi StatsHistoryUSD Get /stats/historyUSD Get a summary of exchange statistics in USD.
TradeApi TradeGet Get /trade Get Trades.
TradeApi TradeGetBucketed Get /trade/bucketed Get previous trades in time buckets.
UserApi UserCancelWithdrawal Post /user/cancelWithdrawal Cancel a withdrawal.
UserApi UserCheckReferralCode Get /user/checkReferralCode Check if a referral code is valid.
UserApi UserConfirm Post /user/confirmEmail Confirm your email address with a token.
UserApi UserConfirmEnableTFA Post /user/confirmEnableTFA Confirm two-factor auth for this account. If using a Yubikey, simply send a token to this endpoint.
UserApi UserConfirmWithdrawal Post /user/confirmWithdrawal Confirm a withdrawal.
UserApi UserDisableTFA Post /user/disableTFA Disable two-factor auth for this account.
UserApi UserGet Get /user Get your user model.
UserApi UserGetAffiliateStatus Get /user/affiliateStatus Get your current affiliate/referral status.
UserApi UserGetCommission Get /user/commission Get your account's commission status.
UserApi UserGetDepositAddress Get /user/depositAddress Get a deposit address.
UserApi UserGetMargin Get /user/margin Get your account's margin status. Send a currency of &quot;all&quot; to receive an array of all supported currencies.
UserApi UserGetWallet Get /user/wallet Get your current wallet information.
UserApi UserGetWalletHistory Get /user/walletHistory Get a history of all of your wallet transactions (deposits, withdrawals, PNL).
UserApi UserGetWalletSummary Get /user/walletSummary Get a summary of all of your wallet transactions (deposits, withdrawals, PNL).
UserApi UserLogout Post /user/logout Log out of BitMEX.
UserApi UserLogoutAll Post /user/logoutAll Log all systems out of BitMEX. This will revoke all of your account's access tokens, logging you out on all devices.
UserApi UserMinWithdrawalFee Get /user/minWithdrawalFee Get the minimum withdrawal fee for a currency.
UserApi UserRequestEnableTFA Post /user/requestEnableTFA Get secret key for setting up two-factor auth.
UserApi UserRequestWithdrawal Post /user/requestWithdrawal Request a withdrawal to an external wallet.
UserApi UserSavePreferences Post /user/preferences Save user preferences.
UserApi UserUpdate Put /user Update your password, name, and other attributes.

Documentation For Models

Author

@_numbP

Bitmex customer support

support@bitmex.com