position size fixed
This commit is contained in:
parent
159ac6e657
commit
e9305b6592
@ -159,11 +159,16 @@ class Edge():
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def stake_amount(self, pair: str, capital: float) -> float:
|
def stake_amount(self, pair: str, free_capital: float, total_capital: float) -> float:
|
||||||
stoploss = self._cached_pairs[pair].stoploss
|
stoploss = self._cached_pairs[pair].stoploss
|
||||||
available_capital = capital * self._capital_percentage
|
available_capital = total_capital * self._capital_percentage
|
||||||
allowed_capital_at_risk = round(available_capital * self._allowed_risk, 15)
|
allowed_capital_at_risk = round(available_capital * self._allowed_risk, 15)
|
||||||
position_size = abs(round((allowed_capital_at_risk / stoploss), 15))
|
max_position_size = abs(round((allowed_capital_at_risk / stoploss), 15))
|
||||||
|
position_size = min(max_position_size, free_capital)
|
||||||
|
logger.info(
|
||||||
|
'position size is %s for pair %s, stoploss %s and available capital of %s.',
|
||||||
|
position_size, pair, stoploss, available_capital
|
||||||
|
)
|
||||||
return position_size
|
return position_size
|
||||||
|
|
||||||
def stoploss(self, pair: str) -> float:
|
def stoploss(self, pair: str) -> float:
|
||||||
|
@ -334,7 +334,9 @@ class FreqtradeBot(object):
|
|||||||
"""
|
"""
|
||||||
if self.edge:
|
if self.edge:
|
||||||
stake_amount = self.edge.stake_amount(
|
stake_amount = self.edge.stake_amount(
|
||||||
pair, self.wallets.get_free(self.config['stake_currency'])
|
pair,
|
||||||
|
self.wallets.get_free(self.config['stake_currency']),
|
||||||
|
self.wallets.get_total(self.config['stake_currency'])
|
||||||
)
|
)
|
||||||
return stake_amount
|
return stake_amount
|
||||||
else:
|
else:
|
||||||
|
@ -40,6 +40,28 @@ class Wallets(object):
|
|||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def get_used(self, currency) -> float:
|
||||||
|
|
||||||
|
if self.exchange._conf['dry_run']:
|
||||||
|
return 999.9
|
||||||
|
|
||||||
|
balance = self.wallets.get(currency)
|
||||||
|
if balance and balance.used:
|
||||||
|
return balance.used
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
def get_total(self, currency) -> float:
|
||||||
|
|
||||||
|
if self.exchange._conf['dry_run']:
|
||||||
|
return 999.9
|
||||||
|
|
||||||
|
balance = self.wallets.get(currency)
|
||||||
|
if balance and balance.total:
|
||||||
|
return balance.total
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
def update(self) -> None:
|
def update(self) -> None:
|
||||||
balances = self.exchange.get_balances()
|
balances = self.exchange.get_balances()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user