第三章:技术指标与特征工程

做量化交易的朋友,十有八九都是从技术指标入门的。我记得刚接触加密货币那会儿,看着K线图上花花绿绿的线,第一反应就是——这玩意儿真能赚钱?后来踩了不少坑,才慢慢明白:技术指标本身不是圣杯,但把它们变成有效的特征,才是策略赚钱的关键。

这一章,咱们就聊聊怎么把那些烂大街的指标,变成你策略里的“秘密武器”。

3.1 常见技术指标:不只是画线那么简单

先说说三个最基础的指标。嗯,你可能觉得太简单了,但我敢打赌,大部分人用错了。

3.1.1 移动平均线(MA)

MA说白了就是过去N根K线的平均价。但这里有个坑——你用的是简单移动平均(SMA)还是指数移动平均(EMA)?

我个人习惯在趋势行情里用EMA,因为它对价格变化更敏感。震荡行情里反而用SMA,更平滑,假信号少一些。

核心用法:
  • 金叉死叉:短期MA上穿长期MA做多,反之做空
  • 价格与MA的关系:价格在MA上方看多,下方看空
  • MA斜率:斜率向上表示趋势强劲

我曾经在BTC的15分钟图上用MA5和MA20做短线,结果被来回打脸。后来发现,加密货币的波动率比股票高太多,MA的参数得调大才行。

3.1.2 相对强弱指数(RSI)

RSI衡量的是过去一段时间内价格上涨和下跌的力度。取值范围0-100,一般认为超过70是超买,低于30是超卖。

但这里有个问题——加密货币经常出现RSI到80还在涨,到20还在跌的情况。为什么?因为极端行情下,RSI会钝化。

我的经验:在BTC上,RSI超过85才考虑做空,低于15才考虑做多。别用教科书上的70/30,那是给股票用的。

3.1.3 平滑异同移动平均线(MACD)

MACD由三部分组成:DIF线(快线)、DEA线(慢线)、柱状图。核心逻辑是看两条线的交叉和柱状图的变化。

我个人觉得,MACD最有价值的是它的背离信号。价格创新高,但MACD没创新高——这叫顶背离,大概率要跌。反过来就是底背离。

注意:背离信号在1小时以下的时间周期里,成功率会大幅下降。我建议至少用4小时图以上的背离。

3.2 自定义特征构建:把指标变成你的武器

光用现成的指标,大家都能用,凭什么你赚钱?真正的功夫在自定义特征上。

3.2.1 特征构建的思路

说白了,特征构建就是把原始数据(价格、成交量)和基础指标,通过数学变换,变成更能反映市场状态的新变量。

我常用的几种方法:

  • 比值类:比如成交量/MA成交量,用来衡量当前成交量的异常程度
  • 差值类:比如快线MA - 慢线MA,用来衡量趋势强度
  • 归一化类:比如(当前价格 - 过去N天最低价) / (过去N天最高价 - 过去N天最低价),把价格映射到0-1之间
  • 统计类:比如过去N根K线的标准差、偏度、峰度

3.2.2 实战案例:构建一个“多空强度”特征

我记得在2023年做ETH策略时,发现单纯用RSI效果不好。后来我构建了一个自定义特征:

# 多空强度特征
def calc_bear_bull_strength(df, period=14):
    # 计算上涨和下跌的成交量加权
    up_volume = df['volume'] * (df['close'] > df['open']).astype(int)
    down_volume = df['volume'] * (df['close'] < df['open']).astype(int)
    
    # 计算多空强度比
    bull_strength = up_volume.rolling(period).sum()
    bear_strength = down_volume.rolling(period).sum()
    
    # 归一化到-1到1之间
    strength = (bull_strength - bear_strength) / (bull_strength + bear_strength + 1e-10)
    
    return strength

这个特征的效果比单纯用RSI好很多。为什么?因为它把成交量也考虑进去了,能更真实地反映多空力量对比。

3.3 特征选择方法:别让垃圾特征毁了你的模型

你想想看,如果你构建了100个特征,但其中90个都是噪音,模型能学好吗?肯定不能。所以特征选择这一步,比构建特征还重要。

3.3.1 过滤法

最简单粗暴的方法。计算每个特征和目标变量的相关性,只保留相关性高的特征。

方法 原理 优缺点
皮尔逊相关系数 衡量线性相关性 简单快速,但只能检测线性关系
互信息 衡量非线性相关性 能检测复杂关系,但计算慢
方差阈值 删除方差太小的特征 适合过滤常数特征

3.3.2 包裹法

把特征选择当成一个搜索问题。比如递归特征消除(RFE),每次删除一个最不重要的特征,直到达到目标特征数。

我曾经在BTC的日线数据上用过RFE,从50个特征里选出了12个。效果确实比全量特征好,但训练时间长了10倍。嗯,这算是个取舍。

3.3.3 嵌入法

在模型训练过程中自动选择特征。比如Lasso回归,它会自动把不重要的特征系数压缩到0。

我的建议:先用过滤法快速筛选,再用嵌入法精挑细选。包裹法除非你有足够的算力,否则别轻易尝试。

3.4 本章知识体系

下面这张图,是我自己总结的技术指标与特征工程的核心逻辑。你看一眼,应该就能明白整个流程。

技术指标与特征工程核心流程 原始数据 价格、成交量、时间 基础技术指标 MA、RSI、MACD、布林带等 自定义特征构建 比值类、差值类、归一化类、统计类 特征选择 过滤法 → 嵌入法 → 包裹法 最终特征集 输入到AI模型

从原始数据到最终特征集,每一步都有讲究。别想着一步到位,量化交易是个不断迭代的过程。

3.5 避坑指南

最后,分享几个我踩过的坑:

  • 不要用未来数据:计算指标时,只能用过去的数据。我曾经犯过用未来价格算MA的错,回测曲线漂亮得不行,实盘直接崩了。
  • 小心多重共线性:MA5和MA10相关性很高,同时用它们做特征,模型会不稳定。
  • 特征不是越多越好:我见过有人用200个特征训练模型,结果过拟合得一塌糊涂。记住奥卡姆剃刀——如无必要,勿增实体。
  • 时间周期要匹配:日线级别的特征,别用在分钟级别的策略上。逻辑完全不一样。

好了,这一章的内容就到这里。技术指标和特征工程,说白了就是把你对市场的理解,转化成机器能看懂的语言。多动手,多试错,慢慢你就会有感觉。

小练习:打开你的交易软件,选一个币种,用本章的方法构建3个自定义特征。然后看看这些特征在历史数据上的表现如何。

专注资料整理