Merge pull request #6425 from samgermain/stake-amount
leverage in trade.stake_amount calculation
This commit is contained in:
commit
c3c815e794
@ -1291,8 +1291,7 @@ class FreqtradeBot(LoggingMixin):
|
|||||||
# * Check edge cases, we don't want to make leverage > 1.0 if we don't have to
|
# * Check edge cases, we don't want to make leverage > 1.0 if we don't have to
|
||||||
# * (for leverage modes which aren't isolated futures)
|
# * (for leverage modes which aren't isolated futures)
|
||||||
|
|
||||||
# TODO-lev: The below calculation needs to include leverage ...
|
trade.stake_amount = trade.amount * trade.open_rate / trade.leverage
|
||||||
trade.stake_amount = trade.amount * trade.open_rate
|
|
||||||
self.update_trade_state(trade, trade.open_order_id, corder)
|
self.update_trade_state(trade, trade.open_order_id, corder)
|
||||||
|
|
||||||
trade.open_order_id = None
|
trade.open_order_id = None
|
||||||
|
@ -2573,11 +2573,13 @@ def test_check_handle_cancelled_sell(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("is_short", [False, True])
|
@pytest.mark.parametrize("is_short", [False, True])
|
||||||
|
@pytest.mark.parametrize("leverage", [1, 3, 5, 10])
|
||||||
def test_check_handle_timedout_partial(
|
def test_check_handle_timedout_partial(
|
||||||
default_conf_usdt, ticker_usdt, limit_buy_order_old_partial, is_short,
|
default_conf_usdt, ticker_usdt, limit_buy_order_old_partial, is_short, leverage,
|
||||||
open_trade, mocker
|
open_trade, mocker
|
||||||
) -> None:
|
) -> None:
|
||||||
rpc_mock = patch_RPCManager(mocker)
|
rpc_mock = patch_RPCManager(mocker)
|
||||||
|
open_trade.leverage = leverage
|
||||||
limit_buy_order_old_partial['id'] = open_trade.open_order_id
|
limit_buy_order_old_partial['id'] = open_trade.open_order_id
|
||||||
limit_buy_canceled = deepcopy(limit_buy_order_old_partial)
|
limit_buy_canceled = deepcopy(limit_buy_order_old_partial)
|
||||||
limit_buy_canceled['status'] = 'canceled'
|
limit_buy_canceled['status'] = 'canceled'
|
||||||
@ -2591,7 +2593,7 @@ def test_check_handle_timedout_partial(
|
|||||||
cancel_order_with_result=cancel_order_mock
|
cancel_order_with_result=cancel_order_mock
|
||||||
)
|
)
|
||||||
freqtrade = FreqtradeBot(default_conf_usdt)
|
freqtrade = FreqtradeBot(default_conf_usdt)
|
||||||
|
prior_stake = open_trade.stake_amount
|
||||||
Trade.query.session.add(open_trade)
|
Trade.query.session.add(open_trade)
|
||||||
|
|
||||||
# check it does cancel buy orders over the time limit
|
# check it does cancel buy orders over the time limit
|
||||||
@ -2602,7 +2604,8 @@ def test_check_handle_timedout_partial(
|
|||||||
trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all()
|
trades = Trade.query.filter(Trade.open_order_id.is_(open_trade.open_order_id)).all()
|
||||||
assert len(trades) == 1
|
assert len(trades) == 1
|
||||||
assert trades[0].amount == 23.0
|
assert trades[0].amount == 23.0
|
||||||
assert trades[0].stake_amount == open_trade.open_rate * trades[0].amount
|
assert trades[0].stake_amount == open_trade.open_rate * trades[0].amount / leverage
|
||||||
|
assert trades[0].stake_amount != prior_stake
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("is_short", [False, True])
|
@pytest.mark.parametrize("is_short", [False, True])
|
||||||
|
Loading…
Reference in New Issue
Block a user