add reportTrade method

This commit is contained in:
c9s 2020-06-16 16:47:15 +08:00
parent f4bf79d842
commit 88c7049a99
2 changed files with 24 additions and 2 deletions

View File

@ -2,7 +2,10 @@ package bbgo
import (
"encoding/json"
"errors"
"fmt"
"time"
"github.com/valyala/fastjson"
)
@ -62,7 +65,7 @@ type ExecutionReportEvent struct {
IsMaker bool `json:"m"`
CommissionAmount string `json:"n"`
CommissionAsset string `json:"N"`
CommissionAsset string `json:"N"`
CurrentExecutionType string `json:"x"`
CurrentOrderStatus string `json:"X"`
@ -79,6 +82,25 @@ type ExecutionReportEvent struct {
OrderCreationTime int `json:"O"`
}
func (e *ExecutionReportEvent) Trade() (*Trade, error) {
if e.CurrentExecutionType != "TRADE" {
return nil, errors.New("execution report is not a trade")
}
tt := time.Unix(0, e.TransactionTime/1000000)
return &Trade{
ID: e.TradeID,
Symbol: e.Symbol,
Price: MustParseFloat(e.LastExecutedPrice),
Volume: MustParseFloat(e.LastExecutedQuantity),
IsBuyer: e.Side == "BUY",
IsMaker: e.IsMaker,
Time: tt,
Fee: MustParseFloat(e.CommissionAmount),
FeeCurrency: e.CommissionAsset,
}, nil
}
/*
balanceUpdate

View File

@ -15,7 +15,7 @@ type Trade struct {
IsBuyer bool
IsMaker bool
Time time.Time
Symbol string
Fee float64
FeeCurrency string
}