From d7f257282c9a7423cb4edf90bcabb5fb2721e54f Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 15:51:55 +0300 Subject: [PATCH 1/6] method and restructuring enabled --- user_data/strategies/Strategy002.py | 8 ++---- user_data/strategies/config.py | 8 ++++++ .../strategies/freq_data_cleaner.py | 0 user_data/strategies/util.py | 28 +++++++++++-------- 4 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 user_data/strategies/config.py rename freq_data_cleaner.py => user_data/strategies/freq_data_cleaner.py (100%) diff --git a/user_data/strategies/Strategy002.py b/user_data/strategies/Strategy002.py index 8684520b6..ff63d7237 100644 --- a/user_data/strategies/Strategy002.py +++ b/user_data/strategies/Strategy002.py @@ -15,7 +15,7 @@ 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 IS_BACKTEST, launcher, _perform_launcher @@ -168,10 +168,8 @@ 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() - else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + launcher(mode, current_time, coin, brain) + return True diff --git a/user_data/strategies/config.py b/user_data/strategies/config.py new file mode 100644 index 000000000..a4c97831e --- /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 = False + WORKSPACE_PATH = "workspace2" if IS_BACKTEST else "workspace" + EXECUTION_PATH = "/root/" + WORKSPACE_PATH + "/execution/" + IS_PARRALER_EXECUTION = True diff --git a/freq_data_cleaner.py b/user_data/strategies/freq_data_cleaner.py similarity index 100% rename from freq_data_cleaner.py rename to user_data/strategies/freq_data_cleaner.py diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index 3bc589490..6956eb72d 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -1,21 +1,25 @@ import subprocess import threading +from 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 launcher(mode, coin, brain): - threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() +def launcher(mode, coin, brain,date_time): + if Config.IS_BACKTEST: + if Config.IS_PARRALER_EXECUTION: + threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() + else: + date = str(date_time) + date = date.replace(" ", "#") + subprocess.call("python3 "+ Config.EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) + else: + if Config.IS_PARRALER_EXECUTION: + threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() + else: + subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) def _perform_launcher(mode, coin, brain): - subprocess.call("python3 "+EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) + subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) def back_tester(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) From dd53e0a7af1cabf916faec6fb1fb1ccb9564cde4 Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 16:16:32 +0300 Subject: [PATCH 2/6] bug fixes --- user_data/strategies/Strategy002.py | 2 +- user_data/strategies/config.py | 4 ++-- user_data/strategies/freq_data_cleaner.py | 19 +++++++++---------- user_data/strategies/util.py | 4 ++-- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/user_data/strategies/Strategy002.py b/user_data/strategies/Strategy002.py index ff63d7237..83ba512a1 100644 --- a/user_data/strategies/Strategy002.py +++ b/user_data/strategies/Strategy002.py @@ -15,7 +15,7 @@ from datetime import datetime import subprocess import threading -from user_data.strategies.util import IS_BACKTEST, launcher, _perform_launcher +from user_data.strategies.util import launcher, _perform_launcher diff --git a/user_data/strategies/config.py b/user_data/strategies/config.py index a4c97831e..1e7469ea7 100644 --- a/user_data/strategies/config.py +++ b/user_data/strategies/config.py @@ -2,7 +2,7 @@ class Config: BACKTEST_DOWNLOADED_JSON_DATA_FILE_PATH = "" BACKTEST_YEAR = 2020 BACKTEST_MONTH_INDEX = 9 - IS_BACKTEST = False + IS_BACKTEST = True WORKSPACE_PATH = "workspace2" if IS_BACKTEST else "workspace" EXECUTION_PATH = "/root/" + WORKSPACE_PATH + "/execution/" - IS_PARRALER_EXECUTION = True + IS_PARRALER_EXECUTION = False diff --git a/user_data/strategies/freq_data_cleaner.py b/user_data/strategies/freq_data_cleaner.py index 09d76f81a..08920f8e9 100644 --- a/user_data/strategies/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 6956eb72d..7825ae6cf 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -1,8 +1,8 @@ import subprocess import threading -from config import Config +from user_data.strategies.config import Config -def launcher(mode, coin, brain,date_time): +def launcher(mode, coin, brain,date_time = 12344315): if Config.IS_BACKTEST: if Config.IS_PARRALER_EXECUTION: threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() From 6745788b1c671f6a42493b9bd7669d37061048aa Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 16:27:44 +0300 Subject: [PATCH 3/6] big fix 2 --- user_data/strategies/Strategy003.py | 5 +---- user_data/strategies/Strategy004.py | 5 +---- user_data/strategies/util.py | 4 ++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/user_data/strategies/Strategy003.py b/user_data/strategies/Strategy003.py index 8ff26a65a..3e3b84236 100644 --- a/user_data/strategies/Strategy003.py +++ b/user_data/strategies/Strategy003.py @@ -181,8 +181,5 @@ 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() - else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + launcher(mode, current_time, 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..ab68fec7b 100644 --- a/user_data/strategies/Strategy004.py +++ b/user_data/strategies/Strategy004.py @@ -181,8 +181,5 @@ 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() - else: - threading.Thread(target=launcher, args=(mode, coin, brain)).start() + launcher(mode, current_time, coin, brain) return True diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index 7825ae6cf..215786411 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -2,10 +2,10 @@ import subprocess import threading from user_data.strategies.config import Config -def launcher(mode, coin, brain,date_time = 12344315): +def launcher(mode, coin, brain, date_time): if Config.IS_BACKTEST: if Config.IS_PARRALER_EXECUTION: - threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() + threading.Thread(target=back_tester, args=(mode, coin, brain, date_time)).start() else: date = str(date_time) date = date.replace(" ", "#") From 293717c3efb323341b485d12f1bd6e2c447cfcdf Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 16:44:33 +0300 Subject: [PATCH 4/6] changes implemented --- user_data/strategies/Strategy002.py | 11 ++++++----- user_data/strategies/Strategy003.py | 8 ++++++-- user_data/strategies/Strategy004.py | 10 ++++++---- user_data/strategies/util.py | 30 ++++++++++++++--------------- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/user_data/strategies/Strategy002.py b/user_data/strategies/Strategy002.py index 83ba512a1..8c2f40035 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 launcher, _perform_launcher +from user_data.strategies.util import launch, back_test +from config import Config class Strategy002(IStrategy): @@ -168,7 +166,10 @@ class Strategy002(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - launcher(mode, current_time, coin, brain) + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) + else: + launch(mode, coin, brain) return True diff --git a/user_data/strategies/Strategy003.py b/user_data/strategies/Strategy003.py index 3e3b84236..d6e8d5e1b 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, launch +from config import Config class Strategy003(IStrategy): @@ -181,5 +182,8 @@ class Strategy003(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - launcher(mode, current_time, coin, brain) + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) + else: + launch(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 ab68fec7b..1d0ae378d 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, launch +from config import Config class Strategy004(IStrategy): """ @@ -181,5 +180,8 @@ class Strategy004(IStrategy): mode = "test" coin = pair.split("/")[0] brain = "Freq_" + self.__class__.__name__ - launcher(mode, current_time, coin, brain) + if Config.IS_BACKTEST: + back_test(current_time, coin, brain) + else: + launch(mode, coin, brain) return True diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index 215786411..dd88d6d47 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -2,24 +2,24 @@ import subprocess import threading from user_data.strategies.config import Config -def launcher(mode, coin, brain, date_time): - if Config.IS_BACKTEST: - if Config.IS_PARRALER_EXECUTION: - threading.Thread(target=back_tester, args=(mode, coin, brain, date_time)).start() - else: - date = str(date_time) - date = date.replace(" ", "#") - subprocess.call("python3 "+ Config.EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) +def launch(mode, coin, brain): + if Config.IS_PARRALER_EXECUTION: + threading.Thread(target=_perform_launch, args=(mode, coin, brain)).start() else: - if Config.IS_PARRALER_EXECUTION: - threading.Thread(target=_perform_launcher, args=(mode, coin, brain)).start() - else: - subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) - -def _perform_launcher(mode, coin, brain): subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) -def back_tester(date_time, coin, brain): +def _perform_launch(mode, coin, brain): + subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) + +def _perform_back_test(date_time, coin, brain): date = str(date_time) date = date.replace(" ", "#") 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: + date = str(date_time) + date = date.replace(" ", "#") + subprocess.call("python3 "+ Config.EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) From f929dce7e2cc6e820743f5d75c2703fb080680fa Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 16:55:03 +0300 Subject: [PATCH 5/6] renamed --- user_data/strategies/Strategy002.py | 4 ++-- user_data/strategies/Strategy003.py | 4 ++-- user_data/strategies/Strategy004.py | 4 ++-- user_data/strategies/util.py | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/user_data/strategies/Strategy002.py b/user_data/strategies/Strategy002.py index 8c2f40035..fbfbbe5ad 100644 --- a/user_data/strategies/Strategy002.py +++ b/user_data/strategies/Strategy002.py @@ -13,7 +13,7 @@ import freqtrade.vendor.qtpylib.indicators as qtpylib import numpy # noqa from datetime import datetime -from user_data.strategies.util import launch, back_test +from user_data.strategies.util import execute, back_test from config import Config @@ -169,7 +169,7 @@ class Strategy002(IStrategy): if Config.IS_BACKTEST: back_test(current_time, coin, brain) else: - launch(mode, coin, brain) + execute(mode, coin, brain) return True diff --git a/user_data/strategies/Strategy003.py b/user_data/strategies/Strategy003.py index d6e8d5e1b..c18b7bbec 100644 --- a/user_data/strategies/Strategy003.py +++ b/user_data/strategies/Strategy003.py @@ -14,7 +14,7 @@ import numpy # noqa from datetime import datetime import subprocess -from user_data.strategies.util import back_test, launch +from user_data.strategies.util import back_test, execute from config import Config @@ -185,5 +185,5 @@ class Strategy003(IStrategy): if Config.IS_BACKTEST: back_test(current_time, coin, brain) else: - launch(mode, coin, brain) + 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 1d0ae378d..a30120afb 100644 --- a/user_data/strategies/Strategy004.py +++ b/user_data/strategies/Strategy004.py @@ -10,7 +10,7 @@ from datetime import datetime import talib.abstract as ta -from user_data.strategies.util import back_test, launch +from user_data.strategies.util import back_test, execute from config import Config class Strategy004(IStrategy): @@ -183,5 +183,5 @@ class Strategy004(IStrategy): if Config.IS_BACKTEST: back_test(current_time, coin, brain) else: - launch(mode, coin, brain) + execute(mode, coin, brain) return True diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index dd88d6d47..e3da2a89f 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -2,14 +2,14 @@ import subprocess import threading from user_data.strategies.config import Config -def launch(mode, coin, brain): +def execute(mode, coin, brain): if Config.IS_PARRALER_EXECUTION: - threading.Thread(target=_perform_launch, args=(mode, coin, brain)).start() + threading.Thread(target=_perform_execute, args=(mode, coin, brain)).start() else: - subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) + subprocess.call("python3 "+Config.EXECUTION_PATH+"executeer.py " + mode + " " + coin + " " + brain, shell=True) -def _perform_launch(mode, coin, brain): - subprocess.call("python3 "+Config.EXECUTION_PATH+"launcher.py " + mode + " " + coin + " " + brain, shell=True) +def _perform_execute(mode, coin, brain): + subprocess.call("python3 "+Config.EXECUTION_PATH+"executeer.py " + mode + " " + coin + " " + brain, shell=True) def _perform_back_test(date_time, coin, brain): date = str(date_time) From 8fb82dd215fdf5e4121f5430c9e785b2d5ccb0b0 Mon Sep 17 00:00:00 2001 From: Bemhreth Date: Wed, 26 Jan 2022 16:57:03 +0300 Subject: [PATCH 6/6] restructured --- user_data/strategies/util.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/user_data/strategies/util.py b/user_data/strategies/util.py index e3da2a89f..00ce87f48 100644 --- a/user_data/strategies/util.py +++ b/user_data/strategies/util.py @@ -6,7 +6,7 @@ def execute(mode, coin, brain): if Config.IS_PARRALER_EXECUTION: threading.Thread(target=_perform_execute, args=(mode, coin, brain)).start() else: - subprocess.call("python3 "+Config.EXECUTION_PATH+"executeer.py " + mode + " " + coin + " " + brain, shell=True) + _perform_execute(mode, coin, brain) def _perform_execute(mode, coin, brain): subprocess.call("python3 "+Config.EXECUTION_PATH+"executeer.py " + mode + " " + coin + " " + brain, shell=True) @@ -20,6 +20,4 @@ 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: - date = str(date_time) - date = date.replace(" ", "#") - subprocess.call("python3 "+ Config.EXECUTION_PATH + "back_tester.py " + date + " " + coin + " " + brain + " 0.45 3", shell=True) + _perform_back_test(date_time, coin, brain) \ No newline at end of file