calc_util.py
处理数据,生成特征
函数 calc_features
输入开盘价、最高价、最低价、收盘价的 DataFrame。
min_interval最小间隔
max_len最大长度
close:当前收盘价
特征计算
get_features
输入原始的DataFrame
pre_clos和价格变化率diff作为标签
取 1000 个数据调用 calc_features 生成特征
返回特征 DataFrame feature_df,score、score_0 到 score_30和标签列label
calc_model_util.py
回归模型,预测价格变化率diff
函数 train_model
输入带特征 DataFrame
数据分割80% 训练集20% 测试集
predict_result
输入特征 DataFrame 和训练好的模型
逻辑调用模型预测 pre
返回预测结果的DataFrame,result.csv
model_demo4_strategy.py
on_15min_bar将新15分钟 K 线添加到 basic_list
特征生成basic_list达到1000条时,调用calc_features生成特征
特征加入 feature_list固定长度 10
模型预测当 feature_list 满 10 条时,调用 predict_result 预测最新价格变化率
保存预测结果到 predict_result
第一关:数据炼金术calc_util.py
目标:将原始数据炼化成“特征药水”,为模型提供弹药
1. 准备材料
武器:原始K线数据(ETHUSDT_15m.csv,由这些材料铸就datetime, open, high, low, close列)
配方:calc_util.py
炼制步骤
注入数据:将数据文件放到指定路径
运行脚本:
输出:
生成“特征药水”feature_df(包含score、score_0到score_30等31种特征成分)
控制台打印炼制耗时和特征列表
技能解析
滑动窗口:每次取最近1000根K线,像“炼金炉”一样滚动提取特征
波动识别:交替高点和低点,生成标准分数
标签生成:计算未来5期价格变化率(diff),作为模型的训练目标
第二关:模型锻造厂(calc_model_util.py)
目标:用特征药水锻造“预测神剑”,一击斩断价格迷雾
1. 准备材料
原料:feature.csv(由第一关掉落)
锻造炉:XGBoost模型(代码已内置)
2. 锻造步骤
分割数据:
用于训练(80%),用于测试(20%)
启动锻造:
输出:
模型文件model.pkl(你的“神剑”)
测试集MSE和R²分数(数值越低/越高,剑越锋利)
技能解析
XGBoost加速:使用DMatrix数据结构,训练速度提升50%
早停法:如果连续20轮模型没有进步,自动停止训练,防止“过拟合”走火入魔
第三关:策略战场model_demo4_strategy.py
目标:携带神剑上战场,用实时预测指挥交易机器人
1. 战前准备
装备:
预训练模型model.pkl
交易框架vn.py
战场地图:实时15分钟K线数据流
2. 战斗流程
初始化策略
启动策略
自动订阅实时数据,生成15分钟K线BarGenerator,由on_bar合成分钟数据,在生成15bar
维护两个“战备队列”
basic_list:最近1000根K线(实时更新)
feature_list:最近10组特征(用于预测)
实时预测
每收到一根新15分钟K线,调用calc_features生成特征
当feature_list满10组时,用模型预测下一期价格变化率(pre)
战术决策:
根据pre值决定买入/卖出,注意calc_util.py默认10000倍率
技能解析
双端队列:collections.deque像“滚动背包”,自动丢弃旧数据,保持轻装上阵
self.basic_list = collections.deque(maxlen=1000)
self.feature_list = collections.deque(maxlen=10)
预测延迟:需累计10组特征才触发预测
结果保存:策略停止时,预测结果输出到result.csv,用于战后复盘
胜利宣言
你已成功打通三关!现在可以
用calc_util.py批量生成特征数据
用calc_model_util.py快速训练模型
新任务:扩展策略买卖逻辑,让预测值pre转化为交易信号