import core.logger as logging from datetime import datetime from time import sleep import pandas as pd from core.biz.market_data import MarketData from core.trade.ma_break_statistics import MaBreakStatistics from core.db.db_market_data import DBMarketData from core.biz.metrics_calculation import MetricsCalculation from core.utils import ( datetime_to_timestamp, timestamp_to_datetime, transform_date_time_to_timestamp, ) from trade_data_main import TradeDataMain from config import ( API_KEY, SECRET_KEY, PASSPHRASE, SANDBOX, OKX_MONITOR_CONFIG, MYSQL_CONFIG, BAR_THRESHOLD, ) logger = logging.logger class TradeMaStrategyMain: def __init__(self): self.ma_break_statistics = MaBreakStatistics() def batch_ma_break_statistics(self): """ 批量计算MA突破统计 """ logger.info("开始批量计算MA突破统计") strategy_dict = self.ma_break_statistics.main_strategy pct_chg_df_list = [] for strategy_name, strategy_info in strategy_dict.items(): pct_chg_df = self.ma_break_statistics.batch_statistics(strategy_name=strategy_name) pct_chg_df_list.append(pct_chg_df) pct_chg_df = pd.concat(pct_chg_df_list) def statistics_pct_chg(self, pct_chg_df: pd.DataFrame): """ 1. 将各个symbol, 各个bar, 各个策略的pct_chg_total构建为新的数据结构,如: symbol, bar, stratege_name_1, stratege_name_2, stratege_name_3, ... stratege_name_1的值, 为该策略的pct_chg_total的值 2. 构建新的数据结构: symbol, bar, max_pct_chg_total_strategy_name, min_pct_chg_total_strategy_name 如: BCT-USDT, 15m, 均线macd结合策略2, 全均线策略 3. 构建新的数据结构, bar, max_pct_chg_total_strategy_name, min_pct_chg_total_strategy_name 如: 15m, 均线macd结合策略2, 全均线策略 4. 构建新的数据结构, symbol, max_pct_chg_total_strategy_name, min_pct_chg_total_strategy_name 如: BCT-USDT, 均线macd结合策略2, 全均线策略 """ logger.info("开始统计pct_chg") if __name__ == "__main__": trade_ma_strategy_main = TradeMaStrategyMain() trade_ma_strategy_main.batch_ma_break_statistics()