fix taker stake amount with leverage
This commit is contained in:
parent
a64ca541a2
commit
f01c9cd28c
@ -661,18 +661,15 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
self.exchange.name, order['filled'], order['amount'],
|
self.exchange.name, order['filled'], order['amount'],
|
||||||
order['remaining']
|
order['remaining']
|
||||||
)
|
)
|
||||||
stake_amount = order['cost']
|
|
||||||
amount = safe_value_fallback(order, 'filled', 'amount')
|
amount = safe_value_fallback(order, 'filled', 'amount')
|
||||||
enter_limit_filled_price = safe_value_fallback(order, 'average', 'price')
|
enter_limit_filled_price = safe_value_fallback(order, 'average', 'price')
|
||||||
|
stake_amount = amount * enter_limit_filled_price / leverage
|
||||||
|
|
||||||
# in case of FOK the order may be filled immediately and fully
|
# in case of FOK the order may be filled immediately and fully
|
||||||
elif order_status == 'closed':
|
elif order_status == 'closed':
|
||||||
# TODO-lev: Evaluate this. Why is setting stake_amount here necessary?
|
|
||||||
# it should never change in theory - and in case of leveraged orders,
|
|
||||||
# may be the leveraged amount.
|
|
||||||
stake_amount = order['cost']
|
|
||||||
amount = safe_value_fallback(order, 'filled', 'amount')
|
amount = safe_value_fallback(order, 'filled', 'amount')
|
||||||
enter_limit_filled_price = safe_value_fallback(order, 'average', 'price')
|
enter_limit_filled_price = safe_value_fallback(order, 'average', 'price')
|
||||||
|
stake_amount = amount * enter_limit_filled_price / leverage
|
||||||
|
|
||||||
# TODO: this might be unnecessary, as we're calling it in update_trade_state.
|
# TODO: this might be unnecessary, as we're calling it in update_trade_state.
|
||||||
isolated_liq = self.exchange.get_liquidation_price(
|
isolated_liq = self.exchange.get_liquidation_price(
|
||||||
|
@ -842,7 +842,7 @@ def test_execute_entry(mocker, default_conf_usdt, fee, limit_order,
|
|||||||
assert trade
|
assert trade
|
||||||
assert trade.open_order_id is None
|
assert trade.open_order_id is None
|
||||||
assert trade.open_rate == 10
|
assert trade.open_rate == 10
|
||||||
assert trade.stake_amount == 100
|
assert trade.stake_amount == round(order['price'] * order['filled'] / leverage, 8)
|
||||||
|
|
||||||
# In case of rejected or expired order and partially filled
|
# In case of rejected or expired order and partially filled
|
||||||
order['status'] = 'expired'
|
order['status'] = 'expired'
|
||||||
@ -860,7 +860,7 @@ def test_execute_entry(mocker, default_conf_usdt, fee, limit_order,
|
|||||||
assert trade
|
assert trade
|
||||||
assert trade.open_order_id == '555'
|
assert trade.open_order_id == '555'
|
||||||
assert trade.open_rate == 0.5
|
assert trade.open_rate == 0.5
|
||||||
assert trade.stake_amount == 15.0
|
assert trade.stake_amount == round(order['price'] * order['filled'] / leverage, 8)
|
||||||
|
|
||||||
# Test with custom stake
|
# Test with custom stake
|
||||||
order['status'] = 'open'
|
order['status'] = 'open'
|
||||||
|
Loading…
Reference in New Issue
Block a user