core/private/order.go

108 lines
3.8 KiB
Go
Raw Normal View History

2024-12-02 14:03:35 +08:00
package private
import (
2024-12-07 21:22:18 +08:00
"github.com/phyer/texus/utils"
2024-12-02 14:03:35 +08:00
)
type OrderResp struct {
Arg ArgResp `json:"arg"`
Data []*OrderDataResp `json:"data"`
}
type ArgResp struct {
Channel string `json:"channel"`
InstType string `json:"instType"`
InstId string `json:"instId"`
}
type OrderDataResp struct {
InstType string `json:"instType"`
InstId string `json:"instId"`
OrdId string `json:"ordId"`
ClOrdId string `json:"clOrdId"`
Tag string `json:"tag"`
Px string `json:"Px"`
Sz string `json:"sz"`
NotionalUsd string `json:"notionalUsd"`
OrdType string `json:"ordType"`
Side string `json:"side"`
PosSide string `json:"posSide"`
TdMode string `json:"tdMode"`
TgtCcy string `json:"tgtCcy"`
FillSz string `json:"fillSz"`
FillPx string `json:"fillPx"`
TradeId string `json:"tradeId"`
AccFillSz string `json:"accFillSz"`
FillNotionalUsd string `json:"FillNotionalUsd"`
FillTime string `json:"fillTime"`
FillFee string `json:"fillFee"`
FillFeeCcy string `json:"fillFeeCcy"`
ExecType string `json:"execType"`
Source string `json:"source"`
State string `json:"state"`
AvgPx string `json:"avgPx"`
Lever string `json:"lever"`
TpTriggerPxstring string `json:"tpTriggerPxstring"`
TpTriggerPxType string `json:"tpTriggerPxType"`
TpOrdPx string `json:"tpOrdPx"`
SlTriggerPx string `json:"slTriggerPx"`
SlTriggerPxType string `json:"slTriggerPxType"`
SlOrdPx string `json:"slOrdPx"`
FeeCcy string `json:"feeCcy"`
Fee string `json:"fee"`
RebateCcy string `json:"rebateCcy"`
Rebate string `json:"rebate"`
TgtCcystring string `json:"tgtCcystring"`
Pnl string `json:"pnl"`
Category string `json:"category"`
UTime string `json:"uTime"`
CTime string `json:"cTime"`
ReqId string `json:"reqId"`
AmendResult string `json:"amendResult"`
Code string `json:"code"`
Msg string `json:"msg"`
}
type Order struct {
CTime int64 `json:"cTime,number"` // 订单创建时间
UTime int64 `json:"uTime,number"` // 订单状态更新时间
InstId string `json:"instId"`
OrdId string `json:"ordId"`
ClOrdId string `json:"clOrdId"` // 自定义订单ID
Px float64 `json:"px,number"` // 委托价格
Side string `json:"side"` //交易方向 sell, buy
Sz float64 `json:"sz,number"` // 委托总量
AccFillSz float64 `json:"accFillSz,number"` //累计成交数量
AvgPx float64 `json:"avgPx,number"` //成交均价
State string `json:"state"` //订单状态
TgtCcy string `json:"tgtCcy"` // 限定了size的单位两个选项base_ccy: 交易货币 quote_ccy计价货币(美元)
// canceled撤单成功
// live等待成交
// partially_filled部分成交
// filled完全成交
}
func (orderResp *OrderResp) Convert() ([]*Order, error) {
orderList := []*Order{}
for _, v := range orderResp.Data {
// fmt.Println("v.Sz:", v.Sz, reflect.TypeOf(v.Sz).Name())
curOrder := Order{}
curOrder.CTime = utils.ToInt64(v.CTime)
curOrder.UTime = utils.ToInt64(v.UTime)
curOrder.InstId = v.InstId
curOrder.OrdId = v.OrdId
curOrder.ClOrdId = v.ClOrdId
curOrder.Side = v.Side
curOrder.Px = utils.ToFloat64(v.Px)
curOrder.Sz = utils.ToFloat64(v.Sz)
curOrder.AccFillSz = utils.ToFloat64(v.AccFillSz)
curOrder.AvgPx = utils.ToFloat64(v.AvgPx)
curOrder.State = v.State
orderList = append(orderList, &curOrder)
}
return orderList, nil
}
// func (order *Order) Process(cr *core.Core) error {
// return nil
// }