2025-08-22 10:48:59 +00:00
|
|
|
|
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,
|
2025-08-31 03:20:59 +00:00
|
|
|
|
OKX_MONITOR_CONFIG,
|
2025-08-22 10:48:59 +00:00
|
|
|
|
MYSQL_CONFIG,
|
|
|
|
|
|
BAR_THRESHOLD,
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
logger = logging.logger
|
|
|
|
|
|
|
|
|
|
|
|
class TradeMaStrategyMain:
|
2025-09-01 10:01:21 +00:00
|
|
|
|
def __init__(self, is_us_stock: bool = False):
|
|
|
|
|
|
self.ma_break_statistics = MaBreakStatistics(is_us_stock=is_us_stock)
|
2025-08-22 10:48:59 +00:00
|
|
|
|
|
|
|
|
|
|
def batch_ma_break_statistics(self):
|
|
|
|
|
|
"""
|
|
|
|
|
|
批量计算MA突破统计
|
|
|
|
|
|
"""
|
|
|
|
|
|
logger.info("开始批量计算MA突破统计")
|
|
|
|
|
|
strategy_dict = self.ma_break_statistics.main_strategy
|
2025-08-23 17:44:33 +00:00
|
|
|
|
pct_chg_df_list = []
|
2025-08-22 10:48:59 +00:00
|
|
|
|
for strategy_name, strategy_info in strategy_dict.items():
|
2025-08-23 17:44:33 +00:00
|
|
|
|
pct_chg_df = self.ma_break_statistics.batch_statistics(strategy_name=strategy_name)
|
|
|
|
|
|
pct_chg_df_list.append(pct_chg_df)
|
2025-08-25 08:58:38 +00:00
|
|
|
|
|
2025-08-23 17:44:33 +00:00
|
|
|
|
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")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-22 10:48:59 +00:00
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2025-09-01 10:01:21 +00:00
|
|
|
|
trade_ma_strategy_main = TradeMaStrategyMain(is_us_stock=True)
|
2025-08-22 10:48:59 +00:00
|
|
|
|
trade_ma_strategy_main.batch_ma_break_statistics()
|