87 lines
3.2 KiB
Go
87 lines
3.2 KiB
Go
package okexapi
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/c9s/requestgen"
|
|
|
|
"git.qtrade.icu/lychiyu/qbtrade/pkg/fixedpoint"
|
|
"git.qtrade.icu/lychiyu/qbtrade/pkg/types"
|
|
)
|
|
|
|
//go:generate -command GetRequest requestgen -method GET -responseType .APIResponse -responseDataField Data
|
|
//go:generate -command PostRequest requestgen -method POST -responseType .APIResponse -responseDataField Data
|
|
|
|
type LiquidityType string
|
|
|
|
const (
|
|
LiquidityTypeMaker = "M"
|
|
LiquidityTypeTaker = "T"
|
|
)
|
|
|
|
type Trade struct {
|
|
InstrumentType InstrumentType `json:"instType"`
|
|
InstrumentId string `json:"instId"`
|
|
TradeId types.StrInt64 `json:"tradeId"`
|
|
OrderId types.StrInt64 `json:"ordId"`
|
|
ClientOrderId string `json:"clOrdId"`
|
|
// Data generation time, Unix timestamp format in milliseconds, e.g. 1597026383085.
|
|
Timestamp types.MillisecondTimestamp `json:"ts"`
|
|
FillTime types.MillisecondTimestamp `json:"fillTime"`
|
|
FeeCurrency string `json:"feeCcy"`
|
|
Fee fixedpoint.Value `json:"fee"`
|
|
BillId types.StrInt64 `json:"billId"`
|
|
Side SideType `json:"side"`
|
|
ExecutionType LiquidityType `json:"execType"`
|
|
|
|
Tag string `json:"tag"`
|
|
// Last filled price
|
|
FillPrice fixedpoint.Value `json:"fillPx"`
|
|
// Last filled quantity
|
|
FillSize fixedpoint.Value `json:"fillSz"`
|
|
// Index price at the moment of trade execution
|
|
//For cross currency spot pairs, it returns baseCcy-USDT index price. For example, for LTC-ETH, this field returns the index price of LTC-USDT.
|
|
FillIndexPrice fixedpoint.Value `json:"fillIdxPx"`
|
|
FillPnl string `json:"fillPnl"`
|
|
|
|
// Only applicable to options; return "" for other instrument types
|
|
FillPriceVolume fixedpoint.Value `json:"fillPxVol"`
|
|
FillPriceUsd fixedpoint.Value `json:"fillPxUsd"`
|
|
FillMarkVolume fixedpoint.Value `json:"fillMarkVol"`
|
|
FillForwardPrice fixedpoint.Value `json:"fillFwdPx"`
|
|
FillMarkPrice fixedpoint.Value `json:"fillMarkPx"`
|
|
PosSide string `json:"posSide"`
|
|
}
|
|
|
|
//go:generate GetRequest -url "/api/v5/trade/fills-history" -type GetTransactionHistoryRequest -responseDataType []Trade -rateLimiter 1+10/2s
|
|
type GetTransactionHistoryRequest struct {
|
|
client requestgen.AuthenticatedAPIClient
|
|
|
|
instrumentType InstrumentType `param:"instType,query"`
|
|
instrumentID *string `param:"instId,query"`
|
|
orderID *string `param:"ordId,query"`
|
|
|
|
// Underlying and InstrumentFamily Applicable to FUTURES/SWAP/OPTION
|
|
underlying *string `param:"uly,query"`
|
|
instrumentFamily *string `param:"instFamily,query"`
|
|
|
|
after *string `param:"after,query"`
|
|
before *string `param:"before,query"`
|
|
startTime *time.Time `param:"begin,query,milliseconds"`
|
|
|
|
// endTime for each request, startTime and endTime can be any interval, but should be in last 3 months
|
|
endTime *time.Time `param:"end,query,milliseconds"`
|
|
|
|
// limit for data size per page. Default: 100
|
|
limit *uint64 `param:"limit,query"`
|
|
}
|
|
|
|
type OrderList []OrderDetails
|
|
|
|
func (c *RestClient) NewGetTransactionHistoryRequest() *GetTransactionHistoryRequest {
|
|
return &GetTransactionHistoryRequest{
|
|
client: c,
|
|
instrumentType: InstrumentTypeSpot,
|
|
}
|
|
}
|