mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-07 15:11:03 +00:00
Bitstamp: Implement UpdateOrderExecutionLimits and testing (#1264)
* Bitstamp: OrderExecutionLimits and testing * Bitstamp: Fix FetchTradablePairs Loading Limits * Bitstamp: Limit for the step increment added, type convert replaced with regular expression * Update exchanges/bitstamp/bitstamp_type_convert.go Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com> * Bitstamp: Changed MinimumBaseAmount to MinimumQuoteAmount * Bitstamp: changed riceStepIncrementSize and AmountStepIncrementSize to math.Pow(-value) --------- Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"sort"
|
||||
"strconv"
|
||||
"sync"
|
||||
@@ -266,16 +267,19 @@ func (b *Bitstamp) Run(ctx context.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
if !b.GetEnabledFeatures().AutoPairUpdates && !forceUpdate {
|
||||
return
|
||||
if b.GetEnabledFeatures().AutoPairUpdates || forceUpdate {
|
||||
if err := b.UpdateTradablePairs(ctx, forceUpdate); err != nil {
|
||||
log.Errorf(log.ExchangeSys,
|
||||
"%s failed to update tradable pairs. Err: %s",
|
||||
b.Name,
|
||||
err)
|
||||
}
|
||||
}
|
||||
|
||||
err := b.UpdateTradablePairs(ctx, forceUpdate)
|
||||
if err != nil {
|
||||
log.Errorf(log.ExchangeSys,
|
||||
"%s failed to update tradable pairs. Err: %s",
|
||||
b.Name,
|
||||
err)
|
||||
for _, a := range b.GetAssetTypes(true) {
|
||||
if err := b.UpdateOrderExecutionLimits(ctx, a); err != nil && err != common.ErrNotYetImplemented {
|
||||
log.Errorln(log.ExchangeSys, err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,13 +289,12 @@ func (b *Bitstamp) FetchTradablePairs(ctx context.Context, _ asset.Item) (curren
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pair currency.Pair
|
||||
pairs := make([]currency.Pair, 0, len(symbols))
|
||||
for x := range symbols {
|
||||
if symbols[x].Trading != "Enabled" {
|
||||
continue
|
||||
}
|
||||
var pair currency.Pair
|
||||
pair, err = currency.NewPairFromString(symbols[x].Name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -315,6 +318,38 @@ func (b *Bitstamp) UpdateTradablePairs(ctx context.Context, forceUpdate bool) er
|
||||
return b.EnsureOnePairEnabled()
|
||||
}
|
||||
|
||||
// UpdateOrderExecutionLimits sets exchange execution order limits for an asset type
|
||||
func (b *Bitstamp) UpdateOrderExecutionLimits(ctx context.Context, a asset.Item) error {
|
||||
if a != asset.Spot {
|
||||
return common.ErrNotYetImplemented
|
||||
}
|
||||
symbols, err := b.GetTradingPairs(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
limits := make([]order.MinMaxLevel, 0, len(symbols))
|
||||
for x, info := range symbols {
|
||||
if symbols[x].Trading != "Enabled" {
|
||||
continue
|
||||
}
|
||||
pair, err := currency.NewPairFromString(symbols[x].Name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
limits = append(limits, order.MinMaxLevel{
|
||||
Asset: a,
|
||||
Pair: pair,
|
||||
PriceStepIncrementSize: math.Pow10(-info.CounterDecimals),
|
||||
AmountStepIncrementSize: math.Pow10(-info.BaseDecimals),
|
||||
MinimumQuoteAmount: info.MinimumOrder,
|
||||
})
|
||||
}
|
||||
if err := b.LoadLimits(limits); err != nil {
|
||||
return fmt.Errorf("%s Error loading exchange limits: %v", b.Name, err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateTickers updates the ticker for all currency pairs of a given asset type
|
||||
func (b *Bitstamp) UpdateTickers(_ context.Context, _ asset.Item) error {
|
||||
return common.ErrFunctionNotSupported
|
||||
|
||||
Reference in New Issue
Block a user