use calc_profit_combined
This commit is contained in:
@@ -1731,14 +1731,12 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
amount = order.safe_filled if fill else order.safe_amount
|
amount = order.safe_filled if fill else order.safe_amount
|
||||||
order_rate: float = order.safe_price
|
order_rate: float = order.safe_price
|
||||||
|
|
||||||
profit = trade.calc_profit(rate=order_rate, amount=amount, open_rate=trade.open_rate)
|
profit = trade.calc_profit_combined(order_rate, amount, trade.open_rate)
|
||||||
profit_ratio = trade.calc_profit_ratio(order_rate, amount, trade.open_rate)
|
|
||||||
else:
|
else:
|
||||||
order_rate = trade.safe_close_rate
|
order_rate = trade.safe_close_rate
|
||||||
profit = trade.calc_profit(rate=order_rate) + (0.0 if fill else trade.realized_profit)
|
profit = trade.calc_profit_combined(rate=order_rate)
|
||||||
profit_ratio = trade.calc_profit_ratio(order_rate)
|
|
||||||
amount = trade.amount
|
amount = trade.amount
|
||||||
gain = "profit" if profit_ratio > 0 else "loss"
|
gain = "profit" if profit.profit_ratio > 0 else "loss"
|
||||||
|
|
||||||
msg: RPCSellMsg = {
|
msg: RPCSellMsg = {
|
||||||
'type': (RPCMessageType.EXIT_FILL if fill
|
'type': (RPCMessageType.EXIT_FILL if fill
|
||||||
@@ -1756,8 +1754,8 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
'open_rate': trade.open_rate,
|
'open_rate': trade.open_rate,
|
||||||
'close_rate': order_rate,
|
'close_rate': order_rate,
|
||||||
'current_rate': current_rate,
|
'current_rate': current_rate,
|
||||||
'profit_amount': profit,
|
'profit_amount': profit.profit_abs if fill else profit.total_profit,
|
||||||
'profit_ratio': profit_ratio,
|
'profit_ratio': profit.profit_ratio,
|
||||||
'buy_tag': trade.enter_tag,
|
'buy_tag': trade.enter_tag,
|
||||||
'enter_tag': trade.enter_tag,
|
'enter_tag': trade.enter_tag,
|
||||||
'sell_reason': trade.exit_reason, # Deprecated
|
'sell_reason': trade.exit_reason, # Deprecated
|
||||||
@@ -1789,11 +1787,10 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
order = self.order_obj_or_raise(order_id, order_or_none)
|
order = self.order_obj_or_raise(order_id, order_or_none)
|
||||||
|
|
||||||
profit_rate: float = trade.safe_close_rate
|
profit_rate: float = trade.safe_close_rate
|
||||||
profit_trade = trade.calc_profit(rate=profit_rate)
|
profit = trade.calc_profit_combined(rate=profit_rate)
|
||||||
current_rate = self.exchange.get_rate(
|
current_rate = self.exchange.get_rate(
|
||||||
trade.pair, side='exit', is_short=trade.is_short, refresh=False)
|
trade.pair, side='exit', is_short=trade.is_short, refresh=False)
|
||||||
profit_ratio = trade.calc_profit_ratio(profit_rate)
|
gain = "profit" if profit.profit_ratio > 0 else "loss"
|
||||||
gain = "profit" if profit_ratio > 0 else "loss"
|
|
||||||
|
|
||||||
msg: RPCSellCancelMsg = {
|
msg: RPCSellCancelMsg = {
|
||||||
'type': RPCMessageType.EXIT_CANCEL,
|
'type': RPCMessageType.EXIT_CANCEL,
|
||||||
@@ -1808,8 +1805,8 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
'amount': order.safe_amount_after_fee,
|
'amount': order.safe_amount_after_fee,
|
||||||
'open_rate': trade.open_rate,
|
'open_rate': trade.open_rate,
|
||||||
'current_rate': current_rate,
|
'current_rate': current_rate,
|
||||||
'profit_amount': profit_trade,
|
'profit_amount': profit.profit_abs,
|
||||||
'profit_ratio': profit_ratio,
|
'profit_ratio': profit.profit_ratio,
|
||||||
'buy_tag': trade.enter_tag,
|
'buy_tag': trade.enter_tag,
|
||||||
'enter_tag': trade.enter_tag,
|
'enter_tag': trade.enter_tag,
|
||||||
'sell_reason': trade.exit_reason, # Deprecated
|
'sell_reason': trade.exit_reason, # Deprecated
|
||||||
|
|||||||
@@ -999,7 +999,6 @@ class LocalTrade:
|
|||||||
avg_price = FtPrecise(0.0)
|
avg_price = FtPrecise(0.0)
|
||||||
close_profit = 0.0
|
close_profit = 0.0
|
||||||
close_profit_abs = 0.0
|
close_profit_abs = 0.0
|
||||||
profit = None
|
|
||||||
# Reset funding fees
|
# Reset funding fees
|
||||||
self.funding_fees = 0.0
|
self.funding_fees = 0.0
|
||||||
funding_fees = 0.0
|
funding_fees = 0.0
|
||||||
@@ -1029,11 +1028,9 @@ class LocalTrade:
|
|||||||
|
|
||||||
exit_rate = o.safe_price
|
exit_rate = o.safe_price
|
||||||
exit_amount = o.safe_amount_after_fee
|
exit_amount = o.safe_amount_after_fee
|
||||||
profit = self.calc_profit(rate=exit_rate, amount=exit_amount,
|
prof = self.calc_profit_combined(exit_rate, exit_amount, float(avg_price))
|
||||||
open_rate=float(avg_price))
|
close_profit_abs += prof.profit_abs
|
||||||
close_profit_abs += profit
|
close_profit = prof.profit_ratio
|
||||||
close_profit = self.calc_profit_ratio(
|
|
||||||
exit_rate, amount=exit_amount, open_rate=avg_price)
|
|
||||||
else:
|
else:
|
||||||
total_stake = total_stake + self._calc_open_trade_value(tmp_amount, price)
|
total_stake = total_stake + self._calc_open_trade_value(tmp_amount, price)
|
||||||
max_stake_amount += (tmp_amount * price)
|
max_stake_amount += (tmp_amount * price)
|
||||||
@@ -1043,7 +1040,7 @@ class LocalTrade:
|
|||||||
if close_profit:
|
if close_profit:
|
||||||
self.close_profit = close_profit
|
self.close_profit = close_profit
|
||||||
self.realized_profit = close_profit_abs
|
self.realized_profit = close_profit_abs
|
||||||
self.close_profit_abs = profit
|
self.close_profit_abs = prof.profit_abs
|
||||||
|
|
||||||
current_amount_tr = amount_to_contract_precision(
|
current_amount_tr = amount_to_contract_precision(
|
||||||
float(current_amount), self.amount_precision, self.precision_mode, self.contract_size)
|
float(current_amount), self.amount_precision, self.precision_mode, self.contract_size)
|
||||||
|
|||||||
Reference in New Issue
Block a user