mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-27 17:25:16 +00:00
63 lines
2.0 KiB
Go
63 lines
2.0 KiB
Go
|
package bybit
|
||
|
|
||
|
import (
|
||
|
"math"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
|
||
|
"github.com/c9s/bbgo/pkg/exchange/bybit/bybitapi"
|
||
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||
|
"github.com/c9s/bbgo/pkg/types"
|
||
|
)
|
||
|
|
||
|
func TestToGlobalMarket(t *testing.T) {
|
||
|
inst := bybitapi.Instrument{
|
||
|
Symbol: "BTCUSDT",
|
||
|
BaseCoin: "BTC",
|
||
|
QuoteCoin: "USDT",
|
||
|
Innovation: "0",
|
||
|
Status: bybitapi.StatusTrading,
|
||
|
MarginTrading: "both",
|
||
|
LotSizeFilter: struct {
|
||
|
BasePrecision fixedpoint.Value `json:"basePrecision"`
|
||
|
QuotePrecision fixedpoint.Value `json:"quotePrecision"`
|
||
|
MinOrderQty fixedpoint.Value `json:"minOrderQty"`
|
||
|
MaxOrderQty fixedpoint.Value `json:"maxOrderQty"`
|
||
|
MinOrderAmt fixedpoint.Value `json:"minOrderAmt"`
|
||
|
MaxOrderAmt fixedpoint.Value `json:"maxOrderAmt"`
|
||
|
}{
|
||
|
BasePrecision: fixedpoint.NewFromFloat(0.000001),
|
||
|
QuotePrecision: fixedpoint.NewFromFloat(0.00000001),
|
||
|
MinOrderQty: fixedpoint.NewFromFloat(0.000048),
|
||
|
MaxOrderQty: fixedpoint.NewFromFloat(71.73956243),
|
||
|
MinOrderAmt: fixedpoint.NewFromInt(1),
|
||
|
MaxOrderAmt: fixedpoint.NewFromInt(2000000),
|
||
|
},
|
||
|
PriceFilter: struct {
|
||
|
TickSize fixedpoint.Value `json:"tickSize"`
|
||
|
}{
|
||
|
TickSize: fixedpoint.NewFromFloat(0.01),
|
||
|
},
|
||
|
}
|
||
|
|
||
|
exp := types.Market{
|
||
|
Symbol: inst.Symbol,
|
||
|
LocalSymbol: inst.Symbol,
|
||
|
PricePrecision: int(math.Log10(inst.LotSizeFilter.QuotePrecision.Float64())),
|
||
|
VolumePrecision: int(math.Log10(inst.LotSizeFilter.BasePrecision.Float64())),
|
||
|
QuoteCurrency: inst.QuoteCoin,
|
||
|
BaseCurrency: inst.BaseCoin,
|
||
|
MinNotional: inst.LotSizeFilter.MinOrderAmt,
|
||
|
MinAmount: inst.LotSizeFilter.MinOrderAmt,
|
||
|
MinQuantity: inst.LotSizeFilter.MinOrderQty,
|
||
|
MaxQuantity: inst.LotSizeFilter.MaxOrderQty,
|
||
|
StepSize: inst.LotSizeFilter.BasePrecision,
|
||
|
MinPrice: inst.LotSizeFilter.MinOrderAmt,
|
||
|
MaxPrice: inst.LotSizeFilter.MaxOrderAmt,
|
||
|
TickSize: inst.PriceFilter.TickSize,
|
||
|
}
|
||
|
|
||
|
assert.Equal(t, toGlobalMarket(inst), exp)
|
||
|
}
|