Documentation ¶
Index ¶
- Constants
- type Grid
- func (g *Grid) Above(price fixedpoint.Value) bool
- func (g *Grid) Below(price fixedpoint.Value) bool
- func (g *Grid) BottomPin() Pin
- func (g *Grid) CalculateArithmeticPins()
- func (g *Grid) CalculateGeometricPins()
- func (g *Grid) ExtendLowerPrice(lower fixedpoint.Value) (newPins []Pin)
- func (g *Grid) ExtendUpperPrice(upper fixedpoint.Value) (newPins []Pin)
- func (g *Grid) FilterOrders(orders []types.Order) (ret []types.Order)
- func (g *Grid) HasPin(pin Pin) (ok bool)
- func (g *Grid) HasPrice(price fixedpoint.Value) bool
- func (g *Grid) Height() fixedpoint.Value
- func (g *Grid) NextHigherPin(price fixedpoint.Value) (Pin, bool)
- func (g *Grid) NextLowerPin(price fixedpoint.Value) (Pin, bool)
- func (g *Grid) OutOfRange(price fixedpoint.Value) bool
- func (g *Grid) SearchPin(price fixedpoint.Value) int
- func (g *Grid) String() string
- func (g *Grid) TopPin() Pin
- type GridProfit
- type GridProfitStats
- type OrderExecutor
- type Pin
- type PinCalculator
- type PinOrderMap
- type PrettyPins
- type PriceMap
- type ProfitFixer
- type Strategy
- func (s *Strategy) CleanUp(ctx context.Context) error
- func (s *Strategy) CloseGrid(ctx context.Context) error
- func (s *Strategy) Defaults() error
- func (s *Strategy) EmitGridClosed()
- func (s *Strategy) EmitGridError(err error)
- func (s *Strategy) EmitGridProfit(stats *GridProfitStats, profit *GridProfit)
- func (s *Strategy) EmitGridReady()
- func (s *Strategy) ID() string
- func (s *Strategy) Initialize() error
- func (s *Strategy) InstanceID() string
- func (s *Strategy) OnGridClosed(cb func())
- func (s *Strategy) OnGridError(cb func(err error))
- func (s *Strategy) OnGridProfit(cb func(stats *GridProfitStats, profit *GridProfit))
- func (s *Strategy) OnGridReady(cb func())
- func (s *Strategy) OpenGrid(ctx context.Context) error
- func (s *Strategy) Run(ctx context.Context, _ bbgo.OrderExecutor, session *bbgo.ExchangeSession) error
- func (s *Strategy) Subscribe(session *bbgo.ExchangeSession)
- func (s *Strategy) Validate() error
- type TwinOrder
- type TwinOrderMap
Constants ¶
View Source
const ID = "grid2"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Grid ¶
type Grid struct { UpperPrice fixedpoint.Value `json:"upperPrice"` LowerPrice fixedpoint.Value `json:"lowerPrice"` // Size is the number of total grids Size fixedpoint.Value `json:"size"` // TickSize is the price tick size, this is used for truncating price TickSize fixedpoint.Value `json:"tickSize"` // Spread is a immutable number Spread fixedpoint.Value `json:"spread"` // Pins are the pinned grid prices, from low to high Pins []Pin `json:"pins"` // contains filtered or unexported fields }
func NewGrid ¶
func NewGrid(lower, upper, size, tickSize fixedpoint.Value) *Grid
func (*Grid) CalculateArithmeticPins ¶
func (g *Grid) CalculateArithmeticPins()
func (*Grid) CalculateGeometricPins ¶
func (g *Grid) CalculateGeometricPins()
func (*Grid) ExtendLowerPrice ¶
func (g *Grid) ExtendLowerPrice(lower fixedpoint.Value) (newPins []Pin)
func (*Grid) ExtendUpperPrice ¶
func (g *Grid) ExtendUpperPrice(upper fixedpoint.Value) (newPins []Pin)
func (*Grid) FilterOrders ¶ added in v1.44.0
func (*Grid) Height ¶
func (g *Grid) Height() fixedpoint.Value
func (*Grid) NextHigherPin ¶
func (g *Grid) NextHigherPin(price fixedpoint.Value) (Pin, bool)
NextHigherPin finds the next higher pin
func (*Grid) NextLowerPin ¶
func (g *Grid) NextLowerPin(price fixedpoint.Value) (Pin, bool)
NextLowerPin finds the next lower pin
func (*Grid) OutOfRange ¶
func (g *Grid) OutOfRange(price fixedpoint.Value) bool
type GridProfit ¶
type GridProfit struct { Currency string `json:"currency"` Profit fixedpoint.Value `json:"profit"` Time time.Time `json:"time"` Order types.Order `json:"order"` }
func (*GridProfit) PlainText ¶
func (p *GridProfit) PlainText() string
func (*GridProfit) SlackAttachment ¶
func (p *GridProfit) SlackAttachment() slack.Attachment
func (*GridProfit) String ¶
func (p *GridProfit) String() string
type GridProfitStats ¶
type GridProfitStats struct { Symbol string `json:"symbol"` TotalBaseProfit fixedpoint.Value `json:"totalBaseProfit,omitempty"` TotalQuoteProfit fixedpoint.Value `json:"totalQuoteProfit,omitempty"` FloatProfit fixedpoint.Value `json:"floatProfit,omitempty"` GridProfit fixedpoint.Value `json:"gridProfit,omitempty"` ArbitrageCount int `json:"arbitrageCount,omitempty"` TotalFee map[string]fixedpoint.Value `json:"totalFee,omitempty"` Volume fixedpoint.Value `json:"volume,omitempty"` Market types.Market `json:"market,omitempty"` ProfitEntries []*GridProfit `json:"profitEntries,omitempty"` Since *time.Time `json:"since,omitempty"` InitialOrderID uint64 `json:"initialOrderID"` }
func (*GridProfitStats) AddProfit ¶
func (s *GridProfitStats) AddProfit(profit *GridProfit)
func (*GridProfitStats) AddTrade ¶
func (s *GridProfitStats) AddTrade(trade types.Trade)
func (*GridProfitStats) PlainText ¶ added in v1.44.0
func (s *GridProfitStats) PlainText() string
func (*GridProfitStats) SlackAttachment ¶
func (s *GridProfitStats) SlackAttachment() slack.Attachment
func (*GridProfitStats) String ¶ added in v1.44.0
func (s *GridProfitStats) String() string
type OrderExecutor ¶
type OrderExecutor interface { SubmitOrders(ctx context.Context, submitOrders ...types.SubmitOrder) (types.OrderSlice, error) ClosePosition(ctx context.Context, percentage fixedpoint.Value, tags ...string) error GracefulCancel(ctx context.Context, orders ...types.Order) error ActiveMakerOrders() *bbgo.ActiveOrderBook }
type Pin ¶
type Pin fixedpoint.Value
type PinCalculator ¶
type PinCalculator func() []Pin
type PinOrderMap ¶ added in v1.44.1
type PinOrderMap map[fixedpoint.Value]types.Order
PinOrderMap store the pin-order's relation, we will change key from string to fixedpoint.Value when FormatString fixed
func (PinOrderMap) AscendingOrders ¶ added in v1.44.1
func (m PinOrderMap) AscendingOrders() []types.Order
AscendingOrders get the orders from pin order map and sort it in asc order
func (PinOrderMap) String ¶ added in v1.45.0
func (m PinOrderMap) String() string
func (PinOrderMap) SyncOrderMap ¶ added in v1.44.1
func (m PinOrderMap) SyncOrderMap() *types.SyncOrderMap
type PrettyPins ¶ added in v1.44.0
type PrettyPins []Pin
func (PrettyPins) String ¶ added in v1.44.0
func (pp PrettyPins) String() string
type PriceMap ¶ added in v1.43.1
type PriceMap map[string]fixedpoint.Value
type ProfitFixer ¶ added in v1.47.0
type ProfitFixer struct {
// contains filtered or unexported fields
}
func (*ProfitFixer) Fix ¶ added in v1.47.0
func (f *ProfitFixer) Fix(parent context.Context, since, until time.Time, initialOrderID uint64, profitStats *GridProfitStats) error
Fix fixes the total quote profit of the given grid
func (*ProfitFixer) SetLogger ¶ added in v1.47.0
func (f *ProfitFixer) SetLogger(logger logrus.FieldLogger)
type Strategy ¶
type Strategy struct { Environment *bbgo.Environment // Market stores the configuration of the market, for example, VolumePrecision, PricePrecision, MinLotSize... etc // This field will be injected automatically since we defined the Symbol field. types.Market `json:"-"` // These fields will be filled from the config file (it translates YAML to JSON) Symbol string `json:"symbol"` // ProfitSpread is the fixed profit spread you want to submit the sell order // When ProfitSpread is enabled, the grid will shift up, e.g., // If you opened a grid with the price range 10_000 to 20_000 // With profit spread set to 3_000 // The sell orders will be placed in the range 13_000 to 23_000 // And the buy orders will be placed in the original price range 10_000 to 20_000 ProfitSpread fixedpoint.Value `json:"profitSpread"` // GridNum is the grid number, how many orders you want to post on the orderbook. GridNum int64 `json:"gridNumber"` // BaseGridNum is an optional field used for base investment sell orders BaseGridNum int `json:"baseGridNumber,omitempty"` AutoRange *types.SimpleDuration `json:"autoRange"` UpperPrice fixedpoint.Value `json:"upperPrice"` LowerPrice fixedpoint.Value `json:"lowerPrice"` // Compound option is used for buying more inventory when // the profit is made by the filled sell order. Compound bool `json:"compound"` // EarnBase option is used for earning profit in base currency. // e.g. earn BTC in BTCUSDT and earn ETH in ETHUSDT // instead of earn USDT in BTCUSD EarnBase bool `json:"earnBase"` // QuantityOrAmount embeds the Quantity field and the Amount field // If you set up the Quantity field or the Amount field, you don't need to set the QuoteInvestment and BaseInvestment bbgo.QuantityOrAmount // If Quantity and Amount is not set, we can use the quote investment to calculate our quantity. QuoteInvestment fixedpoint.Value `json:"quoteInvestment"` // BaseInvestment is the total base quantity you want to place as the sell order. BaseInvestment fixedpoint.Value `json:"baseInvestment"` TriggerPrice fixedpoint.Value `json:"triggerPrice"` StopLossPrice fixedpoint.Value `json:"stopLossPrice"` TakeProfitPrice fixedpoint.Value `json:"takeProfitPrice"` // CloseWhenCancelOrder option is used to close the grid if any of the order is canceled. // This option let you simply remote control the grid from the crypto exchange mobile app. CloseWhenCancelOrder bool `json:"closeWhenCancelOrder"` // KeepOrdersWhenShutdown option is used for keeping the grid orders when shutting down bbgo KeepOrdersWhenShutdown bool `json:"keepOrdersWhenShutdown"` // RecoverOrdersWhenStart option is used for recovering grid orders RecoverOrdersWhenStart bool `json:"recoverOrdersWhenStart"` // ClearOpenOrdersWhenStart // If this is set, when bbgo started, it will clear the open orders in the same market (by symbol) ClearOpenOrdersWhenStart bool `json:"clearOpenOrdersWhenStart"` ClearOpenOrdersIfMismatch bool `json:"clearOpenOrdersIfMismatch"` ClearDuplicatedPriceOpenOrders bool `json:"clearDuplicatedPriceOpenOrders"` // UseCancelAllOrdersApiWhenClose uses a different API to cancel all the orders on the market when closing a grid UseCancelAllOrdersApiWhenClose bool `json:"useCancelAllOrdersApiWhenClose"` // ResetPositionWhenStart resets the position when the strategy is started ResetPositionWhenStart bool `json:"resetPositionWhenStart"` // StopIfLessThanMinimalQuoteInvestment stops the strategy if the quote investment does not match StopIfLessThanMinimalQuoteInvestment bool `json:"stopIfLessThanMinimalQuoteInvestment"` OrderFillDelay types.Duration `json:"orderFillDelay"` // PrometheusLabels will be used as the base prometheus labels PrometheusLabels prometheus.Labels `json:"prometheusLabels"` // OrderGroupID is the group ID used for the strategy instance for canceling orders OrderGroupID uint32 `json:"orderGroupID"` LogFields logrus.Fields `json:"logFields"` // FeeRate is used for calculating the minimal profit spread. // it makes sure that your grid configuration is profitable. FeeRate fixedpoint.Value `json:"feeRate"` SkipSpreadCheck bool `json:"skipSpreadCheck"` RecoverGridByScanningTrades bool `json:"recoverGridByScanningTrades"` RecoverGridWithin time.Duration `json:"recoverGridWithin"` EnableProfitFixer bool `json:"enableProfitFixer"` FixProfitSince *types.Time `json:"fixProfitSince"` // Debug enables the debug mode Debug bool `json:"debug"` GridProfitStats *GridProfitStats `persistence:"grid_profit_stats"` Position *types.Position `persistence:"position"` // ExchangeSession is an injection field ExchangeSession *bbgo.ExchangeSession // this ensures that bbgo.Sync to lock the object sync.Mutex // contains filtered or unexported fields }
func (*Strategy) EmitGridClosed ¶ added in v1.44.0
func (s *Strategy) EmitGridClosed()
func (*Strategy) EmitGridError ¶ added in v1.44.0
func (*Strategy) EmitGridProfit ¶ added in v1.44.0
func (s *Strategy) EmitGridProfit(stats *GridProfitStats, profit *GridProfit)
func (*Strategy) EmitGridReady ¶ added in v1.44.0
func (s *Strategy) EmitGridReady()
func (*Strategy) Initialize ¶ added in v1.44.0
func (*Strategy) InstanceID ¶
InstanceID returns the instance identifier from the current grid configuration parameters
func (*Strategy) OnGridClosed ¶ added in v1.44.0
func (s *Strategy) OnGridClosed(cb func())
func (*Strategy) OnGridError ¶ added in v1.44.0
func (*Strategy) OnGridProfit ¶ added in v1.44.0
func (s *Strategy) OnGridProfit(cb func(stats *GridProfitStats, profit *GridProfit))
func (*Strategy) OnGridReady ¶ added in v1.44.0
func (s *Strategy) OnGridReady(cb func())
func (*Strategy) Run ¶
func (s *Strategy) Run(ctx context.Context, _ bbgo.OrderExecutor, session *bbgo.ExchangeSession) error
func (*Strategy) Subscribe ¶
func (s *Strategy) Subscribe(session *bbgo.ExchangeSession)
type TwinOrderMap ¶ added in v1.48.0
type TwinOrderMap map[fixedpoint.Value]TwinOrder
func (TwinOrderMap) AscendingOrders ¶ added in v1.48.0
func (m TwinOrderMap) AscendingOrders() []types.Order
func (TwinOrderMap) String ¶ added in v1.48.0
func (m TwinOrderMap) String() string
func (TwinOrderMap) SyncOrderMap ¶ added in v1.48.0
func (m TwinOrderMap) SyncOrderMap() *types.SyncOrderMap
Source Files ¶
Click to show internal directories.
Click to hide internal directories.