From 2940fa272f654c6eb08d321f20f124dbe7cabd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Fri, 6 Sep 2024 13:27:52 +0700 Subject: [PATCH 1/6] Hermes (plutus) integration to the project. --- .gitignore | 5 ++ run_papertrading.py | 31 +++++------ src/pipeline.py | 122 +++++++++++++++++++++++++------------------- 3 files changed, 86 insertions(+), 72 deletions(-) diff --git a/.gitignore b/.gitignore index 1d8dd28..7769ef7 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,8 @@ coverage.xml # Sphinx documentation docs/_build/ + +*.zip +runs/* +.idea/* +configs/usr/db_account.yaml \ No newline at end of file diff --git a/run_papertrading.py b/run_papertrading.py index e825bec..4ca372e 100644 --- a/run_papertrading.py +++ b/run_papertrading.py @@ -4,18 +4,19 @@ from datetime import datetime from pathlib import Path - -from src.pipeline import Pipeline +from pipeline import Pipeline from utils.date_management import make_date_to_tickersymbol from utils.argument_management import Opts from utils.file_management import load_yaml +from plutus.datahub.redis_datahub import RedisDataHub FILE = Path(__file__).resolve() ROOT = FILE.parents[0] TIMEZONE = pytz.timezone('Asia/Ho_Chi_Minh') + # handle pricehub quote def redis_message_handler(redis_message): @@ -29,11 +30,6 @@ def redis_message_handler(redis_message): datetime_now = datetime.fromtimestamp(quote['timestamp']).astimezone(TIMEZONE).time() - - - - - def main(): FLAGS = Opts().parse_args() pipeline = Pipeline(FLAGS) @@ -41,23 +37,20 @@ def main(): redis_opts = load_yaml(ROOT/'configs'/'usr'/'redis_account.yaml') redis_host, redis_port, redis_password = redis_opts['host'], redis_opts['port'], redis_opts['password'] print(redis_host, redis_port, redis_password) - - # connect to redis server - redis_client = redis.Redis( - host=redis_host, - port=redis_port, - password=redis_password - ) - # check connection to redis OK - print(redis_client.ping()) + redis_data_hub = RedisDataHub( + redis_host=redis_host, + redis_port=redis_port, + redis_password=redis_password + ) current_date = datetime.now() - tickersymbol = make_date_to_tickersymbol(current_date) - F1M_CHANNEL = f'HNXDS:{tickersymbol}' + ticker_symbol = make_date_to_tickersymbol(current_date) + F1M_CHANNEL = f'HNXDS:{ticker_symbol}' print(F1M_CHANNEL) - pipeline.run_papertrading(redis_client) + pipeline.run_papertrading(redis_data_hub) + if __name__ == "__main__": main() diff --git a/src/pipeline.py b/src/pipeline.py index 7c4be45..b001536 100644 --- a/src/pipeline.py +++ b/src/pipeline.py @@ -20,6 +20,10 @@ from utils.path_management import increment_path from utils.file_management import write_yaml +from plutus.core.instrument import Instrument +from plutus.datahub.redis_datahub import RedisDataHub, RedisDataHandler, InternalDataHubQuote + + TIMEZONE = pytz.timezone('Asia/Ho_Chi_Minh') class Pipeline(): def __init__(self, opts): @@ -29,6 +33,11 @@ def __init__(self, opts): self.val_data = load_csv(opts['DATASET']['VAL']['csv_file']) self.test_data = load_csv(opts['DATASET']['TEST']['csv_file']) + self.logger = None + self.current_symbol = None + self.model = None + self.visualizer = None + def _init_logging(self, log_file='log.txt', name='logger'): """ Initialize logging """ @@ -90,15 +99,19 @@ def report_monthly_data(self, model, save_dir=None): def export_df_result(self, model, save_dir=None): totalAvgSpread, totalProfit, num_order = model.get_total_history().get_statistic() - profit, sharpe, max_drawdown_value = self.calculate_performance_score(totalProfit, - num_order, - self.opts['PIPELINE']['params']['fee']) + profit, sharpe, max_drawdown_value = self.calculate_performance_score( + totalProfit, + num_order, + self.opts['PIPELINE']['params']['fee'] + ) - df = pd.DataFrame({'avg_spread': [totalAvgSpread], - 'num_trade': [num_order.sum()], - 'profit': [profit], - 'sharpe_ratio': [sharpe], - 'max_drawdown': [max_drawdown_value]}) + df = pd.DataFrame({ + 'avg_spread': [totalAvgSpread], + 'num_trade': [num_order.sum()], + 'profit': [profit], + 'sharpe_ratio': [sharpe], + 'max_drawdown': [max_drawdown_value] + }) if save_dir: df.to_csv(save_dir/'result.csv', index=False) @@ -197,50 +210,53 @@ def run_dataset(self, datasets, type_data='train', is_visualize=True, params=Non logger.info(f"result on {type_data} with profit_return {profit} sharpe {sharpe} mdd {max_drawdown_value}") return profit, sharpe, max_drawdown_value - - def run_papertrading(self, redis_client): + def data_handler_func(self, instrument: Instrument, internal_data_quote: InternalDataHubQuote): + cur_price = internal_data_quote.latest_matched_price + + now = datetime.fromtimestamp(internal_data_quote.timestamp).astimezone(TIMEZONE) + if cur_price is None: + self.logger.info(f"There is no price update yet at {now.strftime('%Y-%m-%d %H:%M:%S')}") + return + + instrument_str = str(instrument) + + if self.current_symbol is None: + self.current_symbol = instrument_str + self.model.init_capacity_every_month() + elif self.current_symbol != instrument_str: + self.visualizer.visualize_monthly_data( + bot_data=self.model.get_monthly_history(), + bot_data_market_time_price=self.model.monthly_tick_data, + symbol=self.current_symbol, + save_dir=self.opts['PIPELINE']['params']['save_dir'] / 'papertrading' + ) + self._log_results(self.logger, self.model, self.current_symbol) + self.report_monthly_data( + self.model, + save_dir=self.opts['PIPELINE']['params']['save_dir'] / 'papertrading' / self.current_symbol + ) + self.model.init_capacity_every_month() + + self.model.fit_tickdata(Tickdata(now, cur_price)) + + def run_papertrading(self, redis_datahub: RedisDataHub): os.makedirs(self.opts['PIPELINE']['params']['save_dir'], exist_ok=True) - logger = self._init_logging(self.opts['PIPELINE']['params']['save_dir']/f'papertrading_log.txt', name='papertrading_logger') - model = Bot(self.opts['PIPELINE']['params'], logger=logger) - visualizer = VISUALIZER(fees=self.opts['PIPELINE']['params']['fee']) + self.logger = self._init_logging(self.opts['PIPELINE']['params']['save_dir']/f'papertrading_log.txt', name='papertrading_logger') + self.model = Bot(self.opts['PIPELINE']['params'], logger=self.logger) + self.visualizer = VISUALIZER(fees=self.opts['PIPELINE']['params']['fee']) current_date = datetime.now() - tickersymbol = make_date_to_tickersymbol(current_date) - current_symbol = None - logger.info(f"Start papertrading with tickersymbol {tickersymbol}") - logger.info(f"with parameters: {self.opts['PIPELINE']['params']}") - def redis_message_handler(redis_message, current_symbol=current_symbol, model=model, logger=logger, visualizer=visualizer, tickersymbol=tickersymbol): - - quote = json.loads(redis_message['data']) - cur_price = quote['latest_matched_price'] - - now = datetime.fromtimestamp(quote['timestamp']).astimezone(TIMEZONE) - if cur_price is None: - logger.info(f"There is no price update yet at {now.strftime('%Y-%m-%d %H:%M:%S')}") - return - - if current_symbol is None: - current_symbol = tickersymbol - model.init_capacity_every_month() - elif current_symbol != tickersymbol: - visualizer.visualize_monthly_data(bot_data=model.get_monthly_history(), - bot_data_market_time_price=model.monthly_tick_data, - symbol=current_symbol, - save_dir=self.opts['PIPELINE']['params']['save_dir']/'papertrading') - self._log_results(logger,model, current_symbol) - self.report_monthly_data(model, save_dir=self.opts['PIPELINE']['params']['save_dir']/'papertrading'/current_symbol) - model.init_capacity_every_month() - - model.fit_tickdata(Tickdata(now, cur_price)) - - F1M_CHANNEL = f'HNXDS:{tickersymbol}' - - pub_sub = redis_client.pubsub() - pub_sub.psubscribe(**{F1M_CHANNEL: redis_message_handler}) - # subcribe to channel F1M channel - # register a callback function to handle message received from redis-server - while True: - pubsub_thread = pub_sub.run_in_thread(sleep_time=1) - - time.sleep(60) - - # pubsub_thread.stop() \ No newline at end of file + ticker_symbol = make_date_to_tickersymbol(current_date) + instrument = Instrument(ticker_symbol=ticker_symbol, exchange_code_str='HNXDS') + self.logger.info(f"Start papertrading with tickersymbol {ticker_symbol}") + self.logger.info(f"with parameters: {self.opts['PIPELINE']['params']}") + + f1m_channel_pattern = instrument.id + + data_handler = RedisDataHandler( + data_handler_function=self.data_handler_func, + subscribed_pattern=f1m_channel_pattern, + run_in_thread=True, + sleep_time=1, + ) + redis_datahub.data_handler_list.append(data_handler) + redis_datahub.start_pubsub() From aef440f1a763dce9a38bf83211c7336d41adf7d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Fri, 6 Sep 2024 14:04:47 +0700 Subject: [PATCH 2/6] Updated requirements.txt, redis account template. --- .gitignore | 3 ++- configs/usr/redis_account.yaml.template | 3 +++ requirements.txt | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 configs/usr/redis_account.yaml.template diff --git a/.gitignore b/.gitignore index 7769ef7..fba2b65 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,5 @@ docs/_build/ *.zip runs/* .idea/* -configs/usr/db_account.yaml \ No newline at end of file +configs/usr/db_account.yaml +configs/usr/redis_account.yaml diff --git a/configs/usr/redis_account.yaml.template b/configs/usr/redis_account.yaml.template new file mode 100644 index 0000000..106f6e0 --- /dev/null +++ b/configs/usr/redis_account.yaml.template @@ -0,0 +1,3 @@ +host: #### +port: #### +password: #### \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 8f68f75..6686364 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,4 +17,6 @@ six==1.16.0 tenacity==8.2.3 tzdata==2023.3 vnstock==0.2.8.7 -kaleido \ No newline at end of file +kaleido +optuna +plutus --index-url=http://localhost:3141/testuser/devs From c77e17e8e3d31970c179ccdea7b85cb3b8c7f024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Fri, 6 Sep 2024 21:15:59 +0700 Subject: [PATCH 3/6] Added loop to maintain the process. --- run_papertrading.py | 5 ++++- src/pipeline.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/run_papertrading.py b/run_papertrading.py index 4ca372e..ed3569e 100644 --- a/run_papertrading.py +++ b/run_papertrading.py @@ -1,3 +1,5 @@ +import time + import redis import json import pytz @@ -54,4 +56,5 @@ def main(): if __name__ == "__main__": main() - \ No newline at end of file + while True: + time.sleep(0.01) diff --git a/src/pipeline.py b/src/pipeline.py index b001536..04dda55 100644 --- a/src/pipeline.py +++ b/src/pipeline.py @@ -256,7 +256,7 @@ def run_papertrading(self, redis_datahub: RedisDataHub): data_handler_function=self.data_handler_func, subscribed_pattern=f1m_channel_pattern, run_in_thread=True, - sleep_time=1, + sleep_time=0.001, ) redis_datahub.data_handler_list.append(data_handler) redis_datahub.start_pubsub() From b1b82efb4a6e8ad9c2c5df9654c16e0278bba9bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Mon, 9 Sep 2024 10:45:07 +0700 Subject: [PATCH 4/6] Restructured project --- src/deepmm/__init__.py | 0 src/deepmm/bot/__init__.py | 0 src/{ => deepmm}/bot/bot.py | 12 ++++++------ src/deepmm/broker/__init__.py | 0 src/{ => deepmm}/broker/order_management_system.py | 2 +- src/deepmm/data/__init__.py | 0 src/{ => deepmm}/data/data_type.py | 0 src/{ => deepmm}/data/history_management.py | 4 ++-- src/{ => deepmm}/data/inventory_management.py | 5 ++--- src/{ => deepmm}/metrics/__init__.py | 0 src/{ => deepmm}/metrics/drawdown.py | 0 src/{ => deepmm}/metrics/sharpe_ratio.py | 0 src/deepmm/optimizers/__init__.py | 0 src/{ => deepmm}/optimizers/bruteforce_optimizer.py | 2 +- src/{ => deepmm}/optimizers/optuna_optimizer.py | 0 src/{ => deepmm}/pipeline.py | 13 +++++-------- run.py => src/deepmm/run.py | 2 +- .../deepmm/run_papertrading.py | 1 - src/deepmm/strategy/__init__.py | 0 src/{ => deepmm}/strategy/asmodel.py | 1 - src/deepmm/utils/__init__.py | 0 {utils => src/deepmm/utils}/argument_management.py | 4 ++-- {utils => src/deepmm/utils}/date_management.py | 0 {utils => src/deepmm/utils}/db_connection.py | 0 {utils => src/deepmm/utils}/download.py | 2 +- .../deepmm/utils/download_data_from_db.py | 8 ++------ {utils => src/deepmm/utils}/file_management.py | 0 {utils => src/deepmm/utils}/path_management.py | 0 src/{ => deepmm}/utils/visualizer.py | 2 +- 29 files changed, 24 insertions(+), 34 deletions(-) create mode 100644 src/deepmm/__init__.py create mode 100644 src/deepmm/bot/__init__.py rename src/{ => deepmm}/bot/bot.py (96%) create mode 100644 src/deepmm/broker/__init__.py rename src/{ => deepmm}/broker/order_management_system.py (95%) create mode 100644 src/deepmm/data/__init__.py rename src/{ => deepmm}/data/data_type.py (100%) rename src/{ => deepmm}/data/history_management.py (98%) rename src/{ => deepmm}/data/inventory_management.py (93%) rename src/{ => deepmm}/metrics/__init__.py (100%) rename src/{ => deepmm}/metrics/drawdown.py (100%) rename src/{ => deepmm}/metrics/sharpe_ratio.py (100%) create mode 100644 src/deepmm/optimizers/__init__.py rename src/{ => deepmm}/optimizers/bruteforce_optimizer.py (98%) rename src/{ => deepmm}/optimizers/optuna_optimizer.py (100%) rename src/{ => deepmm}/pipeline.py (97%) rename run.py => src/deepmm/run.py (89%) rename run_papertrading.py => src/deepmm/run_papertrading.py (99%) create mode 100644 src/deepmm/strategy/__init__.py rename src/{ => deepmm}/strategy/asmodel.py (98%) create mode 100644 src/deepmm/utils/__init__.py rename {utils => src/deepmm/utils}/argument_management.py (97%) rename {utils => src/deepmm/utils}/date_management.py (100%) rename {utils => src/deepmm/utils}/db_connection.py (100%) rename {utils => src/deepmm/utils}/download.py (96%) rename download_data_from_db.py => src/deepmm/utils/download_data_from_db.py (92%) rename {utils => src/deepmm/utils}/file_management.py (100%) rename {utils => src/deepmm/utils}/path_management.py (100%) rename src/{ => deepmm}/utils/visualizer.py (99%) diff --git a/src/deepmm/__init__.py b/src/deepmm/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/deepmm/bot/__init__.py b/src/deepmm/bot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/bot/bot.py b/src/deepmm/bot/bot.py similarity index 96% rename from src/bot/bot.py rename to src/deepmm/bot/bot.py index 1bbcf16..394c9a0 100644 --- a/src/bot/bot.py +++ b/src/deepmm/bot/bot.py @@ -4,13 +4,13 @@ from tqdm import tqdm from copy import deepcopy -from src.strategy.asmodel import PureMM -from src.broker.order_management_system import OrderManagementSystem -from src.data.data_type import DataOrder, PriceSize, PositionSide, OrderType, Tickdata -from src.data.inventory_management import InventoryManagement -from src.data.history_management import HistoricalOrderDataManagement, HistoricalTickdata +from deepmm.strategy.asmodel import PureMM +from deepmm.broker.order_management_system import OrderManagementSystem +from deepmm.data.data_type import DataOrder, PriceSize, PositionSide, OrderType, Tickdata +from deepmm.data.inventory_management import InventoryManagement +from deepmm.data.history_management import HistoricalOrderDataManagement, HistoricalTickdata -from utils.date_management import check_stringtime_greater_closetime, \ +from deepmm.utils.date_management import check_stringtime_greater_closetime, \ check_two_stringtime_greater_thresh, \ check_stringtime_less_starttime, \ check_two_string_is_same_day, \ diff --git a/src/deepmm/broker/__init__.py b/src/deepmm/broker/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/broker/order_management_system.py b/src/deepmm/broker/order_management_system.py similarity index 95% rename from src/broker/order_management_system.py rename to src/deepmm/broker/order_management_system.py index 7b56ffb..dfe4898 100644 --- a/src/broker/order_management_system.py +++ b/src/deepmm/broker/order_management_system.py @@ -1,5 +1,5 @@ from copy import deepcopy -from src.data.data_type import DataOrder, PriceSize, PositionSide, OrderType +from deepmm.data.data_type import DataOrder, PositionSide, OrderType class OrderManagementSystem: def __init__(self): diff --git a/src/deepmm/data/__init__.py b/src/deepmm/data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/data/data_type.py b/src/deepmm/data/data_type.py similarity index 100% rename from src/data/data_type.py rename to src/deepmm/data/data_type.py diff --git a/src/data/history_management.py b/src/deepmm/data/history_management.py similarity index 98% rename from src/data/history_management.py rename to src/deepmm/data/history_management.py index 4a37e9c..13b691c 100644 --- a/src/data/history_management.py +++ b/src/deepmm/data/history_management.py @@ -1,8 +1,8 @@ from copy import deepcopy import numpy as np import pandas as pd -from src.data.data_type import PositionSide -from utils.date_management import make_date_from_string +from deepmm.data.data_type import PositionSide +from deepmm.utils.date_management import make_date_from_string class HistoricalTickdata(): def __init__(self): diff --git a/src/data/inventory_management.py b/src/deepmm/data/inventory_management.py similarity index 93% rename from src/data/inventory_management.py rename to src/deepmm/data/inventory_management.py index 196fca1..2e5d8b2 100644 --- a/src/data/inventory_management.py +++ b/src/deepmm/data/inventory_management.py @@ -1,7 +1,6 @@ -import pandas as pd - from copy import deepcopy -from src.data.data_type import DataOrder, PositionSide, PriceSize +from deepmm.data.data_type import DataOrder, PositionSide + class InventoryManagement(): def __init__(self, maximum_inventory): diff --git a/src/metrics/__init__.py b/src/deepmm/metrics/__init__.py similarity index 100% rename from src/metrics/__init__.py rename to src/deepmm/metrics/__init__.py diff --git a/src/metrics/drawdown.py b/src/deepmm/metrics/drawdown.py similarity index 100% rename from src/metrics/drawdown.py rename to src/deepmm/metrics/drawdown.py diff --git a/src/metrics/sharpe_ratio.py b/src/deepmm/metrics/sharpe_ratio.py similarity index 100% rename from src/metrics/sharpe_ratio.py rename to src/deepmm/metrics/sharpe_ratio.py diff --git a/src/deepmm/optimizers/__init__.py b/src/deepmm/optimizers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/optimizers/bruteforce_optimizer.py b/src/deepmm/optimizers/bruteforce_optimizer.py similarity index 98% rename from src/optimizers/bruteforce_optimizer.py rename to src/deepmm/optimizers/bruteforce_optimizer.py index 3c939b0..03a437a 100644 --- a/src/optimizers/bruteforce_optimizer.py +++ b/src/deepmm/optimizers/bruteforce_optimizer.py @@ -1,7 +1,7 @@ import numpy as np from tqdm import tqdm import multiprocessing as mp -from utils.path_management import increment_path + def optimize_worker(datasets, params, run_dataset): profit, sharpe, mdd = run_dataset(datasets, diff --git a/src/optimizers/optuna_optimizer.py b/src/deepmm/optimizers/optuna_optimizer.py similarity index 100% rename from src/optimizers/optuna_optimizer.py rename to src/deepmm/optimizers/optuna_optimizer.py diff --git a/src/pipeline.py b/src/deepmm/pipeline.py similarity index 97% rename from src/pipeline.py rename to src/deepmm/pipeline.py index 04dda55..aa2eac7 100644 --- a/src/pipeline.py +++ b/src/deepmm/pipeline.py @@ -1,19 +1,16 @@ import os import time import pytz -import json import logging -import optuna import numpy as np import pandas as pd from datetime import datetime -from pathlib import Path -from src.bot.bot import Bot -from src.optimizers.bruteforce_optimizer import BruteForceOptimizer -from src.data.data_type import Tickdata -from src.metrics import sharpe_ratio, maximum_drawdown -from src.utils.visualizer import VISUALIZER +from deepmm.bot.bot import Bot +from deepmm.optimizers.bruteforce_optimizer import BruteForceOptimizer +from deepmm.data.data_type import Tickdata +from deepmm.metrics import sharpe_ratio, maximum_drawdown +from deepmm.utils.visualizer import VISUALIZER from utils.file_management import load_csv from utils.date_management import make_date_to_tickersymbol diff --git a/run.py b/src/deepmm/run.py similarity index 89% rename from run.py rename to src/deepmm/run.py index 24a82d0..0583ba9 100644 --- a/run.py +++ b/src/deepmm/run.py @@ -1,6 +1,6 @@ from pathlib import Path -from src.pipeline import Pipeline +from deepmm.pipeline import Pipeline from utils.argument_management import Opts FILE = Path(__file__).resolve() diff --git a/run_papertrading.py b/src/deepmm/run_papertrading.py similarity index 99% rename from run_papertrading.py rename to src/deepmm/run_papertrading.py index ed3569e..e64eced 100644 --- a/run_papertrading.py +++ b/src/deepmm/run_papertrading.py @@ -1,6 +1,5 @@ import time -import redis import json import pytz from datetime import datetime diff --git a/src/deepmm/strategy/__init__.py b/src/deepmm/strategy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/strategy/asmodel.py b/src/deepmm/strategy/asmodel.py similarity index 98% rename from src/strategy/asmodel.py rename to src/deepmm/strategy/asmodel.py index 1d0188c..d839df2 100644 --- a/src/strategy/asmodel.py +++ b/src/deepmm/strategy/asmodel.py @@ -2,7 +2,6 @@ import numpy as np import math -from utils.date_management import calculate_distance_milis class PureMM: def __init__(self, opts): diff --git a/src/deepmm/utils/__init__.py b/src/deepmm/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/argument_management.py b/src/deepmm/utils/argument_management.py similarity index 97% rename from utils/argument_management.py rename to src/deepmm/utils/argument_management.py index b69382f..1ac5609 100644 --- a/utils/argument_management.py +++ b/src/deepmm/utils/argument_management.py @@ -6,8 +6,8 @@ import yaml import json from pathlib import Path -from utils.file_management import load_yaml -from utils.path_management import increment_path +from deepmm.utils.file_management import load_yaml +from deepmm.utils.path_management import increment_path class Config(dict): diff --git a/utils/date_management.py b/src/deepmm/utils/date_management.py similarity index 100% rename from utils/date_management.py rename to src/deepmm/utils/date_management.py diff --git a/utils/db_connection.py b/src/deepmm/utils/db_connection.py similarity index 100% rename from utils/db_connection.py rename to src/deepmm/utils/db_connection.py diff --git a/utils/download.py b/src/deepmm/utils/download.py similarity index 96% rename from utils/download.py rename to src/deepmm/utils/download.py index 04087f6..28a48d4 100644 --- a/utils/download.py +++ b/src/deepmm/utils/download.py @@ -1,4 +1,4 @@ -from utils.db_connection import DataConnection +from deepmm.utils.db_connection import DataConnection import os diff --git a/download_data_from_db.py b/src/deepmm/utils/download_data_from_db.py similarity index 92% rename from download_data_from_db.py rename to src/deepmm/utils/download_data_from_db.py index aa4024c..7d085af 100644 --- a/download_data_from_db.py +++ b/src/deepmm/utils/download_data_from_db.py @@ -1,12 +1,8 @@ from pathlib import Path -from utils.date_management import get_num_days_to_maturity +from deepmm.utils.db_connection import DataConnection -from utils.db_connection import DataConnection - -from utils.file_management import load_yaml -from utils.download import down_derivative_midprice_db, down_derivative_matched_db -import pandas as pd +from deepmm.utils.file_management import load_yaml FILE = Path(__file__).resolve() ROOT = FILE.parents[0] diff --git a/utils/file_management.py b/src/deepmm/utils/file_management.py similarity index 100% rename from utils/file_management.py rename to src/deepmm/utils/file_management.py diff --git a/utils/path_management.py b/src/deepmm/utils/path_management.py similarity index 100% rename from utils/path_management.py rename to src/deepmm/utils/path_management.py diff --git a/src/utils/visualizer.py b/src/deepmm/utils/visualizer.py similarity index 99% rename from src/utils/visualizer.py rename to src/deepmm/utils/visualizer.py index 51c0104..3ee2156 100644 --- a/src/utils/visualizer.py +++ b/src/deepmm/utils/visualizer.py @@ -7,7 +7,7 @@ import plotly.subplots -from src.data.history_management import HistoricalOrderDataManagement, HistoricalTickdata +from deepmm.data.history_management import HistoricalOrderDataManagement, HistoricalTickdata class VISUALIZER(): From 073773249b9f31f576e6b8d3e520d6284b46623d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Mon, 9 Sep 2024 10:55:09 +0700 Subject: [PATCH 5/6] Removed tracking redis_account.yaml --- configs/usr/redis_account.yaml | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 configs/usr/redis_account.yaml diff --git a/configs/usr/redis_account.yaml b/configs/usr/redis_account.yaml deleted file mode 100644 index 106f6e0..0000000 --- a/configs/usr/redis_account.yaml +++ /dev/null @@ -1,3 +0,0 @@ -host: #### -port: #### -password: #### \ No newline at end of file From 8bf6da068cbd93b6dcb1c99089350903222e1a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A2n?= Date: Mon, 9 Sep 2024 13:12:58 +0700 Subject: [PATCH 6/6] Reformatted run_papertrading.py --- src/deepmm/run_papertrading.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/deepmm/run_papertrading.py b/src/deepmm/run_papertrading.py index e64eced..ae495b2 100644 --- a/src/deepmm/run_papertrading.py +++ b/src/deepmm/run_papertrading.py @@ -21,14 +21,14 @@ # handle pricehub quote def redis_message_handler(redis_message): - quote = json.loads(redis_message['data']) - cur_price = quote['latest_matched_price'] + quote = json.loads(redis_message['data']) + cur_price = quote['latest_matched_price'] - # check if cur_price updated yet - if cur_price is None: - return + # check if cur_price updated yet + if cur_price is None: + return - datetime_now = datetime.fromtimestamp(quote['timestamp']).astimezone(TIMEZONE).time() + datetime_now = datetime.fromtimestamp(quote['timestamp']).astimezone(TIMEZONE).time() def main():