""" evolution/__init__.py — 自我进化模块 Loop Engineering: 策略健康度监控 + 教训提取 + 自动迭代 """ import sqlite3, os DB = os.environ.get('MOFIN_DB', '/home/hmo/MoFin/data/mofin.db') def init_evolution_tables(conn=None): """初始化进化模块数据表""" close_conn = False if conn is None: conn = sqlite3.connect(DB) close_conn = True # 策略健康度每日快照 conn.execute(""" CREATE TABLE IF NOT EXISTS strategy_health ( id INTEGER PRIMARY KEY AUTOINCREMENT, strategy_version TEXT NOT NULL, date TEXT NOT NULL, live_trades INTEGER DEFAULT 0, live_wins INTEGER DEFAULT 0, live_return_pct REAL DEFAULT 0, backtest_wr REAL DEFAULT 0, backtest_avg_ret REAL DEFAULT 0, deviation REAL DEFAULT 0, health_score REAL DEFAULT 0, created_at TEXT DEFAULT (datetime('now','localtime')), UNIQUE(strategy_version, date) ) """) conn.execute("CREATE INDEX IF NOT EXISTS idx_health_version_date ON strategy_health(strategy_version, date)") # 教训库 conn.execute(""" CREATE TABLE IF NOT EXISTS strategy_lessons ( id INTEGER PRIMARY KEY AUTOINCREMENT, strategy_version TEXT NOT NULL, trade_id INTEGER, lesson_type TEXT NOT NULL, lesson_text TEXT NOT NULL, confidence REAL DEFAULT 0.5, applied INTEGER DEFAULT 0, created_at TEXT DEFAULT (datetime('now','localtime')) ) """) conn.execute("CREATE INDEX IF NOT EXISTS idx_lessons_version ON strategy_lessons(strategy_version, applied)") # 策略迭代历史 conn.execute(""" CREATE TABLE IF NOT EXISTS strategy_evolution ( id INTEGER PRIMARY KEY AUTOINCREMENT, parent_version TEXT NOT NULL, child_version TEXT NOT NULL, change_description TEXT, backtest_result TEXT, promoted INTEGER DEFAULT 0, created_at TEXT DEFAULT (datetime('now','localtime')) ) """) conn.execute("CREATE INDEX IF NOT EXISTS idx_evolution_parent ON strategy_evolution(parent_version, promoted)") conn.commit() if close_conn: conn.close() if __name__ == '__main__': init_evolution_tables() print("进化模块数据表初始化完成")