diff --git a/backtester/backtest/backtest.go b/backtester/backtest/backtest.go index f36a5325..bf81f9f6 100644 --- a/backtester/backtest/backtest.go +++ b/backtester/backtest/backtest.go @@ -135,6 +135,15 @@ func NewFromConfig(cfg *config.Config, templatePath, output string, bot *engine. cfg.CurrencySettings[i].Base+cfg.CurrencySettings[i].Quote, err) } + exch := bot.ExchangeManager.GetExchangeByName(cfg.CurrencySettings[i].ExchangeName) + b := exch.GetBase() + var pFmt currency.PairFormat + pFmt, err = b.GetPairFormat(a, true) + if err != nil { + return nil, fmt.Errorf("could not format currency %v, %w", curr, err) + } + curr = curr.Format(pFmt.Delimiter, pFmt.Uppercase) + portfolioRisk.CurrencySettings[cfg.CurrencySettings[i].ExchangeName][a][curr] = &risk.CurrencySettings{ MaximumOrdersWithLeverageRatio: cfg.CurrencySettings[i].Leverage.MaximumOrdersWithLeverageRatio, MaxLeverageRate: cfg.CurrencySettings[i].Leverage.MaximumLeverageRate, diff --git a/backtester/config/config.go b/backtester/config/config.go index ed41f70d..961997d0 100644 --- a/backtester/config/config.go +++ b/backtester/config/config.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io/ioutil" + "strings" gctcommon "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/common/file" @@ -179,6 +180,7 @@ func (c *Config) ValidateCurrencySettings() error { c.CurrencySettings[i].MinimumSlippagePercent > c.CurrencySettings[i].MaximumSlippagePercent { return ErrBadSlippageRates } + c.CurrencySettings[i].ExchangeName = strings.ToLower(c.CurrencySettings[i].ExchangeName) } return nil } diff --git a/backtester/eventhandlers/exchange/exchange.go b/backtester/eventhandlers/exchange/exchange.go index 6b4dcbcb..38288150 100644 --- a/backtester/eventhandlers/exchange/exchange.go +++ b/backtester/eventhandlers/exchange/exchange.go @@ -265,7 +265,7 @@ func (e *Exchange) SetExchangeAssetCurrencySettings(exch string, a asset.Item, c // GetCurrencySettings returns the settings for an exchange, asset currency func (e *Exchange) GetCurrencySettings(exch string, a asset.Item, cp currency.Pair) (Settings, error) { for i := range e.CurrencySettings { - if e.CurrencySettings[i].CurrencyPair == cp { + if e.CurrencySettings[i].CurrencyPair.Equal(cp) { if e.CurrencySettings[i].AssetType == a { if exch == e.CurrencySettings[i].ExchangeName { return e.CurrencySettings[i], nil diff --git a/exchanges/gateio/gateio_wrapper.go b/exchanges/gateio/gateio_wrapper.go index bac557c7..6859509c 100644 --- a/exchanges/gateio/gateio_wrapper.go +++ b/exchanges/gateio/gateio_wrapper.go @@ -826,7 +826,7 @@ func (g *Gateio) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end return kline.Item{}, err } - hours := end.Sub(start).Hours() + hours := time.Since(start).Hours() formattedPair, err := g.FormatExchangeCurrency(pair, a) if err != nil { return kline.Item{}, err @@ -847,6 +847,7 @@ func (g *Gateio) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end klineData.Asset = a klineData.SortCandlesByTimestamp(false) + klineData.RemoveOutsideRange(start, end) return klineData, nil }