fix: inequality on quantites of balances and submitted orders in backtest

This commit is contained in:
zenix 2022-08-17 19:19:13 +09:00
parent 2720ee90b1
commit f7398f163a
2 changed files with 5 additions and 3 deletions

View File

@ -148,11 +148,13 @@ func (m *SimplePriceMatching) PlaceOrder(o types.SubmitOrder) (*types.Order, *ty
price = o.Price
}
o.Quantity = m.Market.TruncateQuantity(o.Quantity)
if o.Quantity.Compare(m.Market.MinQuantity) < 0 {
return nil, nil, fmt.Errorf("order quantity %s is less than minQuantity %s, order: %+v", o.Quantity.String(), m.Market.MinQuantity.String(), o)
}
quoteQuantity := o.Quantity.Mul(price)
quoteQuantity := m.Market.TruncateQuantity(o.Quantity.Mul(price))
if quoteQuantity.Compare(m.Market.MinNotional) < 0 {
return nil, nil, fmt.Errorf("order amount %s is less than minNotional %s, order: %+v", quoteQuantity.String(), m.Market.MinNotional.String(), o)
}
@ -297,7 +299,7 @@ func (m *SimplePriceMatching) newTradeFromOrder(order *types.Order, isMaker bool
// BINANCE uses 0.1% for both maker and taker
// MAX uses 0.050% for maker and 0.15% for taker
var feeRate = m.getFeeRate(isMaker)
var quoteQuantity = order.Quantity.Mul(price)
var quoteQuantity = m.Market.TruncateQuantity(order.Quantity.Mul(price))
var fee fixedpoint.Value
var feeCurrency string

View File

@ -156,7 +156,7 @@ func (a *Account) UseLockedBalance(currency string, fund fixedpoint.Value) error
return nil
}
return fmt.Errorf("trying to use more than locked: locked %v < want to use %v", balance.Locked, fund)
return fmt.Errorf("trying to use more than locked: locked %v < want to use %v diff %v", balance.Locked, fund, balance.Locked.Sub(fund))
}
var QuantityDelta = fixedpoint.MustNewFromString("0.00000000001")