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