Changed liquidation_price to isolated_liq
This commit is contained in:
parent
1918304c5b
commit
4fcae0d927
@ -50,7 +50,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
|
|||||||
|
|
||||||
leverage = get_column_def(cols, 'leverage', '1.0')
|
leverage = get_column_def(cols, 'leverage', '1.0')
|
||||||
interest_rate = get_column_def(cols, 'interest_rate', '0.0')
|
interest_rate = get_column_def(cols, 'interest_rate', '0.0')
|
||||||
liquidation_price = get_column_def(cols, 'liquidation_price', 'null')
|
isolated_liq = get_column_def(cols, 'isolated_liq', 'null')
|
||||||
# sqlite does not support literals for booleans
|
# sqlite does not support literals for booleans
|
||||||
is_short = get_column_def(cols, 'is_short', '0')
|
is_short = get_column_def(cols, 'is_short', '0')
|
||||||
interest_mode = get_column_def(cols, 'interest_mode', 'null')
|
interest_mode = get_column_def(cols, 'interest_mode', 'null')
|
||||||
@ -90,7 +90,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
|
|||||||
stoploss_order_id, stoploss_last_update,
|
stoploss_order_id, stoploss_last_update,
|
||||||
max_rate, min_rate, sell_reason, sell_order_status, strategy,
|
max_rate, min_rate, sell_reason, sell_order_status, strategy,
|
||||||
timeframe, open_trade_value, close_profit_abs,
|
timeframe, open_trade_value, close_profit_abs,
|
||||||
leverage, interest_rate, liquidation_price, is_short, interest_mode
|
leverage, interest_rate, isolated_liq, is_short, interest_mode
|
||||||
)
|
)
|
||||||
select id, lower(exchange),
|
select id, lower(exchange),
|
||||||
case
|
case
|
||||||
@ -115,7 +115,7 @@ def migrate_trades_table(decl_base, inspector, engine, table_back_name: str, col
|
|||||||
{strategy} strategy, {timeframe} timeframe,
|
{strategy} strategy, {timeframe} timeframe,
|
||||||
{open_trade_value} open_trade_value, {close_profit_abs} close_profit_abs,
|
{open_trade_value} open_trade_value, {close_profit_abs} close_profit_abs,
|
||||||
{leverage} leverage, {interest_rate} interest_rate,
|
{leverage} leverage, {interest_rate} interest_rate,
|
||||||
{liquidation_price} liquidation_price, {is_short} is_short,
|
{isolated_liq} isolated_liq, {is_short} is_short,
|
||||||
{interest_mode} interest_mode
|
{interest_mode} interest_mode
|
||||||
from {table_back_name}
|
from {table_back_name}
|
||||||
"""))
|
"""))
|
||||||
|
@ -265,7 +265,7 @@ class LocalTrade():
|
|||||||
|
|
||||||
# Margin trading properties
|
# Margin trading properties
|
||||||
interest_rate: float = 0.0
|
interest_rate: float = 0.0
|
||||||
liquidation_price: Optional[float] = None
|
isolated_liq: Optional[float] = None
|
||||||
is_short: bool = False
|
is_short: bool = False
|
||||||
leverage: float = 1.0
|
leverage: float = 1.0
|
||||||
interest_mode: InterestMode = InterestMode.NONE
|
interest_mode: InterestMode = InterestMode.NONE
|
||||||
@ -314,8 +314,8 @@ class LocalTrade():
|
|||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
for key in kwargs:
|
for key in kwargs:
|
||||||
setattr(self, key, kwargs[key])
|
setattr(self, key, kwargs[key])
|
||||||
if self.liquidation_price:
|
if self.isolated_liq:
|
||||||
self.set_liquidation_price(self.liquidation_price)
|
self.set_isolated_liq(self.isolated_liq)
|
||||||
self.recalc_open_trade_value()
|
self.recalc_open_trade_value()
|
||||||
|
|
||||||
def set_stop_loss(self, stop_loss: float):
|
def set_stop_loss(self, stop_loss: float):
|
||||||
@ -323,11 +323,11 @@ class LocalTrade():
|
|||||||
Method you should use to set self.stop_loss.
|
Method you should use to set self.stop_loss.
|
||||||
Assures stop_loss is not passed the liquidation price
|
Assures stop_loss is not passed the liquidation price
|
||||||
"""
|
"""
|
||||||
if self.liquidation_price is not None:
|
if self.isolated_liq is not None:
|
||||||
if self.is_short:
|
if self.is_short:
|
||||||
sl = min(stop_loss, self.liquidation_price)
|
sl = min(stop_loss, self.isolated_liq)
|
||||||
else:
|
else:
|
||||||
sl = max(stop_loss, self.liquidation_price)
|
sl = max(stop_loss, self.isolated_liq)
|
||||||
else:
|
else:
|
||||||
sl = stop_loss
|
sl = stop_loss
|
||||||
|
|
||||||
@ -335,21 +335,21 @@ class LocalTrade():
|
|||||||
self.initial_stop_loss = sl
|
self.initial_stop_loss = sl
|
||||||
self.stop_loss = sl
|
self.stop_loss = sl
|
||||||
|
|
||||||
def set_liquidation_price(self, liquidation_price: float):
|
def set_isolated_liq(self, isolated_liq: float):
|
||||||
"""
|
"""
|
||||||
Method you should use to set self.liquidation price.
|
Method you should use to set self.liquidation price.
|
||||||
Assures stop_loss is not passed the liquidation price
|
Assures stop_loss is not passed the liquidation price
|
||||||
"""
|
"""
|
||||||
if self.stop_loss is not None:
|
if self.stop_loss is not None:
|
||||||
if self.is_short:
|
if self.is_short:
|
||||||
self.stop_loss = min(self.stop_loss, liquidation_price)
|
self.stop_loss = min(self.stop_loss, isolated_liq)
|
||||||
else:
|
else:
|
||||||
self.stop_loss = max(self.stop_loss, liquidation_price)
|
self.stop_loss = max(self.stop_loss, isolated_liq)
|
||||||
else:
|
else:
|
||||||
self.initial_stop_loss = liquidation_price
|
self.initial_stop_loss = isolated_liq
|
||||||
self.stop_loss = liquidation_price
|
self.stop_loss = isolated_liq
|
||||||
|
|
||||||
self.liquidation_price = liquidation_price
|
self.isolated_liq = isolated_liq
|
||||||
|
|
||||||
def set_is_short(self, is_short: bool):
|
def set_is_short(self, is_short: bool):
|
||||||
self.is_short = is_short
|
self.is_short = is_short
|
||||||
@ -425,7 +425,7 @@ class LocalTrade():
|
|||||||
|
|
||||||
'leverage': self.leverage,
|
'leverage': self.leverage,
|
||||||
'interest_rate': self.interest_rate,
|
'interest_rate': self.interest_rate,
|
||||||
'liquidation_price': self.liquidation_price,
|
'isolated_liq': self.isolated_liq,
|
||||||
'is_short': self.is_short,
|
'is_short': self.is_short,
|
||||||
|
|
||||||
'open_order_id': self.open_order_id,
|
'open_order_id': self.open_order_id,
|
||||||
@ -472,13 +472,13 @@ class LocalTrade():
|
|||||||
if self.is_short:
|
if self.is_short:
|
||||||
new_loss = float(current_price * (1 + abs(stoploss)))
|
new_loss = float(current_price * (1 + abs(stoploss)))
|
||||||
# If trading on margin, don't set the stoploss below the liquidation price
|
# If trading on margin, don't set the stoploss below the liquidation price
|
||||||
if self.liquidation_price:
|
if self.isolated_liq:
|
||||||
new_loss = min(self.liquidation_price, new_loss)
|
new_loss = min(self.isolated_liq, new_loss)
|
||||||
else:
|
else:
|
||||||
new_loss = float(current_price * (1 - abs(stoploss)))
|
new_loss = float(current_price * (1 - abs(stoploss)))
|
||||||
# If trading on margin, don't set the stoploss below the liquidation price
|
# If trading on margin, don't set the stoploss below the liquidation price
|
||||||
if self.liquidation_price:
|
if self.isolated_liq:
|
||||||
new_loss = max(self.liquidation_price, new_loss)
|
new_loss = max(self.isolated_liq, new_loss)
|
||||||
|
|
||||||
# no stop loss assigned yet
|
# no stop loss assigned yet
|
||||||
if not self.stop_loss:
|
if not self.stop_loss:
|
||||||
@ -905,7 +905,7 @@ class Trade(_DECL_BASE, LocalTrade):
|
|||||||
# Margin trading properties
|
# Margin trading properties
|
||||||
leverage = Column(Float, nullable=True, default=1.0)
|
leverage = Column(Float, nullable=True, default=1.0)
|
||||||
interest_rate = Column(Float, nullable=False, default=0.0)
|
interest_rate = Column(Float, nullable=False, default=0.0)
|
||||||
liquidation_price = Column(Float, nullable=True)
|
isolated_liq = Column(Float, nullable=True)
|
||||||
is_short = Column(Boolean, nullable=False, default=False)
|
is_short = Column(Boolean, nullable=False, default=False)
|
||||||
interest_mode = Column(Enum(InterestMode), nullable=True)
|
interest_mode = Column(Enum(InterestMode), nullable=True)
|
||||||
# End of margin trading properties
|
# End of margin trading properties
|
||||||
|
@ -109,7 +109,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None:
|
|||||||
'exchange': 'binance',
|
'exchange': 'binance',
|
||||||
'leverage': 1.0,
|
'leverage': 1.0,
|
||||||
'interest_rate': 0.0,
|
'interest_rate': 0.0,
|
||||||
'liquidation_price': None,
|
'isolated_liq': None,
|
||||||
'is_short': False,
|
'is_short': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +179,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None:
|
|||||||
'exchange': 'binance',
|
'exchange': 'binance',
|
||||||
'leverage': 1.0,
|
'leverage': 1.0,
|
||||||
'interest_rate': 0.0,
|
'interest_rate': 0.0,
|
||||||
'liquidation_price': None,
|
'isolated_liq': None,
|
||||||
'is_short': False,
|
'is_short': False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ def test_is_opening_closing_trade(fee):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.usefixtures("init_persistence")
|
@pytest.mark.usefixtures("init_persistence")
|
||||||
def test_set_stop_loss_liquidation_price(fee):
|
def test_set_stop_loss_isolated_liq(fee):
|
||||||
trade = Trade(
|
trade = Trade(
|
||||||
id=2,
|
id=2,
|
||||||
pair='ETH/BTC',
|
pair='ETH/BTC',
|
||||||
@ -127,36 +127,36 @@ def test_set_stop_loss_liquidation_price(fee):
|
|||||||
is_short=False,
|
is_short=False,
|
||||||
leverage=2.0
|
leverage=2.0
|
||||||
)
|
)
|
||||||
trade.set_liquidation_price(0.09)
|
trade.set_isolated_liq(0.09)
|
||||||
assert trade.liquidation_price == 0.09
|
assert trade.isolated_liq == 0.09
|
||||||
assert trade.stop_loss == 0.09
|
assert trade.stop_loss == 0.09
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_stop_loss(0.1)
|
trade.set_stop_loss(0.1)
|
||||||
assert trade.liquidation_price == 0.09
|
assert trade.isolated_liq == 0.09
|
||||||
assert trade.stop_loss == 0.1
|
assert trade.stop_loss == 0.1
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_liquidation_price(0.08)
|
trade.set_isolated_liq(0.08)
|
||||||
assert trade.liquidation_price == 0.08
|
assert trade.isolated_liq == 0.08
|
||||||
assert trade.stop_loss == 0.1
|
assert trade.stop_loss == 0.1
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_liquidation_price(0.11)
|
trade.set_isolated_liq(0.11)
|
||||||
assert trade.liquidation_price == 0.11
|
assert trade.isolated_liq == 0.11
|
||||||
assert trade.stop_loss == 0.11
|
assert trade.stop_loss == 0.11
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_stop_loss(0.1)
|
trade.set_stop_loss(0.1)
|
||||||
assert trade.liquidation_price == 0.11
|
assert trade.isolated_liq == 0.11
|
||||||
assert trade.stop_loss == 0.11
|
assert trade.stop_loss == 0.11
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.stop_loss = None
|
trade.stop_loss = None
|
||||||
trade.liquidation_price = None
|
trade.isolated_liq = None
|
||||||
trade.initial_stop_loss = None
|
trade.initial_stop_loss = None
|
||||||
trade.set_stop_loss(0.07)
|
trade.set_stop_loss(0.07)
|
||||||
assert trade.liquidation_price is None
|
assert trade.isolated_liq is None
|
||||||
assert trade.stop_loss == 0.07
|
assert trade.stop_loss == 0.07
|
||||||
assert trade.initial_stop_loss == 0.07
|
assert trade.initial_stop_loss == 0.07
|
||||||
|
|
||||||
@ -164,28 +164,28 @@ def test_set_stop_loss_liquidation_price(fee):
|
|||||||
trade.stop_loss = None
|
trade.stop_loss = None
|
||||||
trade.initial_stop_loss = None
|
trade.initial_stop_loss = None
|
||||||
|
|
||||||
trade.set_liquidation_price(0.09)
|
trade.set_isolated_liq(0.09)
|
||||||
assert trade.liquidation_price == 0.09
|
assert trade.isolated_liq == 0.09
|
||||||
assert trade.stop_loss == 0.09
|
assert trade.stop_loss == 0.09
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_stop_loss(0.08)
|
trade.set_stop_loss(0.08)
|
||||||
assert trade.liquidation_price == 0.09
|
assert trade.isolated_liq == 0.09
|
||||||
assert trade.stop_loss == 0.08
|
assert trade.stop_loss == 0.08
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_liquidation_price(0.1)
|
trade.set_isolated_liq(0.1)
|
||||||
assert trade.liquidation_price == 0.1
|
assert trade.isolated_liq == 0.1
|
||||||
assert trade.stop_loss == 0.08
|
assert trade.stop_loss == 0.08
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_liquidation_price(0.07)
|
trade.set_isolated_liq(0.07)
|
||||||
assert trade.liquidation_price == 0.07
|
assert trade.isolated_liq == 0.07
|
||||||
assert trade.stop_loss == 0.07
|
assert trade.stop_loss == 0.07
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
trade.set_stop_loss(0.1)
|
trade.set_stop_loss(0.1)
|
||||||
assert trade.liquidation_price == 0.07
|
assert trade.isolated_liq == 0.07
|
||||||
assert trade.stop_loss == 0.07
|
assert trade.stop_loss == 0.07
|
||||||
assert trade.initial_stop_loss == 0.09
|
assert trade.initial_stop_loss == 0.09
|
||||||
|
|
||||||
@ -1616,10 +1616,10 @@ def test_adjust_stop_loss_short(fee):
|
|||||||
assert trade.initial_stop_loss == 1.05
|
assert trade.initial_stop_loss == 1.05
|
||||||
assert trade.initial_stop_loss_pct == 0.05
|
assert trade.initial_stop_loss_pct == 0.05
|
||||||
assert trade.stop_loss_pct == 0.1
|
assert trade.stop_loss_pct == 0.1
|
||||||
trade.set_liquidation_price(0.63)
|
trade.set_isolated_liq(0.63)
|
||||||
trade.adjust_stop_loss(0.59, -0.1)
|
trade.adjust_stop_loss(0.59, -0.1)
|
||||||
assert trade.stop_loss == 0.63
|
assert trade.stop_loss == 0.63
|
||||||
assert trade.liquidation_price == 0.63
|
assert trade.isolated_liq == 0.63
|
||||||
|
|
||||||
|
|
||||||
def test_adjust_min_max_rates(fee):
|
def test_adjust_min_max_rates(fee):
|
||||||
@ -1744,7 +1744,7 @@ def test_to_json(default_conf, fee):
|
|||||||
'exchange': 'binance',
|
'exchange': 'binance',
|
||||||
'leverage': None,
|
'leverage': None,
|
||||||
'interest_rate': None,
|
'interest_rate': None,
|
||||||
'liquidation_price': None,
|
'isolated_liq': None,
|
||||||
'is_short': None,
|
'is_short': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1813,7 +1813,7 @@ def test_to_json(default_conf, fee):
|
|||||||
'exchange': 'binance',
|
'exchange': 'binance',
|
||||||
'leverage': None,
|
'leverage': None,
|
||||||
'interest_rate': None,
|
'interest_rate': None,
|
||||||
'liquidation_price': None,
|
'isolated_liq': None,
|
||||||
'is_short': None,
|
'is_short': None,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1932,7 +1932,7 @@ def test_stoploss_reinitialization_short(default_conf, fee):
|
|||||||
assert trade_adj.initial_stop_loss == 1.04
|
assert trade_adj.initial_stop_loss == 1.04
|
||||||
assert trade_adj.initial_stop_loss_pct == 0.04
|
assert trade_adj.initial_stop_loss_pct == 0.04
|
||||||
# Stoploss can't go above liquidation price
|
# Stoploss can't go above liquidation price
|
||||||
trade_adj.set_liquidation_price(1.0)
|
trade_adj.set_isolated_liq(1.0)
|
||||||
trade.adjust_stop_loss(0.97, -0.04)
|
trade.adjust_stop_loss(0.97, -0.04)
|
||||||
assert trade_adj.stop_loss == 1.0
|
assert trade_adj.stop_loss == 1.0
|
||||||
assert trade_adj.stop_loss == 1.0
|
assert trade_adj.stop_loss == 1.0
|
||||||
|
Loading…
Reference in New Issue
Block a user