mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-26 00:35:15 +00:00
improve trade parsing error
This commit is contained in:
parent
d226ec2e01
commit
4cf5929cac
|
@ -6,6 +6,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/adshao/go-binance"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/c9s/bbgo/pkg/types"
|
||||
"github.com/c9s/bbgo/pkg/util"
|
||||
|
@ -29,7 +30,7 @@ func toLocalOrderType(orderType types.OrderType) (binance.OrderType, error) {
|
|||
return "", fmt.Errorf("order type %s not supported", orderType)
|
||||
}
|
||||
|
||||
func toGlobalOrder(binanceOrder *binance.Order) (*types.Order, error) {
|
||||
func ToGlobalOrder(binanceOrder *binance.Order) (*types.Order, error) {
|
||||
return &types.Order{
|
||||
SubmitOrder: types.SubmitOrder{
|
||||
ClientOrderID: binanceOrder.ClientOrderID,
|
||||
|
@ -54,7 +55,7 @@ func millisecondTime(t int64) time.Time {
|
|||
return time.Unix(0, t*int64(time.Millisecond))
|
||||
}
|
||||
|
||||
func toGlobalTrade(t binance.TradeV3) (*types.Trade, error) {
|
||||
func ToGlobalTrade(t binance.TradeV3) (*types.Trade, error) {
|
||||
// skip trade ID that is the same. however this should not happen
|
||||
var side types.SideType
|
||||
if t.IsBuyer {
|
||||
|
@ -65,22 +66,25 @@ func toGlobalTrade(t binance.TradeV3) (*types.Trade, error) {
|
|||
|
||||
price, err := strconv.ParseFloat(t.Price, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrapf(err, "price parse error, price: %+v", t.Price)
|
||||
}
|
||||
|
||||
quantity, err := strconv.ParseFloat(t.Quantity, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrapf(err, "quantity parse error, quantity: %+v", t.Quantity)
|
||||
}
|
||||
|
||||
quoteQuantity, err := strconv.ParseFloat(t.QuoteQuantity, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
var quoteQuantity = 0.0
|
||||
if len(t.QuoteQuantity) > 0 {
|
||||
quoteQuantity, err = strconv.ParseFloat(t.QuoteQuantity, 64)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "quote quantity parse error, quoteQuantity: %+v", t.QuoteQuantity)
|
||||
}
|
||||
}
|
||||
|
||||
fee, err := strconv.ParseFloat(t.Commission, 64)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.Wrapf(err, "commission parse error, commission: %+v", t.Commission)
|
||||
}
|
||||
|
||||
return &types.Trade{
|
||||
|
@ -155,3 +159,17 @@ func toGlobalOrderStatus(orderStatus binance.OrderStatusType) types.OrderStatus
|
|||
|
||||
return types.OrderStatus(orderStatus)
|
||||
}
|
||||
|
||||
// ConvertTrades converts the binance v3 trade into the global trade type
|
||||
func ConvertTrades(remoteTrades []*binance.TradeV3) (trades []types.Trade, err error) {
|
||||
for _, t := range remoteTrades {
|
||||
trade, err := ToGlobalTrade(*t)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "binance v3 trade parse error, trade: %+v", *t)
|
||||
}
|
||||
|
||||
trades = append(trades, *trade)
|
||||
}
|
||||
|
||||
return trades, err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user