mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-10 09:11:55 +00:00
indicator: clean up bollinger band indicator api usage
This commit is contained in:
parent
a5715c6aee
commit
2ef8ecf3d9
|
@ -53,7 +53,7 @@ func (inc *BOLL) GetSMA() types.SeriesExtend {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (inc *BOLL) GetStdDev() types.SeriesExtend {
|
func (inc *BOLL) GetStdDev() types.SeriesExtend {
|
||||||
return types.NewSeries(inc.StdDev)
|
return inc.StdDev
|
||||||
}
|
}
|
||||||
|
|
||||||
func (inc *BOLL) LastUpBand() float64 {
|
func (inc *BOLL) LastUpBand() float64 {
|
||||||
|
|
|
@ -4,9 +4,10 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
"github.com/c9s/bbgo/pkg/fixedpoint"
|
"github.com/c9s/bbgo/pkg/fixedpoint"
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -60,8 +61,8 @@ func TestBOLL(t *testing.T) {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
boll := BOLL{IntervalWindow: types.IntervalWindow{Window: tt.window}, K: tt.k}
|
boll := BOLL{IntervalWindow: types.IntervalWindow{Window: tt.window}, K: tt.k}
|
||||||
boll.CalculateAndUpdate(tt.kLines)
|
boll.CalculateAndUpdate(tt.kLines)
|
||||||
assert.InDelta(t, tt.up, boll.LastUpBand(), Delta)
|
assert.InDelta(t, tt.up, boll.UpBand.Last(), Delta)
|
||||||
assert.InDelta(t, tt.down, boll.LastDownBand(), Delta)
|
assert.InDelta(t, tt.down, boll.DownBand.Last(), Delta)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -278,8 +278,8 @@ func (s *Strategy) placeOrders(ctx context.Context, midPrice fixedpoint.Value, k
|
||||||
baseBalance, hasBaseBalance := balances[s.Market.BaseCurrency]
|
baseBalance, hasBaseBalance := balances[s.Market.BaseCurrency]
|
||||||
quoteBalance, hasQuoteBalance := balances[s.Market.QuoteCurrency]
|
quoteBalance, hasQuoteBalance := balances[s.Market.QuoteCurrency]
|
||||||
|
|
||||||
downBand := s.defaultBoll.LastDownBand()
|
downBand := s.defaultBoll.DownBand.Last()
|
||||||
upBand := s.defaultBoll.LastUpBand()
|
upBand := s.defaultBoll.UpBand.Last()
|
||||||
sma := s.defaultBoll.SMA.Last()
|
sma := s.defaultBoll.SMA.Last()
|
||||||
log.Infof("%s bollinger band: up %f sma %f down %f", s.Symbol, upBand, sma, downBand)
|
log.Infof("%s bollinger band: up %f sma %f down %f", s.Symbol, upBand, sma, downBand)
|
||||||
|
|
||||||
|
@ -349,7 +349,7 @@ func (s *Strategy) placeOrders(ctx context.Context, midPrice fixedpoint.Value, k
|
||||||
// WHEN: price breaks the upper band (price > window 2) == strongUpTrend
|
// WHEN: price breaks the upper band (price > window 2) == strongUpTrend
|
||||||
// THEN: we apply strongUpTrend skew
|
// THEN: we apply strongUpTrend skew
|
||||||
if s.TradeInBand {
|
if s.TradeInBand {
|
||||||
if !inBetween(midPrice.Float64(), s.neutralBoll.LastDownBand(), s.neutralBoll.LastUpBand()) {
|
if !inBetween(midPrice.Float64(), s.neutralBoll.DownBand.Last(), s.neutralBoll.UpBand.Last()) {
|
||||||
log.Infof("tradeInBand is set, skip placing orders when the price is outside of the band")
|
log.Infof("tradeInBand is set, skip placing orders when the price is outside of the band")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func detectPriceTrend(inc *indicator.BOLL, price float64) PriceTrend {
|
func detectPriceTrend(inc *indicator.BOLL, price float64) PriceTrend {
|
||||||
if inBetween(price, inc.LastDownBand(), inc.LastUpBand()) {
|
if inBetween(price, inc.DownBand.Last(), inc.UpBand.Last()) {
|
||||||
return NeutralTrend
|
return NeutralTrend
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -336,8 +336,8 @@ func (s *Strategy) placeOrders(ctx context.Context, midPrice fixedpoint.Value, k
|
||||||
// baseBalance, hasBaseBalance := balances[s.Market.BaseCurrency]
|
// baseBalance, hasBaseBalance := balances[s.Market.BaseCurrency]
|
||||||
// quoteBalance, hasQuoteBalance := balances[s.Market.QuoteCurrency]
|
// quoteBalance, hasQuoteBalance := balances[s.Market.QuoteCurrency]
|
||||||
|
|
||||||
downBand := s.defaultBoll.LastDownBand()
|
downBand := s.defaultBoll.DownBand.Last()
|
||||||
upBand := s.defaultBoll.LastUpBand()
|
upBand := s.defaultBoll.UpBand.Last()
|
||||||
sma := s.defaultBoll.SMA.Last()
|
sma := s.defaultBoll.SMA.Last()
|
||||||
log.Infof("bollinger band: up %f sma %f down %f", upBand, sma, downBand)
|
log.Infof("bollinger band: up %f sma %f down %f", upBand, sma, downBand)
|
||||||
|
|
||||||
|
|
|
@ -305,8 +305,8 @@ func (s *Strategy) updateQuote(ctx context.Context, orderExecutionRouter bbgo.Or
|
||||||
var pips = s.Pips
|
var pips = s.Pips
|
||||||
|
|
||||||
if s.EnableBollBandMargin {
|
if s.EnableBollBandMargin {
|
||||||
lastDownBand := fixedpoint.NewFromFloat(s.boll.LastDownBand())
|
lastDownBand := fixedpoint.NewFromFloat(s.boll.DownBand.Last())
|
||||||
lastUpBand := fixedpoint.NewFromFloat(s.boll.LastUpBand())
|
lastUpBand := fixedpoint.NewFromFloat(s.boll.UpBand.Last())
|
||||||
|
|
||||||
if lastUpBand.IsZero() || lastDownBand.IsZero() {
|
if lastUpBand.IsZero() || lastDownBand.IsZero() {
|
||||||
log.Warnf("bollinger band value is zero, skipping")
|
log.Warnf("bollinger band value is zero, skipping")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user