Files
MoFin/archive/evolution-cleanup-20260821/evolution/__init__.py
T
xxm 5b9d46efc6 refactor: 归档策略进化模块+新建评估页面+API
- 归档 evolution/ + meta_growth/meta_watchdog/ab_research_daily
- docs/evolution-archive-readme.md: 归档说明(旧模块功能+替代方案)
- server.py: 新增 /api/research/effectiveness + effectiveness/summary + recommendation_log + execution_log
- static/effectiveness.html: 新评估页面(概览/详细评估/推荐记录/执行记录)
- 策略进化改为人驱动闭环(评估→用户决策→调整)
2026-08-21 02:47:38 +08:00

71 lines
2.4 KiB
Python

"""
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("进化模块数据表初始化完成")