49日志

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转化为交易信号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • XGBoost 通过训练特征,在训练一个特征的基础上训练下一个,预测与真实分布的差距,通过不断训练弥补差距,最终组...
    话惜凉阅读 876评论 0 0
  • 在calc_util.py中,核心函数calc_features通过分析历史K线数据,识别交替的高点和低点,并计算...
    话惜凉阅读 431评论 0 0
  • 建模与调参 4.1 学习目标 1. 学习在金融分控领域常用的机器学习模型 2. 学习机器学习模型的建模过程与调参流...
    XinTong_efae阅读 3,480评论 0 1
  • 特征工程(feature engineering):利用领域知识和现有数据,创造出新的特征,用于机器学习算法;可以...
    rowcolumn阅读 4,077评论 2 1
  • 以下内容都是在工作中的一些小实践,代码部分是参考网上的已有的然后再自行根据情况修改过的。记载主要是想以后用的时候可...
    H2016阅读 7,629评论 0 7

友情链接更多精彩内容