Improve naming of calculate_profit method

This commit is contained in:
Matthias
2023-09-04 06:42:16 +02:00
parent 07e07bd66b
commit 39b6a00224
4 changed files with 13 additions and 13 deletions

View File

@@ -1731,10 +1731,10 @@ class FreqtradeBot(LoggingMixin):
amount = order.safe_filled if fill else order.safe_amount
order_rate: float = order.safe_price
profit = trade.calc_profit_combined(order_rate, amount, trade.open_rate)
profit = trade.calculate_profit(order_rate, amount, trade.open_rate)
else:
order_rate = trade.safe_close_rate
profit = trade.calc_profit_combined(rate=order_rate)
profit = trade.calculate_profit(rate=order_rate)
amount = trade.amount
gain = "profit" if profit.profit_ratio > 0 else "loss"
@@ -1787,7 +1787,7 @@ class FreqtradeBot(LoggingMixin):
order = self.order_obj_or_raise(order_id, order_or_none)
profit_rate: float = trade.safe_close_rate
profit = trade.calc_profit_combined(rate=profit_rate)
profit = trade.calculate_profit(rate=profit_rate)
current_rate = self.exchange.get_rate(
trade.pair, side='exit', is_short=trade.is_short, refresh=False)
gain = "profit" if profit.profit_ratio > 0 else "loss"

View File

@@ -903,11 +903,11 @@ class LocalTrade:
:param open_rate: open_rate to use. Defaults to self.open_rate if not provided.
:return: profit in stake currency as float
"""
prof = self.calc_profit_combined(rate, amount, open_rate)
prof = self.calculate_profit(rate, amount, open_rate)
return prof.profit_abs
def calc_profit_combined(self, rate: float, amount: Optional[float] = None,
open_rate: Optional[float] = None) -> ProfitStruct:
def calculate_profit(self, rate: float, amount: Optional[float] = None,
open_rate: Optional[float] = None) -> ProfitStruct:
"""
Calculate profit metrics (absolute, ratio, total, total ratio).
All calculations include fees.
@@ -1020,7 +1020,7 @@ class LocalTrade:
exit_rate = o.safe_price
exit_amount = o.safe_amount_after_fee
prof = self.calc_profit_combined(exit_rate, exit_amount, float(avg_price))
prof = self.calculate_profit(exit_rate, exit_amount, float(avg_price))
close_profit_abs += prof.profit_abs
close_profit = prof.profit_ratio
else:

View File

@@ -189,7 +189,7 @@ class RPC:
current_profit = current_profit_abs = current_profit_fiat = NAN
if not isnan(current_rate):
prof = trade.calc_profit_combined(current_rate)
prof = trade.calculate_profit(current_rate)
current_profit = prof.profit_ratio
current_profit_abs = prof.profit_abs
total_profit_abs = prof.total_profit
@@ -217,7 +217,7 @@ class RPC:
)
# Calculate guaranteed profit (in case of trailing stop)
stop_entry = trade.calc_profit_combined(trade.stop_loss)
stop_entry = trade.calculate_profit(trade.stop_loss)
stoploss_entry_dist = stop_entry.profit_abs
stoploss_entry_dist_ratio = stop_entry.profit_ratio
@@ -271,7 +271,7 @@ class RPC:
profit_str = f'{NAN:.2%}'
else:
if trade.nr_of_successful_entries > 0:
profit = trade.calc_profit_combined(current_rate)
profit = trade.calculate_profit(current_rate)
trade_profit = profit.profit_abs
profit_str = f'{profit.profit_ratio:.2%}'
else:
@@ -492,7 +492,7 @@ class RPC:
profit_ratio = NAN
profit_abs = NAN
else:
profit = trade.calc_profit_combined(trade.close_rate or current_rate)
profit = trade.calculate_profit(trade.close_rate or current_rate)
profit_ratio = profit.profit_ratio
profit_abs = profit.total_profit

View File

@@ -1158,7 +1158,7 @@ def test_calc_profit(
)
trade.open_order_id = 'something'
profit_res = trade.calc_profit_combined(close_rate)
profit_res = trade.calculate_profit(close_rate)
assert pytest.approx(profit_res.profit_abs) == round(profit, 8)
assert pytest.approx(profit_res.profit_ratio) == round(profit_ratio, 8)
val = trade.open_trade_value * (profit_res.profit_ratio) / lev
@@ -1170,7 +1170,7 @@ def test_calc_profit(
assert pytest.approx(trade.calc_profit(rate=close_rate)) == round(profit, 8)
assert pytest.approx(trade.calc_profit_ratio(rate=close_rate)) == round(profit_ratio, 8)
profit_res2 = trade.calc_profit_combined(close_rate, trade.amount, trade.open_rate)
profit_res2 = trade.calculate_profit(close_rate, trade.amount, trade.open_rate)
assert pytest.approx(profit_res2.profit_abs) == round(profit, 8)
assert pytest.approx(profit_res2.profit_ratio) == round(profit_ratio, 8)