mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-08 07:26:48 +00:00
exchange/order/limits: Migrate to new package and integrate with exchanges (#1860)
* move limits, transition to key gen * rollout NewExchangePairAssetKey everywhere * test improvements * self-review fixes * ok, lets go * fix merge issue * slower value func,assertify,drop IsValidPairString * remove binance reference for backtesting test * Redundant nil checks removed due to redundancy * Update order_test.go * Move limits back into /exchanges/ * puts limits in a different box again * SHAZBERT SPECIAL SUGGESTIONS * Update gateio_wrapper.go * fixes all build issues * Many niteroos! * something has gone awry * bugfix * gk's everywhere nits * lint * extra lint * re-remove IsValidPairString * lint fix * standardise test * revert some bads * dupe rm * another revert 360 mcgee * un-in-revertify * Update exchange/order/limits/levels_test.go Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io> * fix * Update exchanges/binance/binance_test.go HERE'S HOPING GITHUB FORMATS THIS CORRECTLY! Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com> * update text * rn func, same line err gk4202000 --------- Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io> Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
This commit is contained in:
@@ -68,7 +68,7 @@ func TestSetupFromConfig(t *testing.T) {
|
||||
err = bt.SetupFromConfig(cfg, "", "", false)
|
||||
assert.ErrorIs(t, err, base.ErrStrategyNotFound)
|
||||
|
||||
const testExchange = "bitfinex"
|
||||
const testExchange = "okx"
|
||||
|
||||
cfg.CurrencySettings = []config.CurrencySettings{
|
||||
{
|
||||
@@ -424,7 +424,7 @@ func TestFullCycle(t *testing.T) {
|
||||
tt := time.Now()
|
||||
|
||||
stats := &statistics.Statistic{}
|
||||
stats.ExchangeAssetPairStatistics = make(map[key.ExchangePairAsset]*statistics.CurrencyPairStatistic)
|
||||
stats.ExchangeAssetPairStatistics = make(map[key.ExchangeAssetPair]*statistics.CurrencyPairStatistic)
|
||||
port, err := portfolio.Setup(&size.Size{
|
||||
BuySide: exchange.MinMax{},
|
||||
SellSide: exchange.MinMax{},
|
||||
@@ -542,7 +542,7 @@ func TestFullCycleMulti(t *testing.T) {
|
||||
tt := time.Now()
|
||||
|
||||
stats := &statistics.Statistic{}
|
||||
stats.ExchangeAssetPairStatistics = make(map[key.ExchangePairAsset]*statistics.CurrencyPairStatistic)
|
||||
stats.ExchangeAssetPairStatistics = make(map[key.ExchangeAssetPair]*statistics.CurrencyPairStatistic)
|
||||
|
||||
port, err := portfolio.Setup(&size.Size{
|
||||
BuySide: exchange.MinMax{},
|
||||
|
||||
@@ -36,11 +36,11 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
gctdatabase "github.com/thrasher-corp/gocryptotrader/database"
|
||||
"github.com/thrasher-corp/gocryptotrader/engine"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchange/order/limits"
|
||||
gctexchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/currencystate"
|
||||
gctkline "github.com/thrasher-corp/gocryptotrader/exchanges/kline"
|
||||
gctorder "github.com/thrasher-corp/gocryptotrader/exchanges/order"
|
||||
"github.com/thrasher-corp/gocryptotrader/log"
|
||||
)
|
||||
|
||||
@@ -194,7 +194,7 @@ func (bt *BackTest) SetupFromConfig(cfg *config.Config, templatePath, output str
|
||||
}
|
||||
|
||||
portfolioRisk := &risk.Risk{
|
||||
CurrencySettings: make(map[key.ExchangePairAsset]*risk.CurrencySettings),
|
||||
CurrencySettings: make(map[key.ExchangeAssetPair]*risk.CurrencySettings),
|
||||
}
|
||||
|
||||
bt.Funding = funds
|
||||
@@ -234,7 +234,7 @@ func (bt *BackTest) SetupFromConfig(cfg *config.Config, templatePath, output str
|
||||
err)
|
||||
}
|
||||
if portfolioRisk.CurrencySettings == nil {
|
||||
portfolioRisk.CurrencySettings = make(map[key.ExchangePairAsset]*risk.CurrencySettings)
|
||||
portfolioRisk.CurrencySettings = make(map[key.ExchangeAssetPair]*risk.CurrencySettings)
|
||||
}
|
||||
|
||||
var curr currency.Pair
|
||||
@@ -261,12 +261,7 @@ func (bt *BackTest) SetupFromConfig(cfg *config.Config, templatePath, output str
|
||||
portSet.MaximumOrdersWithLeverageRatio = cfg.CurrencySettings[i].FuturesDetails.Leverage.MaximumOrdersWithLeverageRatio
|
||||
portSet.MaxLeverageRate = cfg.CurrencySettings[i].FuturesDetails.Leverage.MaximumOrderLeverageRate
|
||||
}
|
||||
portfolioRisk.CurrencySettings[key.ExchangePairAsset{
|
||||
Exchange: cfg.CurrencySettings[i].ExchangeName,
|
||||
Base: cfg.CurrencySettings[i].Base.Item,
|
||||
Quote: cfg.CurrencySettings[i].Quote.Item,
|
||||
Asset: a,
|
||||
}] = portSet
|
||||
portfolioRisk.CurrencySettings[key.NewExchangeAssetPair(cfg.CurrencySettings[i].ExchangeName, a, curr)] = portSet
|
||||
if cfg.CurrencySettings[i].MakerFee != nil &&
|
||||
cfg.CurrencySettings[i].TakerFee != nil &&
|
||||
cfg.CurrencySettings[i].MakerFee.GreaterThan(*cfg.CurrencySettings[i].TakerFee) {
|
||||
@@ -332,7 +327,7 @@ func (bt *BackTest) SetupFromConfig(cfg *config.Config, templatePath, output str
|
||||
return err
|
||||
}
|
||||
default:
|
||||
return fmt.Errorf("%w: %v", asset.ErrNotSupported, a)
|
||||
return fmt.Errorf("%w: %q", asset.ErrNotSupported, a)
|
||||
}
|
||||
default:
|
||||
var bFunds, qFunds decimal.Decimal
|
||||
@@ -398,7 +393,7 @@ func (bt *BackTest) SetupFromConfig(cfg *config.Config, templatePath, output str
|
||||
StrategyNickname: cfg.Nickname,
|
||||
StrategyDescription: bt.Strategy.Description(),
|
||||
StrategyGoal: cfg.Goal,
|
||||
ExchangeAssetPairStatistics: make(map[key.ExchangePairAsset]*statistics.CurrencyPairStatistic),
|
||||
ExchangeAssetPairStatistics: make(map[key.ExchangeAssetPair]*statistics.CurrencyPairStatistic),
|
||||
RiskFreeRate: cfg.StatisticSettings.RiskFreeRate,
|
||||
CandleInterval: cfg.DataSettings.Interval,
|
||||
FundManager: bt.Funding,
|
||||
@@ -584,12 +579,12 @@ func (bt *BackTest) setupExchangeSettings(cfg *config.Config) (*exchange.Exchang
|
||||
MaximumTotal: cfg.CurrencySettings[i].SellSide.MaximumTotal,
|
||||
}
|
||||
|
||||
limits, err := exch.GetOrderExecutionLimits(a, pair)
|
||||
if err != nil && !errors.Is(err, gctorder.ErrExchangeLimitNotLoaded) {
|
||||
l, err := exch.GetOrderExecutionLimits(a, pair)
|
||||
if err != nil && !errors.Is(err, limits.ErrOrderLimitNotFound) {
|
||||
return resp, err
|
||||
}
|
||||
|
||||
if limits != (gctorder.MinMaxLevel{}) {
|
||||
if l != (limits.MinMaxLevel{}) {
|
||||
if !cfg.CurrencySettings[i].CanUseExchangeLimits {
|
||||
if realOrders {
|
||||
log.Warnf(common.Setup, "Exchange %s order execution limits enabled for %s %s due to using real orders",
|
||||
@@ -626,7 +621,7 @@ func (bt *BackTest) setupExchangeSettings(cfg *config.Config) (*exchange.Exchang
|
||||
BuySide: buyRule,
|
||||
SellSide: sellRule,
|
||||
Leverage: lev,
|
||||
Limits: limits,
|
||||
Limits: l,
|
||||
SkipCandleVolumeFitting: cfg.CurrencySettings[i].SkipCandleVolumeFitting,
|
||||
CanUseExchangeLimits: cfg.CurrencySettings[i].CanUseExchangeLimits,
|
||||
UseExchangePNLCalculation: cfg.CurrencySettings[i].UseExchangePNLCalculation,
|
||||
|
||||
Reference in New Issue
Block a user