Skip to content

Commit

Permalink
Merge pull request #1497 from c9s/edwin/okx/cancel-order
Browse files Browse the repository at this point in the history
FEATURE: [okx] generate cancel order by requestgen
  • Loading branch information
c9s authored Jan 11, 2024
2 parents 8eb5556 + 373242d commit 2bd93b4
Show file tree
Hide file tree
Showing 6 changed files with 295 additions and 134 deletions.
18 changes: 13 additions & 5 deletions pkg/exchange/okex/exchange.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@ var (
marketDataLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 5)
orderRateLimiter = rate.NewLimiter(rate.Every(300*time.Millisecond), 5)

queryMarketLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryTickerLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryTickersLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryAccountLimiter = rate.NewLimiter(rate.Every(200*time.Millisecond), 5)
placeOrderLimiter = rate.NewLimiter(rate.Every(30*time.Millisecond), 30)
queryMarketLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryTickerLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryTickersLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
queryAccountLimiter = rate.NewLimiter(rate.Every(200*time.Millisecond), 5)
placeOrderLimiter = rate.NewLimiter(rate.Every(30*time.Millisecond), 30)
batchCancelOrderLimiter = rate.NewLimiter(rate.Every(5*time.Millisecond), 200)
)

const ID = "okex"
Expand Down Expand Up @@ -321,11 +322,18 @@ func (e *Exchange) CancelOrders(ctx context.Context, orders ...types.Order) erro
req.InstrumentID(toLocalSymbol(order.Symbol))
req.OrderID(strconv.FormatUint(order.OrderID, 10))
if len(order.ClientOrderID) > 0 {
_, err := strconv.ParseInt(order.ClientOrderID, 10, 64)
if err != nil {
return fmt.Errorf("client order id should be numberic: %s, err: %w", order.ClientOrderID, err)
}
req.ClientOrderID(order.ClientOrderID)
}
reqs = append(reqs, req)
}

if err := batchCancelOrderLimiter.Wait(ctx); err != nil {
return fmt.Errorf("batch cancel order rate limiter wait error: %w", err)
}
batchReq := e.client.NewBatchCancelOrderRequest()
batchReq.Add(reqs...)
_, err := batchReq.Do(ctx)
Expand Down
21 changes: 21 additions & 0 deletions pkg/exchange/okex/okexapi/cancel_order_request.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package okexapi

import "github.com/c9s/requestgen"

//go:generate -command GetRequest requestgen -method GET -responseType .APIResponse -responseDataField Data
//go:generate -command PostRequest requestgen -method POST -responseType .APIResponse -responseDataField Data

//go:generate PostRequest -url "/api/v5/trade/cancel-order" -type CancelOrderRequest -responseDataType []OrderResponse
type CancelOrderRequest struct {
client requestgen.AuthenticatedAPIClient

instrumentID string `param:"instId"`
orderID *string `param:"ordId"`
clientOrderID *string `param:"clOrdId"`
}

func (c *RestClient) NewCancelOrderRequest() *CancelOrderRequest {
return &CancelOrderRequest{
client: c,
}
}
76 changes: 0 additions & 76 deletions pkg/exchange/okex/okexapi/cancel_order_request_accessors.go

This file was deleted.

195 changes: 195 additions & 0 deletions pkg/exchange/okex/okexapi/cancel_order_request_requestgen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 2bd93b4

Please sign in to comment.