From 4abc26b582445d4c407327b77be9b8920812dbc6 Mon Sep 17 00:00:00 2001 From: Robert Caulk Date: Mon, 25 Jul 2022 10:48:04 +0200 Subject: [PATCH] add test for follow_mode --- tests/freqai/test_freqai_interface.py | 73 +++++++++++++++++++-------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/tests/freqai/test_freqai_interface.py b/tests/freqai/test_freqai_interface.py index 0bb2dac79..ce1a52bbf 100644 --- a/tests/freqai/test_freqai_interface.py +++ b/tests/freqai/test_freqai_interface.py @@ -34,26 +34,10 @@ def test_train_model_in_series_LightGBM(mocker, freqai_conf): freqai.train_model_in_series(new_timerange, "ADA/BTC", strategy, freqai.dk, data_load_timerange) - assert ( - Path(freqai.dk.data_path / str(freqai.dk.model_filename + "_model.joblib")) - .resolve() - .exists() - ) - assert ( - Path(freqai.dk.data_path / str(freqai.dk.model_filename + "_metadata.json")) - .resolve() - .exists() - ) - assert ( - Path(freqai.dk.data_path / str(freqai.dk.model_filename + "_trained_df.pkl")) - .resolve() - .exists() - ) - assert ( - Path(freqai.dk.data_path / str(freqai.dk.model_filename + "_svm_model.joblib")) - .resolve() - .exists() - ) + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_model.joblib").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_metadata.json").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_trained_df.pkl").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_svm_model.joblib").is_file() shutil.rmtree(Path(freqai.dk.full_path)) @@ -161,3 +145,52 @@ def test_start_backtesting_from_existing_folder(mocker, freqai_conf, caplog): ) shutil.rmtree(Path(freqai.dk.full_path)) + + +def test_follow_mode(mocker, freqai_conf): + freqai_conf.update({"timerange": "20180110-20180130"}) + + strategy = get_patched_freqai_strategy(mocker, freqai_conf) + exchange = get_patched_exchange(mocker, freqai_conf) + strategy.dp = DataProvider(freqai_conf, exchange) + strategy.freqai_info = freqai_conf.get("freqai", {}) + freqai = strategy.freqai + freqai.live = True + freqai.dk = FreqaiDataKitchen(freqai_conf, freqai.dd) + timerange = TimeRange.parse_timerange("20180110-20180130") + freqai.dk.load_all_pair_histories(timerange) + + metadata = {"pair": "ADA/BTC"} + freqai.dd.set_pair_dict_info(metadata) + # freqai.dd.pair_dict = MagicMock() + + data_load_timerange = TimeRange.parse_timerange("20180110-20180130") + new_timerange = TimeRange.parse_timerange("20180120-20180130") + + freqai.train_model_in_series(new_timerange, "ADA/BTC", strategy, freqai.dk, data_load_timerange) + + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_model.joblib").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_metadata.json").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_trained_df.pkl").is_file() + assert Path(freqai.dk.data_path / f"{freqai.dk.model_filename}_svm_model.joblib").is_file() + + # start the follower and ask it to predict on existing files + + freqai_conf.get("freqai", {}).update({"follow_mode": "true"}) + + strategy = get_patched_freqai_strategy(mocker, freqai_conf) + exchange = get_patched_exchange(mocker, freqai_conf) + strategy.dp = DataProvider(freqai_conf, exchange) + strategy.freqai_info = freqai_conf.get("freqai", {}) + freqai = strategy.freqai + freqai.live = True + freqai.dk = FreqaiDataKitchen(freqai_conf, freqai.dd, freqai.live) + timerange = TimeRange.parse_timerange("20180110-20180130") + freqai.dk.load_all_pair_histories(timerange) + + df = strategy.dp.get_pair_dataframe('ADA/BTC', '5m') + freqai.start_live(df, metadata, strategy, freqai.dk) + + assert len(freqai.dk.return_dataframe.index) == 5702 + + shutil.rmtree(Path(freqai.dk.full_path))