bbgo/pkg/exchange/okex/okexapi/get_transaction_history_request.go

87 lines
3.2 KiB
Go
Raw Normal View History

package okexapi
import (
"time"
"github.com/c9s/requestgen"
"git.qtrade.icu/lychiyu/bbgo/pkg/fixedpoint"
"git.qtrade.icu/lychiyu/bbgo/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,
}
}