2024-01-06 11:46:30 +00:00
|
|
|
from freqtrade.constants import DECIMAL_PER_COIN_FALLBACK, DECIMALS_PER_COIN
|
|
|
|
|
|
|
|
|
|
|
|
def decimals_per_coin(coin: str):
|
|
|
|
"""
|
|
|
|
Helper method getting decimal amount for this coin
|
|
|
|
example usage: f".{decimals_per_coin('USD')}f"
|
|
|
|
:param coin: Which coin are we printing the price / value for
|
|
|
|
"""
|
|
|
|
return DECIMALS_PER_COIN.get(coin, DECIMAL_PER_COIN_FALLBACK)
|
|
|
|
|
|
|
|
|
2024-03-17 12:37:27 +00:00
|
|
|
def strip_trailing_zeros(value: str) -> str:
|
|
|
|
"""
|
|
|
|
Strip trailing zeros from a string
|
|
|
|
:param value: Value to be stripped
|
|
|
|
:return: Stripped value
|
|
|
|
"""
|
2024-05-12 14:56:05 +00:00
|
|
|
return value.rstrip("0").rstrip(".")
|
2024-03-17 12:37:27 +00:00
|
|
|
|
|
|
|
|
2024-01-06 11:46:30 +00:00
|
|
|
def round_value(value: float, decimals: int, keep_trailing_zeros=False) -> str:
|
|
|
|
"""
|
|
|
|
Round value to given decimals
|
|
|
|
:param value: Value to be rounded
|
|
|
|
:param decimals: Number of decimals to round to
|
|
|
|
:param keep_trailing_zeros: Keep trailing zeros "222.200" vs. "222.2"
|
|
|
|
:return: Rounded value as string
|
|
|
|
"""
|
|
|
|
val = f"{value:.{decimals}f}"
|
|
|
|
if not keep_trailing_zeros:
|
2024-03-17 12:37:27 +00:00
|
|
|
val = strip_trailing_zeros(val)
|
2024-01-06 11:46:30 +00:00
|
|
|
return val
|
|
|
|
|
|
|
|
|
2024-05-12 14:56:05 +00:00
|
|
|
def fmt_coin(value: float, coin: str, show_coin_name=True, keep_trailing_zeros=False) -> str:
|
2024-01-06 11:46:30 +00:00
|
|
|
"""
|
2024-01-06 15:02:47 +00:00
|
|
|
Format price value for this coin
|
2024-01-06 11:46:30 +00:00
|
|
|
:param value: Value to be printed
|
|
|
|
:param coin: Which coin are we printing the price / value for
|
|
|
|
:param show_coin_name: Return string in format: "222.22 USDT" or "222.22"
|
|
|
|
:param keep_trailing_zeros: Keep trailing zeros "222.200" vs. "222.2"
|
|
|
|
:return: Formatted / rounded value (with or without coin name)
|
|
|
|
"""
|
|
|
|
val = round_value(value, decimals_per_coin(coin), keep_trailing_zeros)
|
|
|
|
if show_coin_name:
|
|
|
|
val = f"{val} {coin}"
|
|
|
|
|
|
|
|
return val
|