数据处理节点
一 节点概述
数据处理节点是量化策略的特征工程中心,负责计算技术指标和量化因子, 将 数据源节点 输出的原始 OHLCV 和 基本面数据 转换为策略可用的特征。 计算得到的因子可以直接用于 策略节点 的条件判断,也可以作为 AI模型节点 的输入特征。
二 模拟配置
下方是数据处理节点的真实配置面板,你可以直接操作体验各个配置项的功能。配置面板包含四个核心部分:向前取数据、因子配置、Label标注和条件过滤。
所有因子计算需要的历史期数最大值,最大支持 10000(超出将自动按 10000 处理)
从因子库选择预设因子,或编写自定义表达式,两者自动合并
2.1 向前取数据
设置因子计算所需的历史数据长度(期数)100,取值范围 1 - 1000。| 使用的因子 | 最大窗口期 | 建议设置 |
|---|---|---|
ta_ma(close, 20) | 20 | 25-30 |
ta_ma(close, 60) | 60 | 70-80 |
ta_bbands(close, 20, 2) | 20 | 25-30 |
t_std(close, 120) | 120 | 140-150 |
2.2 因子配置
通过因子库选择或自定义表达式定义量化因子| 因子类别 | 包含指标 | 用途说明 |
|---|---|---|
| 趋势类 | MA、EMA、WMA、MACD、布林带 | 判断价格趋势方向和强度 |
| 动量类 | RSI、KDJ、威廉指标、ROC、CCI | 衡量价格变化速度,识别超买超卖 |
| 波动率类 | ATR、标准差、波动率、真实波幅 | 衡量价格波动程度,用于风控 |
| 成交量类 | 量比、OBV、成交额、换手率 | 分析市场活跃度和资金流向 |
因子名 = 表达式,多个因子用逗号分隔。 以 _ 开头的变量名为中间变量,仅用于计算过程,不会输出到结果。 详细语法规则请参考 表达式语法, 可用算子列表请参考 表达式算子。| 表达式示例 | 说明 | 输出 |
|---|---|---|
_ma_5 = ta_ma(close, 5) | 5周期均线(中间变量) | 不输出 |
momentum = close / _ma_5 - 1 | 价格偏离5日均线的幅度 | 输出 |
rsi_14 = ta_rsi(close, 14) | 14周期RSI指标 | 输出 |
vol_ratio = volume / t_mean(volume, 20) | 量比(当前量/20日均量) | 输出 |
volatility = t_std(pct(close, 1), 20) | 20日收益率波动率 | 输出 |
ta_ma, ta_ema, ta_wma, t_meanta_rsi, ta_macd, ta_kdj, ta_ccita_atr, ta_bbands, t_stdpct, log, abs, max, min, rank, shift2.3 Label标注
定义AI模型训练所需的标签数据(可选)label = shift(close, -5) / shift(open, -1) - 1,表示以下根K线开盘价为基准的未来5期收益率。二分类任务时,引擎自动将收益率按阈值(默认0)转为 0/1。shift() 函数获取未来数据。shift(close, -5) 表示"5个周期后的收盘价",负数表示向未来偏移。| Label 表达式 | 含义 | 任务类型 | 取值范围 |
|---|---|---|---|
shift(close, -5) / shift(open, -1) - 1 | 未来5期收益率(以下根K线开盘价为基准) | 回归 / 二分类 | -1 ~ +∞(二分类时引擎自动转0/1) |
shift(t_max(high, 5), -5) / shift(open, -1) - 1 | 未来5期最大涨幅 | 回归 | -1 ~ +∞ |
shift(t_min(low, 5), -5) / shift(open, -1) - 1 | 未来5期最大跌幅 | 回归 | -1 ~ 0 |
c_pctrank(shift(close, -5) / shift(open, -1) - 1) | 未来收益率排名(截面) | 排序/回归 | 0 ~ 1 |
Label 表达式可以引用前面因子配置中定义的变量
shift 到未来会产生末尾 NaN,系统会自动剔除
2.4 条件过滤
筛选满足条件的数据行(可选)volume > 1000000,保留成交量大于100万的数据。| 条件表达式 | 说明 | 使用场景 |
|---|---|---|
volume > 1000000 | 成交量 > 100万 | 过滤低流动性标的 |
(close > 1) & (close < 100000) | 价格在合理区间 | 剔除极端价格 |
abs(pct(close, 1)) < 0.1 | 涨跌幅 < 10% | 剔除异常波动 |
(rsi > 30) & (rsi < 70) | RSI 在 30-70 区间 | 过滤超买超卖 |
vol_ratio > 0.5 | 量比 > 0.5 | 过滤缩量标的 |
~isnan(label) | Label 非空 | 剔除无效样本 |
>, <, >=, <=, ==, !=& (与), | (或), ~ (非)abs, isnan, isinf三 输出数据结构
数据处理节点在输入数据的基础上,添加计算得到的因子列。输出 DataFrame 保持与输入相同的行数和索引结构。
| 列名 | 类型 | 说明 |
|---|---|---|
timestamp | datetime | K线时间戳(继承自输入) |
symbol | string | 交易对符号(继承自输入) |
open/high/low/close/volume | float | 原始 OHLCV 数据(继承自输入) |
[因子名] | float | 计算得到的因子列(新增) |
| timestamp | symbol | close | ma5 | ma20 | rsi |
|---|---|---|---|---|---|
| 2024-12-11 00:00:00 | BTCUSDT | 97800.0 | 97650.0 | 97120.5 | 58.32 |
| 2024-12-11 01:00:00 | BTCUSDT | 97750.0 | 97680.0 | 97156.8 | 55.18 |
| 2024-12-11 02:00:00 | BTCUSDT | 97820.0 | 97730.0 | 97203.2 | 59.45 |
| 2024-12-11 03:00:00 | BTCUSDT | 98050.0 | 97810.0 | 97268.5 | 63.21 |
| 2024-12-11 04:00:00 | BTCUSDT | 98150.0 | 97914.0 | 97345.1 | 65.87 |
四 常见问题
A: 通常是"向前取数据"期数不足导致。移动平均等函数在数据不足时会返回 NaN。 请确保期数大于最大窗口期参数,例如使用 60 周期均线,至少设为 60(建议70-80)。
A: 两者会自动合并。因子库选择的预设因子会生成表达式代码,与自定义表达式一起提交给后端计算。 你可以在因子库快速选择常用指标,同时在自定义表达式中编写个性化因子。
A: 只有在使用 AI模型节点(如 LightGBM、Transformer)进行机器学习时才需要。 Label 是模型训练的目标变量,定义了你希望模型预测什么(如未来收益率)。
A: 是的。过滤后的数据会传递给下游节点(AI模型、策略等)。 过滤条件常用于剔除低流动性标的(如 volume > 1000000)或异常数据。
A: 在 策略节点 中,直接使用因子名称即可。例如定义了 momentum, 则可在开仓条件中写 momentum > 0。