order: slight optimizations (#917)

* order: slight optimizations

* orders: add benchmarks, small optimize and change order side to uin8 for comparitive optimizations.

* orders: continue to convert string type -> uint

* orders/backtester: interim move type to orders package, later can expand or deprecate.

* orders: handle errors

* orders: optimize filters and remove error returns when its clearly not needed

* orders: remove log call

* backtester: zero value check

* orders/futures: zero value -> flag

* linter: fix

* linter: more fixes

* linters: rides again

* glorious: nits

* common: Add zero value unix check for time values; also addresses glorious nits

* glorious scott: nits

Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
This commit is contained in:
Ryan O'Hara-Reid
2022-05-06 12:27:21 +10:00
committed by GitHub
parent d735effc8e
commit cdcc9630de
60 changed files with 1375 additions and 802 deletions

View File

@@ -6,7 +6,6 @@ import (
"net/url"
"sort"
"strconv"
"strings"
"sync"
"time"
@@ -551,13 +550,18 @@ func (i *ItBit) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest
orders := make([]order.Detail, 0, len(allOrders))
for j := range allOrders {
var symbol currency.Pair
symbol, err := currency.NewPairDelimiter(allOrders[j].Instrument,
symbol, err = currency.NewPairDelimiter(allOrders[j].Instrument,
format.Delimiter)
if err != nil {
return nil, err
}
side := order.Side(strings.ToUpper(allOrders[j].Side))
orderDate, err := time.Parse(time.RFC3339, allOrders[j].CreatedTime)
var side order.Side
side, err = order.StringToOrderSide(allOrders[j].Side)
if err != nil {
log.Errorf(log.ExchangeSys, "%s %v", i.Name, err)
}
var orderDate time.Time
orderDate, err = time.Parse(time.RFC3339, allOrders[j].CreatedTime)
if err != nil {
log.Errorf(log.ExchangeSys,
"Exchange %v Func %v Order %v Could not parse date to unix with value of %v",
@@ -579,9 +583,12 @@ func (i *ItBit) GetActiveOrders(ctx context.Context, req *order.GetOrdersRequest
})
}
order.FilterOrdersByTimeRange(&orders, req.StartTime, req.EndTime)
err = order.FilterOrdersByTimeRange(&orders, req.StartTime, req.EndTime)
if err != nil {
log.Errorf(log.ExchangeSys, "%s %v", i.Name, err)
}
order.FilterOrdersBySide(&orders, req.Side)
order.FilterOrdersByCurrencies(&orders, req.Pairs)
order.FilterOrdersByPairs(&orders, req.Pairs)
return orders, nil
}
@@ -623,13 +630,18 @@ func (i *ItBit) GetOrderHistory(ctx context.Context, req *order.GetOrdersRequest
if err != nil {
return nil, err
}
side := order.Side(strings.ToUpper(allOrders[j].Side))
status, err := order.StringToOrderStatus(allOrders[j].Status)
var side order.Side
side, err = order.StringToOrderSide(allOrders[j].Side)
if err != nil {
log.Errorf(log.ExchangeSys, "%s %v", i.Name, err)
}
orderDate, err := time.Parse(time.RFC3339, allOrders[j].CreatedTime)
var status order.Status
status, err = order.StringToOrderStatus(allOrders[j].Status)
if err != nil {
log.Errorf(log.ExchangeSys, "%s %v", i.Name, err)
}
var orderDate time.Time
orderDate, err = time.Parse(time.RFC3339, allOrders[j].CreatedTime)
if err != nil {
log.Errorf(log.ExchangeSys,
"Exchange %v Func %v Order %v Could not parse date to unix with value of %v",
@@ -656,9 +668,12 @@ func (i *ItBit) GetOrderHistory(ctx context.Context, req *order.GetOrdersRequest
orders = append(orders, detail)
}
order.FilterOrdersByTimeRange(&orders, req.StartTime, req.EndTime)
err = order.FilterOrdersByTimeRange(&orders, req.StartTime, req.EndTime)
if err != nil {
log.Errorf(log.ExchangeSys, "%s %v", i.Name, err)
}
order.FilterOrdersBySide(&orders, req.Side)
order.FilterOrdersByCurrencies(&orders, req.Pairs)
order.FilterOrdersByPairs(&orders, req.Pairs)
return orders, nil
}