mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-26 00:35:15 +00:00
use new bbgo position for calculating profits
This commit is contained in:
parent
f44d85d704
commit
569bbfea54
|
@ -36,6 +36,7 @@ func (s *Strategy) ID() string {
|
|||
|
||||
type State struct {
|
||||
HedgePosition fixedpoint.Value `json:"hedgePosition"`
|
||||
Position *bbgo.Position `json:"position,omitempty"`
|
||||
}
|
||||
|
||||
type Strategy struct {
|
||||
|
@ -342,8 +343,13 @@ func (s *Strategy) handleTradeUpdate(trade types.Trade) {
|
|||
|
||||
}
|
||||
|
||||
log.Infof("identified trade %d with an existing order: %d", trade.ID, trade.OrderID)
|
||||
s.Notify("identified %s trade %d with an existing order: %d", trade.Symbol, trade.ID, trade.OrderID)
|
||||
s.Notify("Identified %s trade %d with an existing order: %d", trade.Symbol, trade.ID, trade.OrderID)
|
||||
|
||||
if profit, madeProfit := s.state.Position.AddTrade(trade) ; madeProfit {
|
||||
s.Notify("%s trade just made profit %f %s", profit, s.state.Position.QuoteCurrency)
|
||||
} else {
|
||||
s.Notify("%s trade modified the position average cost to %f %s", s.state.Position.AverageCost.Float64(), s.state.Position.QuoteCurrency)
|
||||
}
|
||||
|
||||
s.state.HedgePosition.AtomicAdd(q)
|
||||
|
||||
|
@ -351,7 +357,6 @@ func (s *Strategy) handleTradeUpdate(trade types.Trade) {
|
|||
|
||||
log.Warnf("%s position changed: %f", s.Symbol, pos.Float64())
|
||||
s.Notifiability.Notify("%s position is changed to %f", s.Symbol, pos.Float64())
|
||||
|
||||
s.lastPrice = trade.Price
|
||||
}
|
||||
|
||||
|
@ -436,6 +441,15 @@ func (s *Strategy) CrossRun(ctx context.Context, _ bbgo.OrderExecutionRouter, se
|
|||
s.Notify("position is restored => %f", s.state.HedgePosition.Float64())
|
||||
}
|
||||
|
||||
// if position is nil, we need to allocate a new position for calculation
|
||||
if s.state.Position == nil {
|
||||
s.state.Position = &bbgo.Position{
|
||||
Symbol: s.Symbol,
|
||||
BaseCurrency: s.makerMarket.BaseCurrency,
|
||||
QuoteCurrency: s.makerMarket.QuoteCurrency,
|
||||
}
|
||||
}
|
||||
|
||||
s.book = types.NewStreamBook(s.Symbol)
|
||||
s.book.BindStream(s.sourceSession.Stream)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user