README
¶
okex
NOTICE:
PACKAGE IS CURRENTLY UNDER HEAVY DEVELOPMENT AND THERE IS NO GUARANTY FOR STABILITY.
DISCLAIMER:
This package is provided as-is, without any express or implied warranties. The user assumes all risks associated with the use of this package. The author and contributors to this package shall not be held liable for any damages arising from the use of this package, including but not limited to direct, indirect, incidental, or consequential damages. This package is not intended to be used as a substitute for professional financial advice. Users are responsible for verifying the accuracy and reliability of the data generated by this package. Use of this package constitutes acceptance of these terms and conditions.
Okex V5 Golang API
A complete golang wrapper for Okex V5 API. Pretty simple and easy to use. For more info about Okex V5 API read here.
Installation
go get github.com/amir-the-h/okex@v1.0.34-alpha
Usage
package main
import (
"context"
"github.com/amir-the-h/okex"
"github.com/amir-the-h/okex/api"
"github.com/amir-the-h/okex/events"
"github.com/amir-the-h/okex/events/public"
ws_public_requests "github.com/amir-the-h/okex/requests/ws/public"
"log"
)
func main() {
apiKey := "YOUR-API-KEY"
secretKey := "YOUR-SECRET-KEY"
passphrase := "YOUR-PASS-PHRASE"
dest := okex.NormalServer // The main API server
ctx := context.Background()
client, err := api.NewClient(ctx, apiKey, secretKey, passphrase, &dest)
if err != nil {
log.Fatalln(err)
}
log.Println("Starting")
errChan := make(chan *events.Error)
subChan := make(chan *events.Subscribe)
uSubChan := make(chan *events.Unsubscribe)
logChan := make(chan *events.Login)
sucChan := make(chan *events.Success)
client.Ws.SetChannels(errChan, subChan, uSubChan, logChan, sucChan)
obCh := make(chan *public.OrderBook)
err = client.Ws.Public.OrderBook(ws_public_requests.OrderBook{
InstID: "BTC-USD-SWAP",
Channel: "books",
}, obCh)
if err != nil {
log.Fatalln(err)
}
for {
select {
case <-logChan:
log.Print("[Authorized]")
case success := <-sucChan:
log.Printf("[SUCCESS]\t%+v", success)
case sub := <-subChan:
channel, _ := sub.Arg.Get("channel")
log.Printf("[Subscribed]\t%s", channel)
case uSub := <-uSubChan:
channel, _ := uSub.Arg.Get("channel")
log.Printf("[Unsubscribed]\t%s", channel)
case err := <-client.Ws.ErrChan:
log.Printf("[Error]\t%+v", err)
for _, datum := range err.Data {
log.Printf("[Error]\t\t%+v", datum)
}
case i := <-obCh:
ch, _ := i.Arg.Get("channel")
log.Printf("[Event]\t%s", ch)
for _, p := range i.Books {
for i := len(p.Asks) - 1; i >= 0; i-- {
log.Printf("\t\tAsk\t%+v", p.Asks[i])
}
for _, bid := range p.Bids {
log.Printf("\t\tBid\t%+v", bid)
}
}
case b := <-client.Ws.DoneChan:
log.Printf("[End]:\t%v", b)
return
}
}
}
Supporting APIs
- Rest
- Trade (except demo special trading endpoints)
- Funding
- Account
- SubAccount
- Market Data
- Public Data
- Trading Data
- Ws
- Private Channel (except demo special trading endpoints)
- Public Channel
- Trade
Features
- All requests, responses, and events are well typed and will convert into the language built-in types instead of using API's strings. Note that zero values will be replaced with non-existing data.
- Fully automated authorization steps for both REST and WS
- To receive websocket events you can choose RawEventChan , StructuredEventChan, or provide your own channels. More info
Documentation
¶
Overview ¶
Package okex is generally a golang Api wrapper of Okex V5 API
Index ¶
- Constants
- func S2M(i interface{}) map[string]string
- type APIKeyAccess
- type AccountType
- type ActionType
- type ActualSide
- type AlgoOrderType
- type AliasType
- type BarSize
- type BaseURL
- type BillSubType
- type BillType
- type CandleStickWsBarSize
- type ChannelName
- type ClientError
- type ContractType
- type CountAction
- type DeliveryExerciseType
- type DepositState
- type Destination
- type EventType
- type FeeCategory
- type GreekType
- type InstrumentState
- type InstrumentType
- type JSONFloat64
- type JSONInt64
- type JSONTime
- type MarginMode
- type Operation
- type OptionType
- type OrderFlowType
- type OrderSide
- type OrderState
- type OrderType
- type PositionSide
- type PositionType
- type QuantityType
- type TradeMode
- type TradeSide
- type TransferType
- type WithdrawalDestination
- type WithdrawalState
Constants ¶
const ( RestURL = BaseURL("https://www.okx.com") PublicWsURL = BaseURL("wss://ws.okx.com:8443/ws/v5/public") PrivateWsURL = BaseURL("wss://ws.okx.com:8443/ws/v5/private") AwsRestURL = BaseURL("https://aws.okx.com") AwsPublicWsURL = BaseURL("wss://wsaws.okx.com:8443/ws/v5/public") AwsPrivateWsURL = BaseURL("wss://wsaws.okx.com:8443/ws/v5/private") DemoRestURL = BaseURL("https://www.okx.com") DemoPublicWsURL = BaseURL("wss://wspap.okx.com:8443/ws/v5/public?brokerId=9999") DemoPrivateWsURL = BaseURL("wss://wspap.okx.com:8443/ws/v5/private?brokerId=9999") NormalServer = Destination(iota + 1) AwsServer = NormalServer + 1 DemoServer = AwsServer + 1 SpotInstrument = InstrumentType("SPOT") MarginInstrument = InstrumentType("MARGIN") SwapInstrument = InstrumentType("SWAP") FuturesInstrument = InstrumentType("FUTURES") OptionsInstrument = InstrumentType("OPTION") MarginCrossMode = MarginMode("cross") MarginIsolatedMode = MarginMode("isolated") ContractLinearType = ContractType("linear") ContractInverseType = ContractType("inverse") BillTransferType = BillType(1) BillTradeType = BillType(2) BillDeliveryType = BillType(3) BillAutoTokenConversionType = BillType(4) BillLiquidationType = BillType(5) BillMarginTransferType = BillType(6) BillInterestDeductionType = BillType(7) BillFundingFeeType = BillType(8) BillADLType = BillType(9) BillClawbackType = BillType(10) BillSystemTokenConversionType = BillType(11) BillStrategyTransferType = BillType(12) BillBuySubType = BillSubType(1) BillSellSubType = BillSubType(2) BillOpenLongSubType = BillSubType(3) BillOpenShortSubType = BillSubType(4) BillCloseLongSubType = BillSubType(5) BillCloseShortSubType = BillSubType(6) BillInterestDeductionSubType = BillSubType(9) BillTransferInSubType = BillSubType(11) BillTransferOutSubType = BillSubType(12) BillManualMarginIncreaseSubType = BillSubType(160) BillManualMarginDecreaseSubType = BillSubType(161) BillAutoMarginIncreaseSubType = BillSubType(162) BillAutoBuySubType = BillSubType(110) BillAutoSellSubType = BillSubType(111) BillSystemTokenConversionTransferInSubType = BillSubType(118) BillSystemTokenConversionTransferOutSubType = BillSubType(119) BillPartialLiquidationCloseLongSubType = BillSubType(100) BillPartialLiquidationCloseShortSubType = BillSubType(101) BillPartialLiquidationBuySubType = BillSubType(102) BillPartialLiquidationSellSubType = BillSubType(103) BillLiquidationLongSubType = BillSubType(104) BillLiquidationShortSubType = BillSubType(105) BillLiquidationBuySubType = BillSubType(106) BillLiquidationSellSubType = BillSubType(107) BillLiquidationTransferInSubType = BillSubType(110) BillLiquidationTransferOutSubType = BillSubType(111) BillADLCloseLongSubType = BillSubType(125) BillADLCloseShortSubType = BillSubType(126) BillADLBuySubType = BillSubType(127) BillADLSellSubType = BillSubType(128) BillExercisedSubType = BillSubType(170) BillCounterpartyExercisedSubType = BillSubType(171) BillExpiredOTMSubType = BillSubType(172) BillDeliveryLongSubType = BillSubType(112) BillDeliveryShortSubType = BillSubType(113) BillDeliveryExerciseClawbackSubType = BillSubType(117) BillFundingFeeExpenseSubType = BillSubType(173) BillFundingFeeIncomeSubType = BillSubType(174) BillSystemTransferInSubType = BillSubType(200) BillManuallyTransferInSubType = BillSubType(201) BillSystemTransferOutSubType = BillSubType(202) BillManuallyTransferOutSubType = BillSubType(203) PositionLongShortMode = PositionType("long_short_mode") PositionNetMode = PositionType("net_mode") PositionLongSide = PositionSide("long") PositionShortSide = PositionSide("short") PositionNetSide = PositionSide("net") TpSide = ActualSide("tp") SlSide = ActualSide("sl") TradeCrossMode = TradeMode("cross") TradeIsolatedMode = TradeMode("isolated") TradeCashMode = TradeMode("cash") CountIncrease = CountAction("add") CountDecrease = CountAction("reduce") OrderBuy = OrderSide("buy") OrderSell = OrderSide("sell") GreekInCoin = GreekType("PA") GreekInDollars = GreekType("PB") Bar1m = BarSize("1m") Bar3m = BarSize("3m") Bar5m = BarSize("5m") Bar15m = BarSize("15m") Bar30m = BarSize("130") Bar1H = BarSize("1H") Bar2H = BarSize("2H") Bar4H = BarSize("4H") Bar6H = BarSize("6H") Bar8H = BarSize("8H") Bar12H = BarSize("12H") Bar1D = BarSize("1D") Bar1W = BarSize("1W") Bar1M = BarSize("1M") Bar3M = BarSize("3M") Bar6M = BarSize("6M") Bar1Y = BarSize("1Y") TradeBuySide = TradeSide("buy") TradeSellSide = TradeSide("sell") LoginOperation = Operation("login") SubscribeOperation = Operation("subscribe") UnsubscribeOperation = Operation("unsubscribe") OrderOperation = Operation("order") BatchOrderOperation = Operation("batch-orders") CancelOrderOperation = Operation("cancel-order") BatchCancelOrderOperation = Operation("batch-cancel-orders") AmendOrderOperation = Operation("amend-order") BatchAmendOrderOperation = Operation("batch-amend-orders") OrderMarket = OrderType("market") OrderLimit = OrderType("limit") OrderPostOnly = OrderType("post_only") OrderFOK = OrderType("fok") OrderIOC = OrderType("ioc") OrderOptimalLimitIoc = OrderType("optimal_limit_ioc") AlgoOrderConditional = AlgoOrderType("conditional") AlgoOrderOCO = AlgoOrderType("oco") AlgoOrderTrigger = AlgoOrderType("trigger") AlgoOrderIceberg = AlgoOrderType("iceberg") AlgoOrderTwap = AlgoOrderType("twap") QuantityBaseCcy = QuantityType("base_ccy") QuantityQuoteCcy = QuantityType("quote_ccy") OrderTakerFlow = OrderFlowType("T") OrderMakerFlow = OrderFlowType("M") ClassA = FeeCategory(1) ClassB = FeeCategory(2) ClassC = FeeCategory(3) ClassD = FeeCategory(4) OrderCancel = OrderState("canceled") OrderPause = OrderState("pause") OrderLive = OrderState("live") OrderPartiallyFilled = OrderState("partially_filled") OrderFilled = OrderState("filled") OrderUnfilled = OrderState("unfilled") TransferWithinAccount = TransferType(0) MasterAccountToSubAccount = TransferType(1) MasterSubAccountToAccount = TransferType(2) SpotAccount = AccountType(1) FuturesAccount = AccountType(3) MarginAccount = AccountType(5) FundingAccount = AccountType(6) SwapAccount = AccountType(9) OptionsAccount = AccountType(12) UnifiedAccount = AccountType(18) WaitingForConfirmation = DepositState(0) DepositCredited = DepositState(1) DepositSuccessful = DepositState(2) DepositTemporarySuspension = DepositState(8) WithdrawalOkexDestination = WithdrawalDestination(3) WithdrawalDigitalAddressDestination = WithdrawalDestination(4) WithdrawalPendingCancel = WithdrawalState(-3) WithdrawalCanceled = WithdrawalState(-2) WithdrawalFailed = WithdrawalState(-1) WithdrawalPending = WithdrawalState(0) WithdrawalSending = WithdrawalState(1) WithdrawalSent = WithdrawalState(2) WithdrawalAwaitingEmailVerification = WithdrawalState(3) WithdrawalAwaitingManualVerification = WithdrawalState(4) WithdrawalIdentityManualVerification = WithdrawalState(5) ActionPurchase = ActionType("purchase") ActionRedempt = ActionType("redempt") APIKeyReadOnly = APIKeyAccess("read_only") APIKeyTrade = APIKeyAccess("trade") OptionCall = OptionType("C") OptionPut = OptionType("P") AliasThisWeek = AliasType("this_week") AliasNextWeek = AliasType("next_week") AliasQuarter = AliasType("quarter") AliasNextQuarter = AliasType("next_quarter") InstrumentLive = InstrumentState("live") InstrumentSuspend = InstrumentState("suspend") InstrumentPreOpen = InstrumentState("preopen") Delivery = DeliveryExerciseType("delivery") Exercise = DeliveryExerciseType("exercised") ExpiredOtm = DeliveryExerciseType("expired_otm") CandleStick1Y = CandleStickWsBarSize("candle1Y") CandleStick6M = CandleStickWsBarSize("candle6M") CandleStick3M = CandleStickWsBarSize("candle3M") CandleStick1M = CandleStickWsBarSize("candle1M") CandleStick5D = CandleStickWsBarSize("candle5D") CandleStick3D = CandleStickWsBarSize("candle3D") CandleStick2D = CandleStickWsBarSize("candle2D") CandleStick1D = CandleStickWsBarSize("candle1D") CandleStick12H = CandleStickWsBarSize("candle12H") CandleStick6H = CandleStickWsBarSize("candle6H") CandleStick4H = CandleStickWsBarSize("candle4H") CandleStick2H = CandleStickWsBarSize("candle2H") CandleStick1H = CandleStickWsBarSize("candle1H") CandleStick30m = CandleStickWsBarSize("candle30m") CandleStick15m = CandleStickWsBarSize("candle15m") CandleStick5m = CandleStickWsBarSize("candle5m") CandleStick3m = CandleStickWsBarSize("candle3m") CandleStick1m = CandleStickWsBarSize("candle1m") )
Variables ¶
This section is empty.
Functions ¶
Types ¶
type APIKeyAccess ¶
type APIKeyAccess string
type AccountType ¶
type AccountType uint8
func (*AccountType) UnmarshalJSON ¶
func (t *AccountType) UnmarshalJSON(s []byte) (err error)
type ActionType ¶
type ActionType string
type ActualSide ¶
type ActualSide string
type AlgoOrderType ¶
type AlgoOrderType string
type BillSubType ¶
type BillSubType uint8
func (*BillSubType) UnmarshalJSON ¶
func (t *BillSubType) UnmarshalJSON(s []byte) (err error)
type CandleStickWsBarSize ¶
type CandleStickWsBarSize string
type ChannelName ¶
type ChannelName string
type ClientError ¶
type ClientError error
type ContractType ¶
type ContractType string
type CountAction ¶
type CountAction string
type DeliveryExerciseType ¶
type DeliveryExerciseType string
type DepositState ¶
type DepositState uint8
func (*DepositState) UnmarshalJSON ¶
func (t *DepositState) UnmarshalJSON(s []byte) (err error)
type Destination ¶
type Destination int
type FeeCategory ¶
type FeeCategory uint8
func (*FeeCategory) UnmarshalJSON ¶
func (t *FeeCategory) UnmarshalJSON(s []byte) (err error)
type InstrumentState ¶
type InstrumentState string
type InstrumentType ¶
type InstrumentType string
type JSONFloat64 ¶
type JSONFloat64 float64
func (*JSONFloat64) UnmarshalJSON ¶
func (t *JSONFloat64) UnmarshalJSON(s []byte) (err error)
type JSONTime ¶
func (*JSONTime) UnmarshalJSON ¶
type MarginMode ¶
type MarginMode string
type OptionType ¶
type OptionType string
type OrderFlowType ¶
type OrderFlowType string
type OrderState ¶
type OrderState string
type PositionSide ¶
type PositionSide string
type PositionType ¶
type PositionType string
type QuantityType ¶
type QuantityType string
type TransferType ¶
type TransferType uint8
type WithdrawalDestination ¶
type WithdrawalDestination uint8
type WithdrawalState ¶
type WithdrawalState int8
func (*WithdrawalState) UnmarshalJSON ¶
func (t *WithdrawalState) UnmarshalJSON(s []byte) (err error)