diff --git a/bybit_api_client.go b/bybit_api_client.go index b9cb64b..7702c99 100644 --- a/bybit_api_client.go +++ b/bybit_api_client.go @@ -248,3 +248,10 @@ func (c *Client) NewPositionService(params map[string]interface{}) *PositionClie } } + +func (c *Client) NewPreUpgradeService(params map[string]interface{}) *PreUpgradeClient { + return &PreUpgradeClient{ + c: c, + params: params, + } +} diff --git a/examples/account/transaction_log.go b/examples/account/transaction_log.go new file mode 100644 index 0000000..e3f1dc5 --- /dev/null +++ b/examples/account/transaction_log.go @@ -0,0 +1,22 @@ +package main + +import ( + "context" + "fmt" + bybit "github.com/wuhewuhe/bybit.go.api" +) + +func main() { + PlaceTrade() +} + +func PlaceTrade() { + client := bybit.NewBybitHttpClient("8wYkmpLsMg10eNQyPm", "Ouxc34myDnXvei54XsBZgoQzfGxO4bkr2Zsj", bybit.WithBaseURL(bybit.TESTNET)) + params := map[string]interface{}{"category": "linear", "settleCoin": "USDT", "limit": 10} + orderResult, err := client.NewPositionService(params).GetPositionList(context.Background()) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(bybit.PrettyPrint(orderResult)) +} diff --git a/examples/pre_uprgade/order_history.go b/examples/pre_uprgade/order_history.go new file mode 100644 index 0000000..1903598 --- /dev/null +++ b/examples/pre_uprgade/order_history.go @@ -0,0 +1,22 @@ +package main + +import ( + "context" + "fmt" + bybit "github.com/wuhewuhe/bybit.go.api" +) + +func main() { + PlaceTrade() +} + +func PlaceTrade() { + client := bybit.NewBybitHttpClient("8wYkmpLsMg10eNQyPm", "Ouxc34myDnXvei54XsBZgoQzfGxO4bkr2Zsj", bybit.WithBaseURL(bybit.TESTNET)) + params := map[string]interface{}{"category": "linear", "settleCoin": "USDT", "limit": 10} + orderResult, err := client.NewPreUpgradeService(params).GetPreUpgradeOrderHistory(context.Background()) + if err != nil { + fmt.Println(err) + return + } + fmt.Println(bybit.PrettyPrint(orderResult)) +} diff --git a/models/accountResponse.go b/models/accountResponse.go new file mode 100644 index 0000000..03c3533 --- /dev/null +++ b/models/accountResponse.go @@ -0,0 +1,28 @@ +package models + +type TransactionLogInfo struct { + List []TransactionLogEntry `json:"list"` + NextPageCursor string `json:"nextPageCursor"` +} + +type TransactionLogEntry struct { + Symbol string `json:"symbol"` + Category string `json:"category"` + Side string `json:"side"` + TransactionTime string `json:"transactionTime"` + Type string `json:"type"` + Qty string `json:"qty"` + Size string `json:"size"` + Currency string `json:"currency"` + TradePrice string `json:"tradePrice"` + Funding string `json:"funding"` + Fee string `json:"fee"` + CashFlow string `json:"cashFlow"` + Change string `json:"change"` + CashBalance string `json:"cashBalance"` + FeeRate string `json:"feeRate"` + BonusChange string `json:"bonusChange"` + TradeID string `json:"tradeId"` + OrderID string `json:"orderId"` + OrderLinkId string `json:"orderLinkId"` +} diff --git a/models/assetResponse.go b/models/assetResponse.go new file mode 100644 index 0000000..a620b0a --- /dev/null +++ b/models/assetResponse.go @@ -0,0 +1,34 @@ +package models + +type DeliveryRecordInfo struct { + Category string `json:"category"` + List []DeliveryRecordEntry `json:"list"` + NextPageCursor string `json:"nextPageCursor"` +} + +type DeliveryRecordEntry struct { + DeliveryTime int64 `json:"deliveryTime"` + Symbol string `json:"symbol"` + Side string `json:"side"` + Position string `json:"position"` + DeliveryPrice string `json:"deliveryPrice"` + Strike string `json:"strike"` + Fee string `json:"fee"` + DeliveryPnl string `json:"deliveryRpl"` +} + +type USDCSettlementInfo struct { + Category string `json:"category"` + List []SettlementEntry `json:"list"` + NextPageCursor string `json:"nextPageCursor"` +} + +type SettlementEntry struct { + Symbol string `json:"symbol"` + Side string `json:"side"` + Size string `json:"size"` + SessionAvgPrice string `json:"sessionAvgPrice"` + MarkPrice string `json:"markPrice"` + RealisedPnl string `json:"realisedPnl"` + CreatedTime string `json:"createdTime"` +} diff --git a/pre_upgrade.go b/pre_upgrade.go new file mode 100644 index 0000000..eb48829 --- /dev/null +++ b/pre_upgrade.go @@ -0,0 +1,145 @@ +package bybit_connector + +import ( + "context" + "encoding/json" + "github.com/wuhewuhe/bybit.go.api/handlers" + "net/http" +) + +type PreUpgradeClient struct { + c *Client + params map[string]interface{} +} + +func (s *PreUpgradeClient) GetPreUpgradeOrderHistory(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/order/history", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +} + +func (s *PreUpgradeClient) GetPreUpgradeExecutionList(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/execution/list", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +} + +func (s *PreUpgradeClient) GetPreUpgradeClosedPnl(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/position/closed-pnl", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +} + +func (s *PreUpgradeClient) GetPreUpgradeTransactionLog(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/account/transaction-log", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +} + +func (s *PreUpgradeClient) GetPreUpgradeOptionDeliveryRecord(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/asset/delivery-record", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +} + +func (s *PreUpgradeClient) GetPreUpgradeUsdcSettlement(ctx context.Context, opts ...RequestOption) (res *ServerResponse, err error) { + if err = handlers.ValidateParams(s.params); err != nil { + return nil, err + } + r := &request{ + method: http.MethodGet, + endpoint: "/v5/pre-upgrade/asset/settlement-record", + secType: secTypeSigned, + } + r.setParams(s.params) + data, err := s.c.callAPI(ctx, r, opts...) + if err != nil { + return nil, err + } + res = new(ServerResponse) + err = json.Unmarshal(data, res) + if err != nil { + return nil, err + } + return res, nil +}