mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-22 06:53:52 +00:00
rollback to go1.17 and make try lock backward compatible
This commit is contained in:
parent
51e63fb563
commit
343434685b
|
@ -1,5 +1,5 @@
|
||||||
# First stage container
|
# First stage container
|
||||||
FROM golang:1.18.2-alpine3.15 AS builder
|
FROM golang:1.17.6-alpine3.15 AS builder
|
||||||
RUN apk add --no-cache git ca-certificates gcc libc-dev pkgconfig
|
RUN apk add --no-cache git ca-certificates gcc libc-dev pkgconfig
|
||||||
# gcc is for github.com/mattn/go-sqlite3
|
# gcc is for github.com/mattn/go-sqlite3
|
||||||
# ADD . $GOPATH/src/github.com/c9s/bbgo
|
# ADD . $GOPATH/src/github.com/c9s/bbgo
|
||||||
|
|
|
@ -796,7 +796,7 @@ func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, se
|
||||||
bottomBack := s.bottomPrice
|
bottomBack := s.bottomPrice
|
||||||
spBack := s.sellPrice
|
spBack := s.sellPrice
|
||||||
if !quoteBalance.IsZero() && !s.sellPrice.IsZero() && !s.DisableShortStop {
|
if !quoteBalance.IsZero() && !s.sellPrice.IsZero() && !s.DisableShortStop {
|
||||||
//longSignal := types.CrossOver(s.ewo, s.ewoSignal)
|
// longSignal := types.CrossOver(s.ewo, s.ewoSignal)
|
||||||
// TP
|
// TP
|
||||||
/*if lastPrice.Compare(s.sellPrice) < 0 && (s.ccis.BuySignal() || longSignal.Last()) {
|
/*if lastPrice.Compare(s.sellPrice) < 0 && (s.ccis.BuySignal() || longSignal.Last()) {
|
||||||
buyall = true
|
buyall = true
|
||||||
|
@ -910,7 +910,9 @@ func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, se
|
||||||
bestBid := ticker.Buy
|
bestBid := ticker.Buy
|
||||||
bestAsk := ticker.Sell
|
bestAsk := ticker.Sell
|
||||||
var midPrice fixedpoint.Value
|
var midPrice fixedpoint.Value
|
||||||
if s.lock.TryLock() {
|
|
||||||
|
// TODO: for go1.18 we can use TryLock, use build flag to support this
|
||||||
|
if tryLock(&s.lock) {
|
||||||
if !bestAsk.IsZero() && !bestBid.IsZero() {
|
if !bestAsk.IsZero() && !bestBid.IsZero() {
|
||||||
s.midPrice = bestAsk.Add(bestBid).Div(types.Two)
|
s.midPrice = bestAsk.Add(bestBid).Div(types.Two)
|
||||||
} else if !bestAsk.IsZero() {
|
} else if !bestAsk.IsZero() {
|
||||||
|
@ -921,10 +923,11 @@ func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, se
|
||||||
midPrice = s.midPrice
|
midPrice = s.midPrice
|
||||||
s.lock.Unlock()
|
s.lock.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
if !midPrice.IsZero() {
|
if !midPrice.IsZero() {
|
||||||
buyOrderTPSL(midPrice)
|
buyOrderTPSL(midPrice)
|
||||||
sellOrderTPSL(midPrice)
|
sellOrderTPSL(midPrice)
|
||||||
//log.Debugf("best bid %v, best ask %v, mid %v", bestBid, bestAsk, midPrice)
|
// log.Debugf("best bid %v, best ask %v, mid %v", bestBid, bestAsk, midPrice)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -974,8 +977,8 @@ func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, se
|
||||||
s.CancelAll(ctx)
|
s.CancelAll(ctx)
|
||||||
|
|
||||||
// To get the threshold for ewo
|
// To get the threshold for ewo
|
||||||
//mean := types.Mean(s.ewo, 10)
|
// mean := types.Mean(s.ewo, 10)
|
||||||
//std := types.Stdev(s.ewo, 10)
|
// std := types.Stdev(s.ewo, 10)
|
||||||
|
|
||||||
longSignal := types.CrossOver(s.ewo, s.ewoSignal)
|
longSignal := types.CrossOver(s.ewo, s.ewoSignal)
|
||||||
shortSignal := types.CrossUnder(s.ewo, s.ewoSignal)
|
shortSignal := types.CrossUnder(s.ewo, s.ewoSignal)
|
||||||
|
@ -991,9 +994,9 @@ func (s *Strategy) Run(ctx context.Context, orderExecutor bbgo.OrderExecutor, se
|
||||||
breakDown = kline.Close.Float64() < s.ma5.Last()
|
breakDown = kline.Close.Float64() < s.ma5.Last()
|
||||||
}
|
}
|
||||||
// kline breakthrough ma5, ma50 trend up, and ewo > threshold
|
// kline breakthrough ma5, ma50 trend up, and ewo > threshold
|
||||||
IsBull := bull && breakThrough && s.ccis.BuySignal() //&& s.ewo.Last() > mean + 2 * std
|
IsBull := bull && breakThrough && s.ccis.BuySignal() // && s.ewo.Last() > mean + 2 * std
|
||||||
// kline downthrough ma5, ma50 trend down, and ewo < threshold
|
// kline downthrough ma5, ma50 trend down, and ewo < threshold
|
||||||
IsBear := !bull && breakDown && s.ccis.SellSignal() //.ewo.Last() < mean - 2 * std
|
IsBear := !bull && breakDown && s.ccis.SellSignal() // .ewo.Last() < mean - 2 * std
|
||||||
|
|
||||||
if !s.Environment.IsBackTesting() {
|
if !s.Environment.IsBackTesting() {
|
||||||
log.Infof("IsBull: %v, bull: %v, longSignal[1]: %v, shortSignal: %v",
|
log.Infof("IsBull: %v, bull: %v, longSignal[1]: %v, shortSignal: %v",
|
||||||
|
|
11
pkg/strategy/ewoDgtrd/trylock.go
Normal file
11
pkg/strategy/ewoDgtrd/trylock.go
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
//go:build !go1.18
|
||||||
|
// +build !go1.18
|
||||||
|
|
||||||
|
package ewoDgtrd
|
||||||
|
|
||||||
|
import "sync"
|
||||||
|
|
||||||
|
func tryLock(lock *sync.RWMutex) bool {
|
||||||
|
lock.Lock()
|
||||||
|
return true
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user