第一章:交易信号概述
什么是交易信号
交易信号,说白了就是市场给你的一个「提示」。
它告诉你:现在该买,还是该卖,或者该空仓观望。
我刚开始做量化的时候,总觉得信号这东西很玄乎。后来才明白,它其实就是一组条件判断的结果。比如:
- 当5日均线上穿20日均线 → 买入信号
- 当RSI超过80 → 超买信号
- 当成交量突然放大3倍 → 异动信号
每个信号背后,都对应着一个具体的市场行为。你想想看,如果没有信号,交易就变成了瞎猜。有了信号,至少我们有了一个「依据」。
核心定义:交易信号 = 市场数据 + 规则引擎 → 交易决策
信号在量化交易中的角色
量化交易系统通常分三块:数据层、策略层、执行层。
信号就处在策略层的核心位置。它连接了原始数据和最终交易。
| 层级 | 功能 | 信号的作用 |
|---|---|---|
| 数据层 | 获取行情、清洗数据 | 信号依赖的「原材料」 |
| 策略层 | 生成信号、管理仓位 | 信号是策略的「输出」 |
| 执行层 | 下单、风控、记录 | 信号是执行的「指令」 |
我个人习惯把信号比作「红绿灯」。没有红绿灯,路口就乱套了。没有信号,交易系统就是一盘散沙。
我在项目中遇到过一件事:有个同事写了个策略,信号生成逻辑没问题,但执行层延迟太高。信号出来时,价格已经变了。结果呢?信号变成了「马后炮」。所以信号不仅要准,还要快。
信号生成的基本流程
信号生成不是一步到位的。它有一套标准流程。我总结为四步:
- 数据准备:获取原始行情数据,做清洗和标准化
- 特征计算:根据原始数据计算技术指标或统计量
- 规则匹配:将特征值与预设规则进行比对
- 信号输出:生成具体的交易指令(买入/卖出/持有)
举个例子,一个简单的均线交叉信号:
# 伪代码示例
def generate_signal(price_data):
# 第一步:计算均线
ma5 = SMA(price_data, window=5)
ma20 = SMA(price_data, window=20)
# 第二步:判断交叉
if ma5[-2] < ma20[-2] and ma5[-1] > ma20[-1]:
return 'BUY'
elif ma5[-2] > ma20[-2] and ma5[-1] < ma20[-1]:
return 'SELL'
else:
return 'HOLD'
避坑指南:我曾经犯过一个低级错误——直接用未清洗的数据算信号。结果因为数据里有停牌日的空值,信号全乱了。后来我养成了一个习惯:信号生成前,先做一次数据完整性检查。
信号的质量标准
不是所有信号都值得执行。我一般用三个维度来评估:
- 准确性:信号出现后,市场走势是否如预期?
- 及时性:信号是否在行情启动前发出?
- 稳定性:信号是否频繁闪烁?会不会刚买入就反转?
嗯,这里要注意:信号质量不是越高越好。有时候信号准确率80%,但一年只出现两次,那也没用。你得在频率和准确率之间找平衡。
重要提醒:信号只是概率,不是预言。我见过太多人把信号当成了「圣杯」。记住,任何信号都有失效的时候。风控永远比信号本身更重要。
小结
交易信号,本质上是一个「决策辅助工具」。它帮你把模糊的市场感觉,转化成清晰的交易指令。
接下来的章节,我会带你深入每种信号的具体实现。从最简单的均线,到复杂的机器学习模型。一步步来,别急。
记住一句话:好的信号,不是预测未来,而是管理不确定性。
公众号:蓝海资料掘金营,微信deep3321