mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-23 23:35:14 +00:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package core
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/c9s/bbgo/pkg/types"
|
|
)
|
|
|
|
type CurrencyConverter struct {
|
|
FromCurrency string `json:"from"`
|
|
ToCurrency string `json:"to"`
|
|
}
|
|
|
|
func NewCurrencyConverter(fromSymbol, toSymbol string) *CurrencyConverter {
|
|
return &CurrencyConverter{FromCurrency: fromSymbol, ToCurrency: toSymbol}
|
|
}
|
|
|
|
func (c *CurrencyConverter) Initialize() error {
|
|
if c.FromCurrency == "" {
|
|
return errors.New("FromCurrency can not be empty")
|
|
}
|
|
|
|
if c.ToCurrency == "" {
|
|
return errors.New("ToCurrency can not be empty")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *CurrencyConverter) ConvertOrder(order types.Order) (types.Order, error) {
|
|
if order.SubmitOrder.Market.QuoteCurrency == c.FromCurrency {
|
|
order.SubmitOrder.Market.QuoteCurrency = c.ToCurrency
|
|
}
|
|
if order.SubmitOrder.Market.BaseCurrency == c.FromCurrency {
|
|
order.SubmitOrder.Market.BaseCurrency = c.ToCurrency
|
|
}
|
|
|
|
return order, nil
|
|
}
|
|
|
|
func (c *CurrencyConverter) ConvertTrade(trade types.Trade) (types.Trade, error) {
|
|
if trade.FeeCurrency == c.FromCurrency {
|
|
trade.FeeCurrency = c.ToCurrency
|
|
}
|
|
return trade, nil
|
|
}
|
|
|
|
func (c *CurrencyConverter) ConvertKLine(kline types.KLine) (types.KLine, error) {
|
|
return kline, nil
|
|
}
|
|
|
|
func (c *CurrencyConverter) ConvertMarket(mkt types.Market) (types.Market, error) {
|
|
if mkt.QuoteCurrency == c.FromCurrency {
|
|
mkt.QuoteCurrency = c.ToCurrency
|
|
}
|
|
if mkt.BaseCurrency == c.FromCurrency {
|
|
mkt.BaseCurrency = c.ToCurrency
|
|
}
|
|
|
|
return mkt, nil
|
|
}
|
|
|
|
func (c *CurrencyConverter) ConvertBalance(balance types.Balance) (types.Balance, error) {
|
|
if balance.Currency == c.FromCurrency {
|
|
balance.Currency = c.ToCurrency
|
|
}
|
|
|
|
return balance, nil
|
|
}
|