Added short test_stoploss_reinitialization, it's slightly off and I don't know why

This commit is contained in:
Sam Germain 2021-06-28 05:40:53 -06:00
parent 25b7c7f43b
commit f4975db0d0

View File

@ -636,53 +636,29 @@ def test_adjust_stop_loss(fee):
assert trade.initial_stop_loss_pct == 0.05 assert trade.initial_stop_loss_pct == 0.05
# Get percent of profit with a custom rate (Higher than open rate) # Get percent of profit with a custom rate (Higher than open rate)
trade.adjust_stop_loss(0.7, 0.1) trade.adjust_stop_loss(0.7, 0.1)
# assert round(trade.stop_loss, 8) == 1.17 #TODO: What is this test? # assert round(trade.stop_loss, 8) == 1.17 #TODO-mg: What is this test?
assert trade.stop_loss_pct == 0.1 assert trade.stop_loss_pct == 0.1
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
# current rate lower again ... should not change # current rate lower again ... should not change
trade.adjust_stop_loss(0.8, -0.1) trade.adjust_stop_loss(0.8, -0.1)
# assert round(trade.stop_loss, 8) == 1.17 #TODO: What is this test? # assert round(trade.stop_loss, 8) == 1.17 #TODO-mg: What is this test?
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
# current rate higher... should raise stoploss # current rate higher... should raise stoploss
trade.adjust_stop_loss(0.6, -0.1) trade.adjust_stop_loss(0.6, -0.1)
# assert round(trade.stop_loss, 8) == 1.26 #TODO: What is this test? # assert round(trade.stop_loss, 8) == 1.26 #TODO-mg: What is this test?
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
# Initial is true but stop_loss set - so doesn't do anything # Initial is true but stop_loss set - so doesn't do anything
trade.adjust_stop_loss(0.3, -0.1, True) trade.adjust_stop_loss(0.3, -0.1, True)
# assert round(trade.stop_loss, 8) == 1.26 #TODO: What is this test? # assert round(trade.stop_loss, 8) == 1.26 #TODO-mg: What is this test?
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
# TODO-mg: Do a test with a trade that has a liquidation price
# def test_adjust_min_max_rates(fee): # TODO: I don't know how to do this test, but it should be tested for shorts
# trade = Trade(
# pair='ETH/BTC',
# stake_amount=0.001,
# amount=5,
# fee_open=fee.return_value,
# fee_close=fee.return_value,
# exchange='binance',
# open_rate=1,
# )
# trade.adjust_min_max_rates(trade.open_rate)
# assert trade.max_rate == 1
# assert trade.min_rate == 1
# # check min adjusted, max remained
# trade.adjust_min_max_rates(0.96)
# assert trade.max_rate == 1
# assert trade.min_rate == 0.96
# # check max adjusted, min remains
# trade.adjust_min_max_rates(1.05)
# assert trade.max_rate == 1.05
# assert trade.min_rate == 0.96
# # current rate "in the middle" - no adjustment
# trade.adjust_min_max_rates(1.03)
# assert trade.max_rate == 1.05
# assert trade.min_rate == 0.96
# @pytest.mark.usefixtures("init_persistence") # @pytest.mark.usefixtures("init_persistence")
# @pytest.mark.parametrize('use_db', [True, False]) # @pytest.mark.parametrize('use_db', [True, False])
# def test_get_open(fee, use_db): # def test_get_open(fee, use_db):
@ -692,56 +668,58 @@ def test_adjust_stop_loss(fee):
# assert len(Trade.get_open_trades()) == 4 # assert len(Trade.get_open_trades()) == 4
# Trade.use_db = True # Trade.use_db = True
# def test_stoploss_reinitialization(default_conf, fee):
# init_db(default_conf['db_url']) def test_stoploss_reinitialization(default_conf, fee):
# trade = Trade( init_db(default_conf['db_url'])
# pair='ETH/BTC', trade = Trade(
# stake_amount=0.001, pair='ETH/BTC',
# fee_open=fee.return_value, stake_amount=0.001,
# open_date=arrow.utcnow().shift(hours=-2).datetime, fee_open=fee.return_value,
# amount=10, open_date=arrow.utcnow().shift(hours=-2).datetime,
# fee_close=fee.return_value, amount=10,
# exchange='binance', fee_close=fee.return_value,
# open_rate=1, exchange='binance',
# max_rate=1, open_rate=1,
# ) max_rate=1,
# trade.adjust_stop_loss(trade.open_rate, 0.05, True) is_short=True
# assert trade.stop_loss == 0.95 )
# assert trade.stop_loss_pct == -0.05 trade.adjust_stop_loss(trade.open_rate, -0.05, True)
# assert trade.initial_stop_loss == 0.95 assert trade.stop_loss == 1.05
# assert trade.initial_stop_loss_pct == -0.05 assert trade.stop_loss_pct == 0.05
# Trade.query.session.add(trade) assert trade.initial_stop_loss == 1.05
# # Lower stoploss assert trade.initial_stop_loss_pct == 0.05
# Trade.stoploss_reinitialization(0.06) Trade.query.session.add(trade)
# trades = Trade.get_open_trades() # Lower stoploss
# assert len(trades) == 1 Trade.stoploss_reinitialization(-0.06)
# trade_adj = trades[0] trades = Trade.get_open_trades()
# assert trade_adj.stop_loss == 0.94 assert len(trades) == 1
# assert trade_adj.stop_loss_pct == -0.06 trade_adj = trades[0]
# assert trade_adj.initial_stop_loss == 0.94 assert trade_adj.stop_loss == 1.06
# assert trade_adj.initial_stop_loss_pct == -0.06 assert trade_adj.stop_loss_pct == 0.06
# # Raise stoploss assert trade_adj.initial_stop_loss == 1.06
# Trade.stoploss_reinitialization(0.04) assert trade_adj.initial_stop_loss_pct == 0.06
# trades = Trade.get_open_trades() # Raise stoploss
# assert len(trades) == 1 Trade.stoploss_reinitialization(-0.04)
# trade_adj = trades[0] trades = Trade.get_open_trades()
# assert trade_adj.stop_loss == 0.96 assert len(trades) == 1
# assert trade_adj.stop_loss_pct == -0.04 trade_adj = trades[0]
# assert trade_adj.initial_stop_loss == 0.96 assert trade_adj.stop_loss == 1.04
# assert trade_adj.initial_stop_loss_pct == -0.04 assert trade_adj.stop_loss_pct == 0.04
# # Trailing stoploss (move stoplos up a bit) assert trade_adj.initial_stop_loss == 1.04
# trade.adjust_stop_loss(1.02, 0.04) assert trade_adj.initial_stop_loss_pct == 0.04
# assert trade_adj.stop_loss == 0.9792 # Trailing stoploss (move stoplos up a bit)
# assert trade_adj.initial_stop_loss == 0.96 trade.adjust_stop_loss(0.98, -0.04)
# Trade.stoploss_reinitialization(0.04) assert trade_adj.stop_loss == 1.0208
# trades = Trade.get_open_trades() assert trade_adj.initial_stop_loss == 1.04
# assert len(trades) == 1 Trade.stoploss_reinitialization(-0.04)
# trade_adj = trades[0] trades = Trade.get_open_trades()
# # Stoploss should not change in this case. assert len(trades) == 1
# assert trade_adj.stop_loss == 0.9792 trade_adj = trades[0]
# assert trade_adj.stop_loss_pct == -0.04 # Stoploss should not change in this case.
# assert trade_adj.initial_stop_loss == 0.96 assert trade_adj.stop_loss == 1.0208
# assert trade_adj.initial_stop_loss_pct == -0.04 assert trade_adj.stop_loss_pct == 0.04
assert trade_adj.initial_stop_loss == 1.04
assert trade_adj.initial_stop_loss_pct == 0.04
# @pytest.mark.usefixtures("init_persistence") # @pytest.mark.usefixtures("init_persistence")
# @pytest.mark.parametrize('use_db', [True, False]) # @pytest.mark.parametrize('use_db', [True, False])