Support partially cancelled orders for fee calculation

This commit is contained in:
Matthias
2020-05-01 20:17:22 +02:00
parent 737fc6d198
commit 021e2b58ca
5 changed files with 7 additions and 7 deletions

View File

@@ -1095,7 +1095,8 @@ class Exchange:
# Calculate fee based on order details
if fee_curr in self.get_pair_base_currency(order['symbol']):
# Base currency - divide by amount
return round(order['fee']['cost'] / order['amount'], 8)
return round(
order['fee']['cost'] / safe_value_fallback(order, order, 'filled', 'amount'), 8)
elif fee_curr in self.get_pair_quote_currency(order['symbol']):
# Quote currency - divide by cost
return round(order['fee']['cost'] / order['cost'], 8)

View File

@@ -1144,8 +1144,6 @@ class FreqtradeBot:
if not isclose(order['amount'], new_amount, abs_tol=constants.MATH_CLOSE_PREC):
order['amount'] = new_amount
order.pop('filled', None)
# Fee was applied, so set to 0
trade.fee_open = 0
trade.recalc_open_trade_price()
except DependencyException as exception:
logger.warning("Could not update trade amount: %s", exception)

View File

@@ -377,7 +377,7 @@ class Trade(_DECL_BASE):
)
def update_fee(self, fee_cost: float, fee_currency: Optional[str], fee_rate: Optional[float],
side: str) -> None:
side) -> None:
"""
Update Fee parameters. Only acts once per side
"""