Remove arrow from more tests
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
|
|
||||||
import arrow
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from freqtrade.persistence import PairLocks
|
from freqtrade.persistence import PairLocks
|
||||||
from freqtrade.persistence.models import PairLock
|
from freqtrade.persistence.models import PairLock
|
||||||
|
from freqtrade.util import dt_now
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('use_db', (False, True))
|
@pytest.mark.parametrize('use_db', (False, True))
|
||||||
@@ -20,20 +20,20 @@ def test_PairLocks(use_db):
|
|||||||
|
|
||||||
pair = 'ETH/BTC'
|
pair = 'ETH/BTC'
|
||||||
assert not PairLocks.is_pair_locked(pair)
|
assert not PairLocks.is_pair_locked(pair)
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime)
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4))
|
||||||
# ETH/BTC locked for 4 minutes (on both sides)
|
# ETH/BTC locked for 4 minutes (on both sides)
|
||||||
assert PairLocks.is_pair_locked(pair)
|
assert PairLocks.is_pair_locked(pair)
|
||||||
assert PairLocks.is_pair_locked(pair, side='long')
|
assert PairLocks.is_pair_locked(pair, side='long')
|
||||||
assert PairLocks.is_pair_locked(pair, side='short')
|
assert PairLocks.is_pair_locked(pair, side='short')
|
||||||
|
|
||||||
pair = 'BNB/BTC'
|
pair = 'BNB/BTC'
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime, side='long')
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4), side='long')
|
||||||
assert not PairLocks.is_pair_locked(pair)
|
assert not PairLocks.is_pair_locked(pair)
|
||||||
assert PairLocks.is_pair_locked(pair, side='long')
|
assert PairLocks.is_pair_locked(pair, side='long')
|
||||||
assert not PairLocks.is_pair_locked(pair, side='short')
|
assert not PairLocks.is_pair_locked(pair, side='short')
|
||||||
|
|
||||||
pair = 'BNB/USDT'
|
pair = 'BNB/USDT'
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime, side='short')
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4), side='short')
|
||||||
assert not PairLocks.is_pair_locked(pair)
|
assert not PairLocks.is_pair_locked(pair)
|
||||||
assert not PairLocks.is_pair_locked(pair, side='long')
|
assert not PairLocks.is_pair_locked(pair, side='long')
|
||||||
assert PairLocks.is_pair_locked(pair, side='short')
|
assert PairLocks.is_pair_locked(pair, side='short')
|
||||||
@@ -44,7 +44,7 @@ def test_PairLocks(use_db):
|
|||||||
# Unlocking a pair that's not locked should not raise an error
|
# Unlocking a pair that's not locked should not raise an error
|
||||||
PairLocks.unlock_pair(pair)
|
PairLocks.unlock_pair(pair)
|
||||||
|
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime)
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4))
|
||||||
assert PairLocks.is_pair_locked(pair)
|
assert PairLocks.is_pair_locked(pair)
|
||||||
|
|
||||||
# Get both locks from above
|
# Get both locks from above
|
||||||
@@ -113,20 +113,20 @@ def test_PairLocks_getlongestlock(use_db):
|
|||||||
|
|
||||||
pair = 'ETH/BTC'
|
pair = 'ETH/BTC'
|
||||||
assert not PairLocks.is_pair_locked(pair)
|
assert not PairLocks.is_pair_locked(pair)
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=4).datetime)
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=4))
|
||||||
# ETH/BTC locked for 4 minutes
|
# ETH/BTC locked for 4 minutes
|
||||||
assert PairLocks.is_pair_locked(pair)
|
assert PairLocks.is_pair_locked(pair)
|
||||||
lock = PairLocks.get_pair_longest_lock(pair)
|
lock = PairLocks.get_pair_longest_lock(pair)
|
||||||
|
|
||||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > arrow.utcnow().shift(minutes=3)
|
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=3)
|
||||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) < arrow.utcnow().shift(minutes=14)
|
assert lock.lock_end_time.replace(tzinfo=timezone.utc) < dt_now() + timedelta(minutes=14)
|
||||||
|
|
||||||
PairLocks.lock_pair(pair, arrow.utcnow().shift(minutes=15).datetime)
|
PairLocks.lock_pair(pair, dt_now() + timedelta(minutes=15))
|
||||||
assert PairLocks.is_pair_locked(pair)
|
assert PairLocks.is_pair_locked(pair)
|
||||||
|
|
||||||
lock = PairLocks.get_pair_longest_lock(pair)
|
lock = PairLocks.get_pair_longest_lock(pair)
|
||||||
# Must be longer than above
|
# Must be longer than above
|
||||||
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > arrow.utcnow().shift(minutes=14)
|
assert lock.lock_end_time.replace(tzinfo=timezone.utc) > dt_now() + timedelta(minutes=14)
|
||||||
|
|
||||||
PairLocks.reset_locks()
|
PairLocks.reset_locks()
|
||||||
PairLocks.use_db = True
|
PairLocks.use_db = True
|
||||||
@@ -143,8 +143,8 @@ def test_PairLocks_reason(use_db):
|
|||||||
|
|
||||||
assert PairLocks.use_db == use_db
|
assert PairLocks.use_db == use_db
|
||||||
|
|
||||||
PairLocks.lock_pair('XRP/USDT', arrow.utcnow().shift(minutes=4).datetime, 'TestLock1')
|
PairLocks.lock_pair('XRP/USDT', dt_now() + timedelta(minutes=4), 'TestLock1')
|
||||||
PairLocks.lock_pair('ETH/USDT', arrow.utcnow().shift(minutes=4).datetime, 'TestLock2')
|
PairLocks.lock_pair('ETH/USDT', dt_now() + timedelta(minutes=4), 'TestLock2')
|
||||||
|
|
||||||
assert PairLocks.is_pair_locked('XRP/USDT')
|
assert PairLocks.is_pair_locked('XRP/USDT')
|
||||||
assert PairLocks.is_pair_locked('ETH/USDT')
|
assert PairLocks.is_pair_locked('ETH/USDT')
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ from freqtrade.persistence.models import Order
|
|||||||
from freqtrade.rpc import RPC
|
from freqtrade.rpc import RPC
|
||||||
from freqtrade.rpc.rpc import RPCException
|
from freqtrade.rpc.rpc import RPCException
|
||||||
from freqtrade.rpc.telegram import Telegram, authorized_only
|
from freqtrade.rpc.telegram import Telegram, authorized_only
|
||||||
|
from freqtrade.util.datetime_helpers import dt_now
|
||||||
from tests.conftest import (CURRENT_TEST_STRATEGY, EXMS, create_mock_trades,
|
from tests.conftest import (CURRENT_TEST_STRATEGY, EXMS, create_mock_trades,
|
||||||
create_mock_trades_usdt, get_patched_freqtradebot, log_has, log_has_re,
|
create_mock_trades_usdt, get_patched_freqtradebot, log_has, log_has_re,
|
||||||
patch_exchange, patch_get_signal, patch_whitelist)
|
patch_exchange, patch_get_signal, patch_whitelist)
|
||||||
@@ -1518,8 +1519,8 @@ async def test_telegram_lock_handle(default_conf, update, ticker, fee, mocker) -
|
|||||||
|
|
||||||
msg_mock.reset_mock()
|
msg_mock.reset_mock()
|
||||||
|
|
||||||
PairLocks.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=4).datetime, 'randreason')
|
PairLocks.lock_pair('ETH/BTC', dt_now() + timedelta(minutes=4), 'randreason')
|
||||||
PairLocks.lock_pair('XRP/BTC', arrow.utcnow().shift(minutes=20).datetime, 'deadbeef')
|
PairLocks.lock_pair('XRP/BTC', dt_now() + timedelta(minutes=20), 'deadbeef')
|
||||||
|
|
||||||
await telegram._locks(update=update, context=MagicMock())
|
await telegram._locks(update=update, context=MagicMock())
|
||||||
|
|
||||||
@@ -1898,7 +1899,7 @@ def test_send_msg_enter_notification(default_conf, mocker, caplog, message_type,
|
|||||||
'current_rate': 1.099e-05,
|
'current_rate': 1.099e-05,
|
||||||
'amount': 1333.3333333333335,
|
'amount': 1333.3333333333335,
|
||||||
'analyzed_candle': {'open': 1.1, 'high': 2.2, 'low': 1.0, 'close': 1.5},
|
'analyzed_candle': {'open': 1.1, 'high': 2.2, 'low': 1.0, 'close': 1.5},
|
||||||
'open_date': arrow.utcnow().shift(hours=-1)
|
'open_date': dt_now() + timedelta(hours=-1)
|
||||||
}
|
}
|
||||||
telegram, freqtradebot, msg_mock = get_telegram_testobject(mocker, default_conf)
|
telegram, freqtradebot, msg_mock = get_telegram_testobject(mocker, default_conf)
|
||||||
|
|
||||||
@@ -1959,7 +1960,7 @@ def test_send_msg_protection_notification(default_conf, mocker, time_machine) ->
|
|||||||
|
|
||||||
telegram, _, msg_mock = get_telegram_testobject(mocker, default_conf)
|
telegram, _, msg_mock = get_telegram_testobject(mocker, default_conf)
|
||||||
time_machine.move_to("2021-09-01 05:00:00 +00:00")
|
time_machine.move_to("2021-09-01 05:00:00 +00:00")
|
||||||
lock = PairLocks.lock_pair('ETH/BTC', arrow.utcnow().shift(minutes=6).datetime, 'randreason')
|
lock = PairLocks.lock_pair('ETH/BTC', dt_now() + timedelta(minutes=6), 'randreason')
|
||||||
msg = {
|
msg = {
|
||||||
'type': RPCMessageType.PROTECTION_TRIGGER,
|
'type': RPCMessageType.PROTECTION_TRIGGER,
|
||||||
}
|
}
|
||||||
@@ -1974,7 +1975,7 @@ def test_send_msg_protection_notification(default_conf, mocker, time_machine) ->
|
|||||||
msg = {
|
msg = {
|
||||||
'type': RPCMessageType.PROTECTION_TRIGGER_GLOBAL,
|
'type': RPCMessageType.PROTECTION_TRIGGER_GLOBAL,
|
||||||
}
|
}
|
||||||
lock = PairLocks.lock_pair('*', arrow.utcnow().shift(minutes=100).datetime, 'randreason')
|
lock = PairLocks.lock_pair('*', dt_now() + timedelta(minutes=100), 'randreason')
|
||||||
msg.update(lock.to_json())
|
msg.update(lock.to_json())
|
||||||
telegram.send_msg(msg)
|
telegram.send_msg(msg)
|
||||||
assert (msg_mock.call_args[0][0] == "*Protection* triggered due to randreason. "
|
assert (msg_mock.call_args[0][0] == "*Protection* triggered due to randreason. "
|
||||||
@@ -2005,7 +2006,7 @@ def test_send_msg_entry_fill_notification(default_conf, mocker, message_type, en
|
|||||||
'fiat_currency': 'USD',
|
'fiat_currency': 'USD',
|
||||||
'open_rate': 1.099e-05,
|
'open_rate': 1.099e-05,
|
||||||
'amount': 1333.3333333333335,
|
'amount': 1333.3333333333335,
|
||||||
'open_date': arrow.utcnow().shift(hours=-1)
|
'open_date': dt_now() - timedelta(hours=1)
|
||||||
})
|
})
|
||||||
leverage_text = f'*Leverage:* `{leverage}`\n' if leverage != 1.0 else ''
|
leverage_text = f'*Leverage:* `{leverage}`\n' if leverage != 1.0 else ''
|
||||||
assert msg_mock.call_args[0][0] == (
|
assert msg_mock.call_args[0][0] == (
|
||||||
@@ -2032,7 +2033,7 @@ def test_send_msg_entry_fill_notification(default_conf, mocker, message_type, en
|
|||||||
'fiat_currency': 'USD',
|
'fiat_currency': 'USD',
|
||||||
'open_rate': 1.099e-05,
|
'open_rate': 1.099e-05,
|
||||||
'amount': 1333.3333333333335,
|
'amount': 1333.3333333333335,
|
||||||
'open_date': arrow.utcnow().shift(hours=-1)
|
'open_date': dt_now() - timedelta(hours=1)
|
||||||
})
|
})
|
||||||
|
|
||||||
assert msg_mock.call_args[0][0] == (
|
assert msg_mock.call_args[0][0] == (
|
||||||
@@ -2071,7 +2072,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None:
|
|||||||
'fiat_currency': 'USD',
|
'fiat_currency': 'USD',
|
||||||
'enter_tag': 'buy_signal1',
|
'enter_tag': 'buy_signal1',
|
||||||
'exit_reason': ExitType.STOP_LOSS.value,
|
'exit_reason': ExitType.STOP_LOSS.value,
|
||||||
'open_date': arrow.utcnow().shift(hours=-1),
|
'open_date': dt_now() - timedelta(hours=1),
|
||||||
'close_date': arrow.utcnow(),
|
'close_date': arrow.utcnow(),
|
||||||
})
|
})
|
||||||
assert msg_mock.call_args[0][0] == (
|
assert msg_mock.call_args[0][0] == (
|
||||||
@@ -2107,7 +2108,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None:
|
|||||||
'fiat_currency': 'USD',
|
'fiat_currency': 'USD',
|
||||||
'enter_tag': 'buy_signal1',
|
'enter_tag': 'buy_signal1',
|
||||||
'exit_reason': ExitType.STOP_LOSS.value,
|
'exit_reason': ExitType.STOP_LOSS.value,
|
||||||
'open_date': arrow.utcnow().shift(days=-1, hours=-2, minutes=-30),
|
'open_date': dt_now() - timedelta(days=1, hours=2, minutes=30),
|
||||||
'close_date': arrow.utcnow(),
|
'close_date': arrow.utcnow(),
|
||||||
'stake_amount': 0.01,
|
'stake_amount': 0.01,
|
||||||
'sub_trade': True,
|
'sub_trade': True,
|
||||||
@@ -2144,7 +2145,7 @@ def test_send_msg_sell_notification(default_conf, mocker) -> None:
|
|||||||
'stake_currency': 'ETH',
|
'stake_currency': 'ETH',
|
||||||
'enter_tag': 'buy_signal1',
|
'enter_tag': 'buy_signal1',
|
||||||
'exit_reason': ExitType.STOP_LOSS.value,
|
'exit_reason': ExitType.STOP_LOSS.value,
|
||||||
'open_date': arrow.utcnow().shift(days=-1, hours=-2, minutes=-30),
|
'open_date': dt_now() - timedelta(days=1, hours=2, minutes=30),
|
||||||
'close_date': arrow.utcnow(),
|
'close_date': arrow.utcnow(),
|
||||||
})
|
})
|
||||||
assert msg_mock.call_args[0][0] == (
|
assert msg_mock.call_args[0][0] == (
|
||||||
@@ -2226,7 +2227,7 @@ def test_send_msg_sell_fill_notification(default_conf, mocker, direction,
|
|||||||
'stake_currency': 'ETH',
|
'stake_currency': 'ETH',
|
||||||
'enter_tag': enter_signal,
|
'enter_tag': enter_signal,
|
||||||
'exit_reason': ExitType.STOP_LOSS.value,
|
'exit_reason': ExitType.STOP_LOSS.value,
|
||||||
'open_date': arrow.utcnow().shift(days=-1, hours=-2, minutes=-30),
|
'open_date': dt_now() - timedelta(days=1, hours=2, minutes=30),
|
||||||
'close_date': arrow.utcnow(),
|
'close_date': arrow.utcnow(),
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -2317,7 +2318,7 @@ def test_send_msg_buy_notification_no_fiat(
|
|||||||
'fiat_currency': None,
|
'fiat_currency': None,
|
||||||
'current_rate': 1.099e-05,
|
'current_rate': 1.099e-05,
|
||||||
'amount': 1333.3333333333335,
|
'amount': 1333.3333333333335,
|
||||||
'open_date': arrow.utcnow().shift(hours=-1)
|
'open_date': dt_now() - timedelta(hours=1)
|
||||||
})
|
})
|
||||||
|
|
||||||
leverage_text = f'*Leverage:* `{leverage}`\n' if leverage and leverage != 1.0 else ''
|
leverage_text = f'*Leverage:* `{leverage}`\n' if leverage and leverage != 1.0 else ''
|
||||||
@@ -2363,7 +2364,7 @@ def test_send_msg_sell_notification_no_fiat(
|
|||||||
'fiat_currency': 'USD',
|
'fiat_currency': 'USD',
|
||||||
'enter_tag': enter_signal,
|
'enter_tag': enter_signal,
|
||||||
'exit_reason': ExitType.STOP_LOSS.value,
|
'exit_reason': ExitType.STOP_LOSS.value,
|
||||||
'open_date': arrow.utcnow().shift(hours=-2, minutes=-35, seconds=-3),
|
'open_date': dt_now() - timedelta(hours=2, minutes=35, seconds=3),
|
||||||
'close_date': arrow.utcnow(),
|
'close_date': arrow.utcnow(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -729,7 +729,7 @@ def test_is_pair_locked(default_conf):
|
|||||||
|
|
||||||
pair = 'ETH/BTC'
|
pair = 'ETH/BTC'
|
||||||
assert not strategy.is_pair_locked(pair)
|
assert not strategy.is_pair_locked(pair)
|
||||||
strategy.lock_pair(pair, arrow.now(timezone.utc).shift(minutes=4).datetime)
|
strategy.lock_pair(pair, dt_now() + timedelta(minutes=4))
|
||||||
# ETH/BTC locked for 4 minutes
|
# ETH/BTC locked for 4 minutes
|
||||||
assert strategy.is_pair_locked(pair)
|
assert strategy.is_pair_locked(pair)
|
||||||
|
|
||||||
@@ -747,7 +747,7 @@ def test_is_pair_locked(default_conf):
|
|||||||
|
|
||||||
# Lock with reason
|
# Lock with reason
|
||||||
reason = "TestLockR"
|
reason = "TestLockR"
|
||||||
strategy.lock_pair(pair, arrow.now(timezone.utc).shift(minutes=4).datetime, reason)
|
strategy.lock_pair(pair, dt_now() + timedelta(minutes=4), reason)
|
||||||
assert strategy.is_pair_locked(pair)
|
assert strategy.is_pair_locked(pair)
|
||||||
strategy.unlock_reason(reason)
|
strategy.unlock_reason(reason)
|
||||||
assert not strategy.is_pair_locked(pair)
|
assert not strategy.is_pair_locked(pair)
|
||||||
|
|||||||
+16
-16
@@ -4,10 +4,10 @@
|
|||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
from datetime import timedelta
|
||||||
from typing import List
|
from typing import List
|
||||||
from unittest.mock import ANY, MagicMock, PropertyMock, patch
|
from unittest.mock import ANY, MagicMock, PropertyMock, patch
|
||||||
|
|
||||||
import arrow
|
|
||||||
import pytest
|
import pytest
|
||||||
from pandas import DataFrame
|
from pandas import DataFrame
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
@@ -446,7 +446,7 @@ def test_enter_positions_global_pairlock(default_conf_usdt, ticker_usdt, limit_b
|
|||||||
assert not log_has_re(message, caplog)
|
assert not log_has_re(message, caplog)
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
|
|
||||||
PairLocks.lock_pair('*', arrow.utcnow().shift(minutes=20).datetime, 'Just because', side='*')
|
PairLocks.lock_pair('*', dt_now() + timedelta(minutes=20), 'Just because', side='*')
|
||||||
n = freqtrade.enter_positions()
|
n = freqtrade.enter_positions()
|
||||||
assert n == 0
|
assert n == 0
|
||||||
assert log_has_re(message, caplog)
|
assert log_has_re(message, caplog)
|
||||||
@@ -467,7 +467,7 @@ def test_handle_protections(mocker, default_conf_usdt, fee, is_short):
|
|||||||
|
|
||||||
freqtrade = get_patched_freqtradebot(mocker, default_conf_usdt)
|
freqtrade = get_patched_freqtradebot(mocker, default_conf_usdt)
|
||||||
freqtrade.protections._protection_handlers[1].global_stop = MagicMock(
|
freqtrade.protections._protection_handlers[1].global_stop = MagicMock(
|
||||||
return_value=ProtectionReturn(True, arrow.utcnow().shift(hours=1).datetime, "asdf"))
|
return_value=ProtectionReturn(True, dt_now() + timedelta(hours=1), "asdf"))
|
||||||
create_mock_trades(fee, is_short)
|
create_mock_trades(fee, is_short)
|
||||||
freqtrade.handle_protections('ETC/BTC', '*')
|
freqtrade.handle_protections('ETC/BTC', '*')
|
||||||
send_msg_mock = freqtrade.rpc.send_msg
|
send_msg_mock = freqtrade.rpc.send_msg
|
||||||
@@ -1263,7 +1263,7 @@ def test_handle_stoploss_on_exchange(mocker, default_conf_usdt, fee, caplog, is_
|
|||||||
}])
|
}])
|
||||||
trade.stoploss_order_id = "107"
|
trade.stoploss_order_id = "107"
|
||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(hours=-1).datetime
|
trade.stoploss_last_update = dt_now() - timedelta(hours=1)
|
||||||
trade.stop_loss = 24
|
trade.stop_loss = 24
|
||||||
trade.exit_reason = None
|
trade.exit_reason = None
|
||||||
trade.orders.append(
|
trade.orders.append(
|
||||||
@@ -1412,7 +1412,7 @@ def test_handle_stoploss_on_exchange_partial_cancel_here(
|
|||||||
})
|
})
|
||||||
mocker.patch(f'{EXMS}.fetch_stoploss_order', stoploss_order_hit)
|
mocker.patch(f'{EXMS}.fetch_stoploss_order', stoploss_order_hit)
|
||||||
mocker.patch(f'{EXMS}.cancel_stoploss_order_with_result', stoploss_order_cancel)
|
mocker.patch(f'{EXMS}.cancel_stoploss_order_with_result', stoploss_order_cancel)
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(minutes=-10).datetime
|
trade.stoploss_last_update = dt_now() - timedelta(minutes=10)
|
||||||
|
|
||||||
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
assert freqtrade.handle_stoploss_on_exchange(trade) is False
|
||||||
# Canceled Stoploss filled partially ...
|
# Canceled Stoploss filled partially ...
|
||||||
@@ -1632,7 +1632,7 @@ def test_handle_stoploss_on_exchange_trailing(
|
|||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.open_order_id = None
|
trade.open_order_id = None
|
||||||
trade.stoploss_order_id = '100'
|
trade.stoploss_order_id = '100'
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(minutes=-20).datetime
|
trade.stoploss_last_update = dt_now() - timedelta(minutes=20)
|
||||||
trade.orders.append(
|
trade.orders.append(
|
||||||
Order(
|
Order(
|
||||||
ft_order_side='stoploss',
|
ft_order_side='stoploss',
|
||||||
@@ -1763,7 +1763,7 @@ def test_handle_stoploss_on_exchange_trailing_error(
|
|||||||
trade.open_order_id = None
|
trade.open_order_id = None
|
||||||
trade.stoploss_order_id = "abcd"
|
trade.stoploss_order_id = "abcd"
|
||||||
trade.stop_loss = 0.2
|
trade.stop_loss = 0.2
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(minutes=-601).datetime.replace(tzinfo=None)
|
trade.stoploss_last_update = (dt_now() - timedelta(minutes=601)).replace(tzinfo=None)
|
||||||
trade.is_short = is_short
|
trade.is_short = is_short
|
||||||
|
|
||||||
stoploss_order_hanging = {
|
stoploss_order_hanging = {
|
||||||
@@ -1787,7 +1787,7 @@ def test_handle_stoploss_on_exchange_trailing_error(
|
|||||||
assert stoploss.call_count == 1
|
assert stoploss.call_count == 1
|
||||||
|
|
||||||
# Fail creating stoploss order
|
# Fail creating stoploss order
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(minutes=-601).datetime
|
trade.stoploss_last_update = dt_now() - timedelta(minutes=601)
|
||||||
caplog.clear()
|
caplog.clear()
|
||||||
cancel_mock = mocker.patch(f'{EXMS}.cancel_stoploss_order')
|
cancel_mock = mocker.patch(f'{EXMS}.cancel_stoploss_order')
|
||||||
mocker.patch(f'{EXMS}.create_stoploss', side_effect=ExchangeError())
|
mocker.patch(f'{EXMS}.create_stoploss', side_effect=ExchangeError())
|
||||||
@@ -1876,7 +1876,7 @@ def test_handle_stoploss_on_exchange_custom_stop(
|
|||||||
trade.is_open = True
|
trade.is_open = True
|
||||||
trade.open_order_id = None
|
trade.open_order_id = None
|
||||||
trade.stoploss_order_id = '100'
|
trade.stoploss_order_id = '100'
|
||||||
trade.stoploss_last_update = arrow.utcnow().shift(minutes=-601).datetime
|
trade.stoploss_last_update = dt_now() - timedelta(minutes=601)
|
||||||
trade.orders.append(
|
trade.orders.append(
|
||||||
Order(
|
Order(
|
||||||
ft_order_side='stoploss',
|
ft_order_side='stoploss',
|
||||||
@@ -2965,8 +2965,8 @@ def test_manage_open_orders_exit_usercustom(
|
|||||||
)
|
)
|
||||||
freqtrade = FreqtradeBot(default_conf_usdt)
|
freqtrade = FreqtradeBot(default_conf_usdt)
|
||||||
|
|
||||||
open_trade_usdt.open_date = arrow.utcnow().shift(hours=-5).datetime
|
open_trade_usdt.open_date = dt_now() - timedelta(hours=5)
|
||||||
open_trade_usdt.close_date = arrow.utcnow().shift(minutes=-601).datetime
|
open_trade_usdt.close_date = dt_now() - timedelta(minutes=601)
|
||||||
open_trade_usdt.close_profit_abs = 0.001
|
open_trade_usdt.close_profit_abs = 0.001
|
||||||
|
|
||||||
Trade.session.add(open_trade_usdt)
|
Trade.session.add(open_trade_usdt)
|
||||||
@@ -3047,8 +3047,8 @@ def test_manage_open_orders_exit(
|
|||||||
)
|
)
|
||||||
freqtrade = FreqtradeBot(default_conf_usdt)
|
freqtrade = FreqtradeBot(default_conf_usdt)
|
||||||
|
|
||||||
open_trade_usdt.open_date = arrow.utcnow().shift(hours=-5).datetime
|
open_trade_usdt.open_date = dt_now() - timedelta(hours=5)
|
||||||
open_trade_usdt.close_date = arrow.utcnow().shift(minutes=-601).datetime
|
open_trade_usdt.close_date = dt_now() - timedelta(minutes=601)
|
||||||
open_trade_usdt.close_profit_abs = 0.001
|
open_trade_usdt.close_profit_abs = 0.001
|
||||||
open_trade_usdt.is_short = is_short
|
open_trade_usdt.is_short = is_short
|
||||||
|
|
||||||
@@ -3088,8 +3088,8 @@ def test_check_handle_cancelled_exit(
|
|||||||
)
|
)
|
||||||
freqtrade = FreqtradeBot(default_conf_usdt)
|
freqtrade = FreqtradeBot(default_conf_usdt)
|
||||||
|
|
||||||
open_trade_usdt.open_date = arrow.utcnow().shift(hours=-5).datetime
|
open_trade_usdt.open_date = dt_now() - timedelta(hours=5)
|
||||||
open_trade_usdt.close_date = arrow.utcnow().shift(minutes=-601).datetime
|
open_trade_usdt.close_date = dt_now() - timedelta(minutes=601)
|
||||||
open_trade_usdt.is_short = is_short
|
open_trade_usdt.is_short = is_short
|
||||||
|
|
||||||
Trade.session.add(open_trade_usdt)
|
Trade.session.add(open_trade_usdt)
|
||||||
@@ -3417,7 +3417,7 @@ def test_handle_cancel_exit_limit(mocker, default_conf_usdt, fee) -> None:
|
|||||||
exchange='binance',
|
exchange='binance',
|
||||||
open_rate=0.245441,
|
open_rate=0.245441,
|
||||||
open_order_id="sell_123456",
|
open_order_id="sell_123456",
|
||||||
open_date=arrow.utcnow().shift(days=-2).datetime,
|
open_date=dt_now() - timedelta(days=2),
|
||||||
fee_open=fee.return_value,
|
fee_open=fee.return_value,
|
||||||
fee_close=fee.return_value,
|
fee_close=fee.return_value,
|
||||||
close_rate=0.555,
|
close_rate=0.555,
|
||||||
|
|||||||
Reference in New Issue
Block a user