mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-23 23:35:14 +00:00
all: add more spreadsheet methods
This commit is contained in:
parent
3ed5f00bcc
commit
2de107c275
1
go.sum
1
go.sum
|
@ -663,7 +663,6 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
|
||||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
|
||||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
|
||||||
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
@ -19,7 +20,8 @@ type SpreadSheetService struct {
|
||||||
SpreadsheetID string
|
SpreadsheetID string
|
||||||
TokenFile string
|
TokenFile string
|
||||||
|
|
||||||
service *sheets.Service
|
service *sheets.Service
|
||||||
|
spreadsheet *sheets.Spreadsheet
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSpreadSheetService(ctx context.Context, tokenFile string, spreadsheetID string) *SpreadSheetService {
|
func NewSpreadSheetService(ctx context.Context, tokenFile string, spreadsheetID string) *SpreadSheetService {
|
||||||
|
@ -41,6 +43,57 @@ func NewSpreadSheetService(ctx context.Context, tokenFile string, spreadsheetID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *SpreadSheetService) Load() error {
|
||||||
|
spreadsheet, err := s.service.Spreadsheets.Get(s.SpreadsheetID).Do()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
s.spreadsheet = spreadsheet
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SpreadSheetService) Get(forceReload bool) (*sheets.Spreadsheet, error) {
|
||||||
|
if s.spreadsheet == nil || forceReload {
|
||||||
|
if err := s.Load(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.spreadsheet, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SpreadSheetService) NewSheet(title string) (*sheets.Sheet, error) {
|
||||||
|
resp, err := AddNewSheet(s.service, s.SpreadsheetID, title)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
DebugBatchUpdateSpreadsheetResponse(resp)
|
||||||
|
|
||||||
|
_, err = s.Get(true)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.LookupSheet(title)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *SpreadSheetService) LookupSheet(title string) (*sheets.Sheet, error) {
|
||||||
|
spreadsheet, err := s.Get(false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, sheet := range spreadsheet.Sheets {
|
||||||
|
if strings.EqualFold(title, sheet.Properties.Title) {
|
||||||
|
return sheet, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
func ReadSheetValuesRange(srv *sheets.Service, spreadsheetId, readRange string) (*sheets.ValueRange, error) {
|
func ReadSheetValuesRange(srv *sheets.Service, spreadsheetId, readRange string) (*sheets.ValueRange, error) {
|
||||||
log.Infof("ReadSheetValuesRange: %s", readRange)
|
log.Infof("ReadSheetValuesRange: %s", readRange)
|
||||||
resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
|
resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
|
||||||
|
|
|
@ -36,6 +36,12 @@ type Strategy struct {
|
||||||
RiskController
|
RiskController
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: use this to replace the parameters
|
||||||
|
type StrategyInstance interface {
|
||||||
|
ID() string
|
||||||
|
InstanceID() string
|
||||||
|
}
|
||||||
|
|
||||||
func NewStrategy(ctx context.Context, environ *bbgo.Environment, session *bbgo.ExchangeSession, market types.Market, strategyID, instanceID string) *Strategy {
|
func NewStrategy(ctx context.Context, environ *bbgo.Environment, session *bbgo.ExchangeSession, market types.Market, strategyID, instanceID string) *Strategy {
|
||||||
s := &Strategy{
|
s := &Strategy{
|
||||||
Environ: environ,
|
Environ: environ,
|
||||||
|
@ -81,6 +87,10 @@ func (s *Strategy) Initialize(ctx context.Context, environ *bbgo.Environment, se
|
||||||
// bbgo.Sync(ctx, s)
|
// bbgo.Sync(ctx, s)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if environ.GoogleSpreadSheetService != nil {
|
||||||
|
// allocate a google spread sheet for this strategy
|
||||||
|
}
|
||||||
|
|
||||||
if !s.PositionHardLimit.IsZero() && !s.MaxPositionQuantity.IsZero() {
|
if !s.PositionHardLimit.IsZero() && !s.MaxPositionQuantity.IsZero() {
|
||||||
log.Infof("positionHardLimit and maxPositionQuantity are configured, setting up PositionRiskControl...")
|
log.Infof("positionHardLimit and maxPositionQuantity are configured, setting up PositionRiskControl...")
|
||||||
s.positionRiskControl = riskcontrol.NewPositionRiskControl(s.OrderExecutor, s.PositionHardLimit, s.MaxPositionQuantity)
|
s.positionRiskControl = riskcontrol.NewPositionRiskControl(s.OrderExecutor, s.PositionHardLimit, s.MaxPositionQuantity)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user