Don't use separate position field in /currency endpoint

This commit is contained in:
Matthias 2022-02-19 16:28:51 +01:00
parent 4b27bd9838
commit a2b17882e6
4 changed files with 30 additions and 20 deletions

View File

@ -39,6 +39,11 @@ class Balance(BaseModel):
used: float
est_stake: float
stake: str
# Starting with 2.x
side: str
leverage: float
is_position: bool
position: float
class Balances(BaseModel):

View File

@ -609,6 +609,10 @@ class RPC:
'used': balance.used if balance.used is not None else 0,
'est_stake': est_stake or 0,
'stake': stake_currency,
'side': 'long',
'leverage': 1,
'position': 0,
'is_position': False,
})
symbol: str
position: PositionWallet
@ -617,22 +621,14 @@ class RPC:
currencies.append({
'currency': symbol,
'free': 0,
'balance': position.position,
'balance': 0,
'used': 0,
'est_stake': position.collateral,
'stake': stake_currency,
})
positions.append({
'currency': symbol,
# 'free': balance.free if balance.free is not None else 0,
# 'balance': balance.total if balance.total is not None else 0,
# 'used': balance.used if balance.used is not None else 0,
'position': position.position,
'side': position.side,
'est_stake': position.collateral,
'leverage': position.leverage,
'stake': stake_currency,
'leverage': position.leverage,
'side': position.side,
'is_position': True
})
value = self._fiat_converter.convert_amount(
@ -645,7 +641,6 @@ class RPC:
return {
'currencies': currencies,
'positions': positions,
'total': total,
'symbol': fiat_display_currency,
'value': value,

View File

@ -827,6 +827,14 @@ class Telegram(RPCHandler):
for curr in result['currencies']:
curr_output = ''
if curr['est_stake'] > balance_dust_level:
if curr['is_position']:
curr_output = (
f"*{curr['currency']}:*\n"
f"\t`{curr['side']}: {curr['position']:.8f}`\n"
f"\t`Leverage: {curr['leverage']:.1f}`\n"
f"\t`Est. {curr['stake']}: "
f"{round_coin_value(curr['est_stake'], curr['stake'], False)}`\n")
else:
curr_output = (
f"*{curr['currency']}:*\n"
f"\t`Available: {curr['free']:.8f}`\n"

View File

@ -118,8 +118,10 @@ class Wallets:
for currency in deepcopy(self._wallets):
if currency not in balances:
del self._wallets[currency]
# TODO-lev: Implement dry-run/backtest counterpart
positions = self._exchange.get_positions()
self._positions = []
for position in positions:
symbol = position['symbol']
if position['side'] is None or position['collateral'] == 0.0: