/kugo

The Best Go SDK for KuCoin API

Primary LanguageGoMIT LicenseMIT

KuGo

Software License

The Best Go SDK for KuCoin API

This SDK is currently available for KuCoin V2 API KEY. All API request parameters and response details are described in the documentation at https://docs.kucoin.com.

Install

go get github.com/xiiiew/kugo

REST API Support

Account
DESCRIPTION METHOD URI
List Spot Accounts GET /api/v2/accounts
List Future Accounts GET /api/v1/account-overview
Spot
DESCRIPTION METHOD URI
Place a New Order POST /api/v1/orders
Place a Margin Order POST /api/v1/margin/order
Cancel an Order DELETE /api/v1/orders/{orderId}
List Orders GET /api/v1/orders
Get an Order GET /api/v1/orders/{orderId}
List Fills GET /api/v1/fills
Future
DESCRIPTION METHOD URI
Place an Order POST /api/v1/orders
Cancel an Order DELETE /api/v1/orders/{orderId}
List Orders GET /api/v1/orders
Get an Order GET /api/v1/orders/{orderId}
List Fills GET /api/v1/fills
Get Position Details GET /api/v1/position
Market
DESCRIPTION METHOD URI
Get Spot Symbols GET /api/v2/symbols
Get Future Symbols GET /api/v1/contracts/active

Usage

Create Instance

// Default instance
instance, err := kugo.NewKucoin()

// Set Kucoin V2 API Key
instance, err := kugo.NewKucoin(
    kugo.SetApiKey("accessKey", "secretKey", "passphrase"),
)

// Set environment
instance, err := kugo.NewKucoin(
    kugo.SetSpotEndpoint("https://openapi-sandbox.kucoin.com"),
    kugo.SetFutureEndpoint("https://api-sandbox-futures.kucoin.com"),
)

// Debug mode. Default output of debug information to the console
instance, err := kugo.NewKucoin(
    kugo.SetDebug(true),
)

// Set the output mode of debug information (e.g. to log files)
instance, err := kugo.NewKucoin(
    kugo.SetDebug(true),
    kugo.SetRequestLog(func(i ...interface{}) {
        // Output request log
    }),
    kugo.SetResponseLog(func(i ...interface{}) {
        // Output response log
    }),
)

// Set HTTP client
uProxy, _ := url.Parse("http://127.0.0.1:7890")
instance, err := kugo.NewKucoin(
    kugo.SetClient(&http.Client{Transport: &http.Transport{
			Proxy:             http.ProxyURL(uProxy),
			DisableKeepAlives: true},
			Timeout: 10 * time.Second},
    ),
)

Examples

See the test case for more examples.

// Spot symbols
symbols, err := instance.SpotSymbols("USDS")
if err != nil {
    t.Fatal(err)
}
t.Logf("result: %+v", symbols)

// Spot order
req := &kugo.SpotOrdersRequest{
    ClientOid:   "123",
    Side:        "buy",
    Symbol:      "BTC-USDT",
    Type:        "limit",
    TradeType:   "TRADE",
    Price:       decimal.NewFromFloat(450000),
    Size:        decimal.NewFromFloat(1),
    TimeInForce: "IOC",
}
result, err := instance.SpotOrder(req)
t.Log(result, err)

Contributing

We welcome contributions from anyone!

Contact

If you have any questions or concerns about the project, you can contact us at: