test: remove edge tests
This commit is contained in:
@@ -297,24 +297,6 @@ def patch_whitelist(mocker, conf) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def patch_edge(mocker) -> None:
|
|
||||||
# "ETH/BTC",
|
|
||||||
# "LTC/BTC",
|
|
||||||
# "XRP/BTC",
|
|
||||||
# "NEO/BTC"
|
|
||||||
|
|
||||||
mocker.patch(
|
|
||||||
"freqtrade.edge.Edge._cached_pairs",
|
|
||||||
mocker.PropertyMock(
|
|
||||||
return_value={
|
|
||||||
"NEO/BTC": PairInfo(-0.20, 0.66, 3.71, 0.50, 1.71, 10, 25),
|
|
||||||
"LTC/BTC": PairInfo(-0.21, 0.66, 3.71, 0.50, 1.71, 11, 20),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
|
||||||
mocker.patch("freqtrade.edge.Edge.calculate", MagicMock(return_value=True))
|
|
||||||
|
|
||||||
|
|
||||||
# Functions for recurrent object patching
|
# Functions for recurrent object patching
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ from tests.conftest import (
|
|||||||
get_patched_worker,
|
get_patched_worker,
|
||||||
log_has,
|
log_has,
|
||||||
log_has_re,
|
log_has_re,
|
||||||
patch_edge,
|
|
||||||
patch_exchange,
|
patch_exchange,
|
||||||
patch_get_signal,
|
patch_get_signal,
|
||||||
patch_wallet,
|
patch_wallet,
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ from tests.conftest import (
|
|||||||
get_patched_freqtradebot,
|
get_patched_freqtradebot,
|
||||||
log_has,
|
log_has,
|
||||||
log_has_re,
|
log_has_re,
|
||||||
patch_edge,
|
|
||||||
patch_exchange,
|
patch_exchange,
|
||||||
patch_get_signal,
|
patch_get_signal,
|
||||||
patch_whitelist,
|
patch_whitelist,
|
||||||
|
|||||||
@@ -18,12 +18,10 @@ from freqtrade.data.btanalysis import (
|
|||||||
load_backtest_data,
|
load_backtest_data,
|
||||||
load_backtest_stats,
|
load_backtest_stats,
|
||||||
)
|
)
|
||||||
from freqtrade.edge import PairInfo
|
|
||||||
from freqtrade.enums import ExitType
|
from freqtrade.enums import ExitType
|
||||||
from freqtrade.optimize.optimize_reports import (
|
from freqtrade.optimize.optimize_reports import (
|
||||||
generate_backtest_stats,
|
generate_backtest_stats,
|
||||||
generate_daily_stats,
|
generate_daily_stats,
|
||||||
generate_edge_table,
|
|
||||||
generate_pair_metrics,
|
generate_pair_metrics,
|
||||||
generate_periodic_breakdown_stats,
|
generate_periodic_breakdown_stats,
|
||||||
generate_strategy_comparison,
|
generate_strategy_comparison,
|
||||||
@@ -646,15 +644,6 @@ def test_text_table_strategy(testdatadir, capsys):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_generate_edge_table(capsys):
|
|
||||||
results = {}
|
|
||||||
results["ETH/BTC"] = PairInfo(-0.01, 0.60, 2, 1, 3, 10, 60)
|
|
||||||
generate_edge_table(results)
|
|
||||||
text = capsys.readouterr().out
|
|
||||||
assert re.search(r".* ETH/BTC .*", text)
|
|
||||||
assert re.search(r".* Risk Reward Ratio .* Required Risk Reward .* Expectancy .*", text)
|
|
||||||
|
|
||||||
|
|
||||||
def test_generate_periodic_breakdown_stats(testdatadir):
|
def test_generate_periodic_breakdown_stats(testdatadir):
|
||||||
filename = testdatadir / "backtest_results/backtest-result.json"
|
filename = testdatadir / "backtest_results/backtest-result.json"
|
||||||
bt_data = load_backtest_data(filename).to_dict(orient="records")
|
bt_data = load_backtest_data(filename).to_dict(orient="records")
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import pytest
|
|||||||
from numpy import isnan
|
from numpy import isnan
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
from freqtrade.edge import PairInfo
|
|
||||||
from freqtrade.enums import SignalDirection, State, TradingMode
|
from freqtrade.enums import SignalDirection, State, TradingMode
|
||||||
from freqtrade.exceptions import ExchangeError, InvalidOrderException, TemporaryError
|
from freqtrade.exceptions import ExchangeError, InvalidOrderException, TemporaryError
|
||||||
from freqtrade.persistence import Order, Trade
|
from freqtrade.persistence import Order, Trade
|
||||||
@@ -1393,36 +1392,6 @@ def test_rpc_blacklist(mocker, default_conf) -> None:
|
|||||||
assert isinstance(ret["errors"], dict)
|
assert isinstance(ret["errors"], dict)
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_edge_disabled(mocker, default_conf) -> None:
|
|
||||||
mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock())
|
|
||||||
freqtradebot = get_patched_freqtradebot(mocker, default_conf)
|
|
||||||
rpc = RPC(freqtradebot)
|
|
||||||
with pytest.raises(RPCException, match=r"Edge is not enabled."):
|
|
||||||
rpc._rpc_edge()
|
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_edge_enabled(mocker, edge_conf) -> None:
|
|
||||||
mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock())
|
|
||||||
mocker.patch(
|
|
||||||
"freqtrade.edge.Edge._cached_pairs",
|
|
||||||
mocker.PropertyMock(
|
|
||||||
return_value={
|
|
||||||
"E/F": PairInfo(-0.02, 0.66, 3.71, 0.50, 1.71, 10, 60),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
|
||||||
freqtradebot = get_patched_freqtradebot(mocker, edge_conf)
|
|
||||||
|
|
||||||
rpc = RPC(freqtradebot)
|
|
||||||
ret = rpc._rpc_edge()
|
|
||||||
|
|
||||||
assert len(ret) == 1
|
|
||||||
assert ret[0]["Pair"] == "E/F"
|
|
||||||
assert ret[0]["Winrate"] == 0.66
|
|
||||||
assert ret[0]["Expectancy"] == 1.71
|
|
||||||
assert ret[0]["Stoploss"] == -0.02
|
|
||||||
|
|
||||||
|
|
||||||
def test_rpc_health(mocker, default_conf) -> None:
|
def test_rpc_health(mocker, default_conf) -> None:
|
||||||
mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock())
|
mocker.patch("freqtrade.rpc.telegram.Telegram", MagicMock())
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ from telegram.error import BadRequest, NetworkError, TelegramError
|
|||||||
|
|
||||||
from freqtrade import __version__
|
from freqtrade import __version__
|
||||||
from freqtrade.constants import CANCEL_REASON
|
from freqtrade.constants import CANCEL_REASON
|
||||||
from freqtrade.edge import PairInfo
|
|
||||||
from freqtrade.enums import (
|
from freqtrade.enums import (
|
||||||
ExitType,
|
ExitType,
|
||||||
MarketDirection,
|
MarketDirection,
|
||||||
@@ -171,7 +170,7 @@ def test_telegram_init(default_conf, mocker, caplog) -> None:
|
|||||||
"['reload_conf', 'reload_config'], ['show_conf', 'show_config'], "
|
"['reload_conf', 'reload_config'], ['show_conf', 'show_config'], "
|
||||||
"['pause', 'stopbuy', 'stopentry'], ['whitelist'], ['blacklist'], "
|
"['pause', 'stopbuy', 'stopentry'], ['whitelist'], ['blacklist'], "
|
||||||
"['bl_delete', 'blacklist_delete'], "
|
"['bl_delete', 'blacklist_delete'], "
|
||||||
"['logs'], ['edge'], ['health'], ['help'], ['version'], ['marketdir'], "
|
"['logs'], ['health'], ['help'], ['version'], ['marketdir'], "
|
||||||
"['order'], ['list_custom_data'], ['tg_info']]"
|
"['order'], ['list_custom_data'], ['tg_info']]"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1952,40 +1951,6 @@ async def test_telegram_logs(default_conf, update, mocker) -> None:
|
|||||||
assert msg_mock.call_count >= 2
|
assert msg_mock.call_count >= 2
|
||||||
|
|
||||||
|
|
||||||
async def test_edge_disabled(default_conf, update, mocker) -> None:
|
|
||||||
telegram, _, msg_mock = get_telegram_testobject(mocker, default_conf)
|
|
||||||
|
|
||||||
await telegram._edge(update=update, context=MagicMock())
|
|
||||||
assert msg_mock.call_count == 1
|
|
||||||
assert "Edge is not enabled." in msg_mock.call_args_list[0][0][0]
|
|
||||||
|
|
||||||
|
|
||||||
async def test_edge_enabled(edge_conf, update, mocker) -> None:
|
|
||||||
mocker.patch(
|
|
||||||
"freqtrade.edge.Edge._cached_pairs",
|
|
||||||
mocker.PropertyMock(
|
|
||||||
return_value={
|
|
||||||
"E/F": PairInfo(-0.01, 0.66, 3.71, 0.50, 1.71, 10, 60),
|
|
||||||
}
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
telegram, _, msg_mock = get_telegram_testobject(mocker, edge_conf)
|
|
||||||
|
|
||||||
await telegram._edge(update=update, context=MagicMock())
|
|
||||||
assert msg_mock.call_count == 1
|
|
||||||
assert "<b>Edge only validated following pairs:</b>\n<pre>" in msg_mock.call_args_list[0][0][0]
|
|
||||||
assert "Pair Winrate Expectancy Stoploss" in msg_mock.call_args_list[0][0][0]
|
|
||||||
|
|
||||||
msg_mock.reset_mock()
|
|
||||||
|
|
||||||
mocker.patch("freqtrade.edge.Edge._cached_pairs", mocker.PropertyMock(return_value={}))
|
|
||||||
await telegram._edge(update=update, context=MagicMock())
|
|
||||||
assert msg_mock.call_count == 1
|
|
||||||
assert "<b>Edge only validated following pairs:</b>" in msg_mock.call_args_list[0][0][0]
|
|
||||||
assert "Winrate" not in msg_mock.call_args_list[0][0][0]
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"is_short,regex_pattern",
|
"is_short,regex_pattern",
|
||||||
[(True, r"now[ ]*XRP\/BTC \(#3\) -1.00% \("), (False, r"now[ ]*XRP\/BTC \(#3\) 1.00% \(")],
|
[(True, r"now[ ]*XRP\/BTC \(#3\) -1.00% \("), (False, r"now[ ]*XRP\/BTC \(#3\) 1.00% \(")],
|
||||||
|
|||||||
Reference in New Issue
Block a user