crypto_quant/monitor_main.py

45 lines
1.7 KiB
Python

import logging
from time import sleep
from core.data_monitor import DataMonitor
from core.db_manager import save_market_data_to_mysql
from config import API_KEY, SECRET_KEY, PASSPHRASE, SANDBOX, \
MONITOR_CONFIG, MYSQL_CONFIG
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s: %(message)s')
class MonitorMain:
def __init__(self):
self.data_monitor = DataMonitor(
api_key=API_KEY,
secret_key=SECRET_KEY,
passphrase=PASSPHRASE,
sandbox=SANDBOX,
)
self.symbols = MONITOR_CONFIG.get("volume_monitor", {}).get("symbols", ["XCH-USDT"])
self.intervals = MONITOR_CONFIG.get("volume_monitor", {}).get("intervals", ["5m", "15m", "1H", "4H", "1D"])
self.initial_date = MONITOR_CONFIG.get("volume_monitor", {}).get("initial_date", "2025-07-01 00:00:00")
mysql_user = MYSQL_CONFIG.get("user", "xch")
mysql_password = MYSQL_CONFIG.get("password", "")
if not mysql_password:
raise ValueError("MySQL password is not set")
mysql_host = MYSQL_CONFIG.get("host", "localhost")
mysql_port = MYSQL_CONFIG.get("port", 3306)
mysql_database = MYSQL_CONFIG.get("database", "okx")
self.db_url = f"mysql+pymysql://{mysql_user}:{mysql_password}@{mysql_host}:{mysql_port}/{mysql_database}"
def initial_data(self):
for symbol in self.symbols:
for interval in self.intervals:
data = self.data_monitor.get_historical_kline_data(symbol=symbol,
start=self.initial_date,
bar=interval)
save_market_data_to_mysql(data, self.db_url)
if __name__ == "__main__":
monitor_main = MonitorMain()
monitor_main.initial_data()