From 9e3383606ed8b2598cfdadac2109e65f10a29fca Mon Sep 17 00:00:00 2001 From: c9s Date: Thu, 16 Feb 2023 18:11:04 +0800 Subject: [PATCH] grid2: add quote quantity test case --- pkg/strategy/grid2/strategy_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/strategy/grid2/strategy_test.go b/pkg/strategy/grid2/strategy_test.go index 7782de10d..14882e9cc 100644 --- a/pkg/strategy/grid2/strategy_test.go +++ b/pkg/strategy/grid2/strategy_test.go @@ -304,6 +304,35 @@ func TestStrategy_calculateQuoteInvestmentQuantity(t *testing.T) { assert.Equal(t, number(1.17647058).String(), quantity.String()) }) + t.Run("quote quantity #3", func(t *testing.T) { + s := newTestStrategy() + lastPrice := number(22000.0) + quoteInvestment := number(100.0) + pins := []Pin{ + Pin(number(0.1)), + Pin(number(0.23)), + Pin(number(0.36)), + Pin(number(0.50)), + Pin(number(0.63)), + Pin(number(0.76)), + Pin(number(0.90)), + } + quantity, err := s.calculateQuoteInvestmentQuantity(quoteInvestment, lastPrice, pins) + assert.NoError(t, err) + assert.InDelta(t, 38.75968992, quantity.Float64(), 0.0001) + + var totalQuoteUsed = fixedpoint.Zero + for i, pin := range pins { + if i == len(pins)-1 { + continue + } + + price := fixedpoint.Value(pin) + totalQuoteUsed = totalQuoteUsed.Add(price.Mul(quantity)) + } + assert.LessOrEqualf(t, totalQuoteUsed, number(100.0), "total quote used: %f", totalQuoteUsed.Float64()) + }) + t.Run("profit spread", func(t *testing.T) { // quoteInvestment = (10,000 + 11,000 + 12,000 + 13,000 + 14,000 + 15,000) * q // q = quoteInvestment / (10,000 + 11,000 + 12,000 + 13,000 + 14,000 + 15,000)