Don't use config['stake_amount'] in wallets

This commit is contained in:
Matthias
2023-12-12 22:43:46 +01:00
parent c9f43587ec
commit 47a952e41c
4 changed files with 13 additions and 9 deletions
+2 -1
View File
@@ -580,7 +580,8 @@ class FreqtradeBot(LoggingMixin):
else: else:
self.log_once(f"Pair {pair} is currently locked.", logger.info) self.log_once(f"Pair {pair} is currently locked.", logger.info)
return False return False
stake_amount = self.wallets.get_trade_stake_amount(pair, self.edge) stake_amount = self.wallets.get_trade_stake_amount(
pair, self.config['max_open_trades'], self.edge)
bid_check_dom = self.config.get('entry_pricing', {}).get('check_depth_of_market', {}) bid_check_dom = self.config.get('entry_pricing', {}).get('check_depth_of_market', {})
if ((bid_check_dom.get('enabled', False)) and if ((bid_check_dom.get('enabled', False)) and
+2 -1
View File
@@ -798,7 +798,8 @@ class Backtesting:
leverage = trade.leverage if trade else 1.0 leverage = trade.leverage if trade else 1.0
if not pos_adjust: if not pos_adjust:
try: try:
stake_amount = self.wallets.get_trade_stake_amount(pair, None, update=False) stake_amount = self.wallets.get_trade_stake_amount(
pair, self.strategy.max_open_trades, update=False)
except DependencyException: except DependencyException:
return 0, 0, 0, 0 return 0, 0, 0, 0
+2 -1
View File
@@ -914,7 +914,8 @@ class RPC:
if not stake_amount: if not stake_amount:
# gen stake amount # gen stake amount
stake_amount = self._freqtrade.wallets.get_trade_stake_amount(pair) stake_amount = self._freqtrade.wallets.get_trade_stake_amount(
pair, self._config['max_open_trades'])
# execute buy # execute buy
if not order_type: if not order_type:
+7 -6
View File
@@ -6,7 +6,7 @@ from copy import deepcopy
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import Dict, NamedTuple, Optional from typing import Dict, NamedTuple, Optional
from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, Config from freqtrade.constants import UNLIMITED_STAKE_AMOUNT, Config, IntOrInf
from freqtrade.enums import RunMode, TradingMode from freqtrade.enums import RunMode, TradingMode
from freqtrade.exceptions import DependencyException from freqtrade.exceptions import DependencyException
from freqtrade.exchange import Exchange from freqtrade.exchange import Exchange
@@ -262,15 +262,15 @@ class Wallets:
return min(self.get_total_stake_amount() - Trade.total_open_trades_stakes(), free) return min(self.get_total_stake_amount() - Trade.total_open_trades_stakes(), free)
def _calculate_unlimited_stake_amount(self, available_amount: float, def _calculate_unlimited_stake_amount(self, available_amount: float,
val_tied_up: float) -> float: val_tied_up: float, max_open_trades: IntOrInf) -> float:
""" """
Calculate stake amount for "unlimited" stake amount Calculate stake amount for "unlimited" stake amount
:return: 0 if max number of trades reached, else stake_amount to use. :return: 0 if max number of trades reached, else stake_amount to use.
""" """
if self._config['max_open_trades'] == 0: if max_open_trades == 0:
return 0 return 0
possible_stake = (available_amount + val_tied_up) / self._config['max_open_trades'] possible_stake = (available_amount + val_tied_up) / max_open_trades
# Theoretical amount can be above available amount - therefore limit to available amount! # Theoretical amount can be above available amount - therefore limit to available amount!
return min(possible_stake, available_amount) return min(possible_stake, available_amount)
@@ -298,7 +298,8 @@ class Wallets:
return stake_amount return stake_amount
def get_trade_stake_amount(self, pair: str, edge=None, update: bool = True) -> float: def get_trade_stake_amount(
self, pair: str, max_open_trades: IntOrInf, edge=None, update: bool = True) -> float:
""" """
Calculate stake amount for the trade Calculate stake amount for the trade
:return: float: Stake amount :return: float: Stake amount
@@ -322,7 +323,7 @@ class Wallets:
stake_amount = self._config['stake_amount'] stake_amount = self._config['stake_amount']
if stake_amount == UNLIMITED_STAKE_AMOUNT: if stake_amount == UNLIMITED_STAKE_AMOUNT:
stake_amount = self._calculate_unlimited_stake_amount( stake_amount = self._calculate_unlimited_stake_amount(
available_amount, val_tied_up) available_amount, val_tied_up, max_open_trades)
return self._check_available_stake_amount(stake_amount, available_amount) return self._check_available_stake_amount(stake_amount, available_amount)