Added checks for making sure stop_loss doesn't go below liquidation_price

This commit is contained in:
Sam Germain
2021-07-05 23:53:49 -06:00
parent 0bd71f87d0
commit 811cea288d
4 changed files with 46 additions and 6 deletions

View File

@@ -2132,7 +2132,8 @@ def limit_short_order_open():
'cost': 0.00106733393,
'remaining': 90.99181073,
'status': 'open',
'is_short': True
'is_short': True,
'liquidation_price': 0.00001300
}
@@ -2185,7 +2186,8 @@ def market_short_order():
'remaining': 0.0,
'status': 'closed',
'is_short': True,
'leverage': 3.0
'leverage': 3.0,
'liquidation_price': 0.00004300
}
@@ -2223,7 +2225,8 @@ def limit_leveraged_buy_order_open():
'remaining': 272.97543219,
'leverage': 3.0,
'status': 'open',
'exchange': 'binance'
'exchange': 'binance',
'liquidation_price': 0.00001000
}
@@ -2277,7 +2280,8 @@ def market_leveraged_buy_order():
'filled': 275.97543219,
'remaining': 0.0,
'status': 'closed',
'exchange': 'kraken'
'exchange': 'kraken',
'liquidation_price': 0.00004000
}

View File

@@ -428,6 +428,8 @@ def test_update_limit_order_lev(limit_leveraged_buy_order, limit_leveraged_sell_
assert trade.close_profit is None
assert trade.close_date is None
assert trade.borrowed == 0.0019999999998453998
assert trade.stop_loss == 0.00001000
assert trade.liquidation_price == 0.00001000
assert log_has_re(r"LIMIT_BUY has been fulfilled for Trade\(id=2, "
r"pair=ETH/BTC, amount=272.97543219, open_rate=0.00001099, open_since=.*\).",
caplog)
@@ -494,6 +496,8 @@ def test_update_market_order_lev(market_leveraged_buy_order, market_leveraged_se
assert trade.close_profit is None
assert trade.close_date is None
assert trade.interest_rate == 0.0005
assert trade.stop_loss == 0.00004000
assert trade.liquidation_price == 0.00004000
# TODO: Uncomment the next assert and make it work.
# The logger also has the exact same but there's some spacing in there
assert log_has_re(r"MARKET_BUY has been fulfilled for Trade\(id=1, "

View File

@@ -433,6 +433,8 @@ def test_update_with_binance_short(limit_short_order, limit_exit_short_order, fe
assert trade.close_date is None
assert trade.borrowed == 90.99181073
assert trade.is_short is True
assert trade.stop_loss == 0.00001300
assert trade.liquidation_price == 0.00001300
assert log_has_re(r"LIMIT_SELL has been fulfilled for Trade\(id=2, "
r"pair=ETH/BTC, amount=90.99181073, open_rate=0.00001173, open_since=.*\).",
caplog)
@@ -506,6 +508,8 @@ def test_update_market_order_short(
assert trade.close_profit is None
assert trade.close_date is None
assert trade.interest_rate == 0.0005
assert trade.stop_loss == 0.00004300
assert trade.liquidation_price == 0.00004300
# The logger also has the exact same but there's some spacing in there
assert log_has_re(r"MARKET_SELL has been fulfilled for Trade\(id=1, "
r"pair=ETH/BTC, amount=275.97543219, open_rate=0.00004173, open_since=.*\).",
@@ -670,7 +674,10 @@ def test_adjust_stop_loss_short(fee):
assert trade.initial_stop_loss == 1.05
assert trade.initial_stop_loss_pct == 0.05
assert trade.stop_loss_pct == 0.1
trade.liquidation_price == 1.03
trade.set_liquidation_price(0.63)
trade.adjust_stop_loss(0.59, -0.1)
assert trade.stop_loss == 0.63
assert trade.liquidation_price == 0.63
# TODO-mg: Do a test with a trade that has a liquidation price