Don't return None from unlimited_stake - 0 handles this just as well
This commit is contained in:
parent
7e7c82cf4a
commit
7daa5bc338
@ -250,12 +250,13 @@ class FreqtradeBot:
|
|||||||
|
|
||||||
return used_rate
|
return used_rate
|
||||||
|
|
||||||
def get_trade_stake_amount(self, pair) -> Optional[float]:
|
def get_trade_stake_amount(self, pair) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate stake amount for the trade
|
Calculate stake amount for the trade
|
||||||
:return: float: Stake amount
|
:return: float: Stake amount
|
||||||
|
:raise: DependencyException if the available stake amount is too low
|
||||||
"""
|
"""
|
||||||
stake_amount: Optional[float]
|
stake_amount: float
|
||||||
if self.edge:
|
if self.edge:
|
||||||
stake_amount = self.edge.stake_amount(
|
stake_amount = self.edge.stake_amount(
|
||||||
pair,
|
pair,
|
||||||
@ -286,20 +287,20 @@ class FreqtradeBot:
|
|||||||
self.config['tradable_balance_ratio']) - val_tied_up
|
self.config['tradable_balance_ratio']) - val_tied_up
|
||||||
return available_amount
|
return available_amount
|
||||||
|
|
||||||
def _calculate_unlimited_stake_amount(self) -> Optional[float]:
|
def _calculate_unlimited_stake_amount(self) -> float:
|
||||||
"""
|
"""
|
||||||
Calculate stake amount for "unlimited" stake amount
|
Calculate stake amount for "unlimited" stake amount
|
||||||
:return: None if max number of trades reached
|
:return: 0 if max number of trades reached, else stake_amount to use.
|
||||||
"""
|
"""
|
||||||
free_open_trades = self.get_free_open_trades()
|
free_open_trades = self.get_free_open_trades()
|
||||||
if not free_open_trades:
|
if not free_open_trades:
|
||||||
return None
|
return 0
|
||||||
|
|
||||||
available_amount = self._get_available_stake_amount()
|
available_amount = self._get_available_stake_amount()
|
||||||
|
|
||||||
return available_amount / free_open_trades
|
return available_amount / free_open_trades
|
||||||
|
|
||||||
def _check_available_stake_amount(self, stake_amount: Optional[float]) -> Optional[float]:
|
def _check_available_stake_amount(self, stake_amount: float) -> float:
|
||||||
"""
|
"""
|
||||||
Check if stake amount can be fulfilled with the available balance
|
Check if stake amount can be fulfilled with the available balance
|
||||||
for the stake currency
|
for the stake currency
|
||||||
@ -307,7 +308,7 @@ class FreqtradeBot:
|
|||||||
"""
|
"""
|
||||||
available_amount = self._get_available_stake_amount()
|
available_amount = self._get_available_stake_amount()
|
||||||
|
|
||||||
if stake_amount is not None and available_amount < stake_amount:
|
if available_amount < stake_amount:
|
||||||
raise DependencyException(
|
raise DependencyException(
|
||||||
f"Available balance ({available_amount} {self.config['stake_currency']}) is "
|
f"Available balance ({available_amount} {self.config['stake_currency']}) is "
|
||||||
f"lower than stake amount ({stake_amount} {self.config['stake_currency']})"
|
f"lower than stake amount ({stake_amount} {self.config['stake_currency']})"
|
||||||
|
@ -189,13 +189,13 @@ def test_get_trade_stake_amount_unlimited_amount(default_conf, ticker, balance_r
|
|||||||
freqtrade.execute_buy('LTC/BTC', result)
|
freqtrade.execute_buy('LTC/BTC', result)
|
||||||
|
|
||||||
result = freqtrade.get_trade_stake_amount('XRP/BTC')
|
result = freqtrade.get_trade_stake_amount('XRP/BTC')
|
||||||
assert result is None
|
assert result == 0
|
||||||
|
|
||||||
# set max_open_trades = None, so do not trade
|
# set max_open_trades = None, so do not trade
|
||||||
conf['max_open_trades'] = 0
|
conf['max_open_trades'] = 0
|
||||||
freqtrade = FreqtradeBot(conf)
|
freqtrade = FreqtradeBot(conf)
|
||||||
result = freqtrade.get_trade_stake_amount('NEO/BTC')
|
result = freqtrade.get_trade_stake_amount('NEO/BTC')
|
||||||
assert result is None
|
assert result == 0
|
||||||
|
|
||||||
|
|
||||||
def test_edge_called_in_process(mocker, edge_conf) -> None:
|
def test_edge_called_in_process(mocker, edge_conf) -> None:
|
||||||
@ -576,7 +576,7 @@ def test_create_trade_limit_reached(default_conf, ticker, limit_buy_order,
|
|||||||
patch_get_signal(freqtrade)
|
patch_get_signal(freqtrade)
|
||||||
|
|
||||||
assert not freqtrade.create_trade('ETH/BTC')
|
assert not freqtrade.create_trade('ETH/BTC')
|
||||||
assert freqtrade.get_trade_stake_amount('ETH/BTC') is None
|
assert freqtrade.get_trade_stake_amount('ETH/BTC') == 0
|
||||||
|
|
||||||
|
|
||||||
def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order, fee,
|
def test_enter_positions_no_pairs_left(default_conf, ticker, limit_buy_order, fee,
|
||||||
|
Loading…
Reference in New Issue
Block a user