diff --git a/user_data/strategies/Strategy002.py b/user_data/strategies/Strategy002.py index 8684520b6..fbfbbe5ad 100644 --- a/user_data/strategies/Strategy002.py +++ b/user_data/strategies/Strategy002.py @@ -12,11 +12,9 @@ import talib.abstract as ta import freqtrade.vendor.qtpylib.indicators as qtpylib import numpy # noqa from datetime import datetime -import subprocess -import threading - -from user_data.strategies.util import IS_BACKTEST, launcher, back_tester +from user_data.strategies.util import execute, back_test +from config import Config class Strategy002(IStrategy): @@ -168,10 +166,11 @@ class Strategy002(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - if IS_BACKTEST: - threading.Thread(target=back_tester, args=(current_time, coin, brain)).start() + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + execute(mode, coin, brain) + return True diff --git a/user_data/strategies/Strategy003.py b/user_data/strategies/Strategy003.py index 8ff26a65a..c18b7bbec 100644 --- a/user_data/strategies/Strategy003.py +++ b/user_data/strategies/Strategy003.py @@ -14,7 +14,8 @@ import numpy # noqa from datetime import datetime import subprocess -from user_data.strategies.util import IS_BACKTEST, back_tester, launcher +from user_data.strategies.util import back_test, execute +from config import Config class Strategy003(IStrategy): @@ -181,8 +182,8 @@ class Strategy003(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - if IS_BACKTEST: - threading.Thread(target=back_tester, args=(current_time, coin, brain)).start() + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + execute(mode, coin, brain) return True \ No newline at end of file diff --git a/user_data/strategies/Strategy004.py b/user_data/strategies/Strategy004.py index a5778d526..a30120afb 100644 --- a/user_data/strategies/Strategy004.py +++ b/user_data/strategies/Strategy004.py @@ -7,12 +7,11 @@ from functools import reduce from pandas import DataFrame # -------------------------------- from datetime import datetime -import subprocess import talib.abstract as ta -from user_data.strategies.util import IS_BACKTEST, back_tester, launcher - +from user_data.strategies.util import back_test, execute +from config import Config class Strategy004(IStrategy): """ @@ -181,8 +180,8 @@ class Strategy004(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - if IS_BACKTEST: - threading.Thread(target=back_tester, args=(current_time, coin, brain)).start() + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + execute(mode, coin, brain) return True diff --git a/user_data/strategies/config.py b/user_data/strategies/config.py new file mode 100644 index 000000000..1e7469ea7 --- /dev/null +++ b/user_data/strategies/config.py @@ -0,0 +1,8 @@ +class Config: + BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH = "" + BACKTEST_YEAR = 2020 + BACKTEST_MONTH_INDEX = 9 + IS_BACKTEST = True + WORKSPACE_PATH = "workspace2" if IS_BACKTEST else "workspace" + EXECUTION_PATH = "/root/" + WORKSPACE_PATH + "/execution/" + IS_PARRALER_EXECUTION = False diff --git a/freq_data_cleaner.py b/user_data/strategies/freq_data_cleaner.py similarity index 56% rename from freq_data_cleaner.py rename to user_data/strategies/freq_data_cleaner.py index 09d76f81a..08920f8e9 100644 --- a/freq_data_cleaner.py +++ b/user_data/strategies/freq_data_cleaner.py @@ -3,11 +3,10 @@ import datetime import time import os import sys -from user_data.strategies.util import BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH, BACKTEST_YEAR, BACKTEST_MONTH_INDEX - +from config import Config def clean_json(): - print("clean_json: json_path = " + BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) - file = open(BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) + print("clean_json: json_path = " + Config.BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) + file = open(Config.BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) list = [] data = json.load(file) for datas in data: @@ -17,24 +16,24 @@ def clean_json(): date = datetime.datetime.strptime(str(date), "%Y-%m-%d %H:%M:%S") year = date.year month = date.month - if year == int(BACKTEST_YEAR) and month == int(BACKTEST_MONTH_INDEX): + if year == int(Config.BACKTEST_YEAR) and month == int(Config.BACKTEST_MONTH_INDEX): list.append(datas) json_object = json.dumps(list) file.close() write_to_json(json_object) def write_to_json(json_object): - print("write_to_json: json_path = " + BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) + print("write_to_json: json_path = " + Config.BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) with open("temp.json", "w") as outfile: outfile.write(json_object) - os.rename("temp.json", BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) + os.rename("temp.json", Config.BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH) if len(sys.argv) < 4: exit("""Incorrect number of arguments. python3 freq_data_cleaner.py [json_file] [month index] [year] """) else: - BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH = sys.argv[1] - BACKTEST_MONTH_INDEX = sys.argv[2] - BACKTEST_YEAR = sys.argv[3] + Config.BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH = sys.argv[1] + Config.BACKTEST_MONTH_INDEX = sys.argv[2] + Config.BACKTEST_YEAR = sys.argv[3] clean_json() \ No newline at end of file diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index 3bc589490..00ce87f48 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -1,21 +1,23 @@ import subprocess import threading +from user_data.strategies.config import Config -BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH = "" -BACKTEST_YEAR = 2020 -BACKTEST_MONTH_INDEX = 9 -IS_BACKTEST = False -WORKSPACE_PATH = "workspace2" if IS_BACKTEST else "workspace" -EXECUTION_PATH = "/root/" + WORKSPACE_PATH + "/execution/" +def execute(mode, coin, brain): + if Config.IS_PARRALER_EXECUTION: + threading.Thread(target=_perform_execute, args=(mode, coin, brain)).start() + else: + _perform_execute(mode, coin, brain) +def _perform_execute(mode, coin, brain): + subprocess.call("python3 "+Config.EXECUTION_PATH+"executeer.py " + mode + " " + coin + " " + brain, shell=True) -def launcher(mode, coin, brain): - threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() - -def _perform_launcher(mode, coin, brain): - subprocess.call("python3 "+EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) - -def back_tester(date_time, coin, brain): +def _perform_back_test(date_time, coin, brain): date = str(date_time) date = date.replace(" ", "#") - subprocess.call("python3 "+ EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) + subprocess.call("python3 "+ Config.EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) + +def back_test(date_time, coin, brain): + if Config.IS_PARRALER_EXECUTION: + threading.Thread(target=_perform_back_test, args=(coin, brain, date_time)).start() + else: + _perform_back_test(date_time, coin, brain) \ No newline at end of file