策略逻辑开发:趋势跟踪、均值回归、套利、日内高频
策略逻辑开发,说白了就是把你的交易想法,翻译成机器能懂的语言。这一步做不好,后面所有优化都是白搭。
我个人习惯把策略分成四大类:趋势跟踪、均值回归、套利、日内高频。每一类的逻辑内核完全不同,写代码时的坑也不一样。今天咱们就挨个捋一遍。
一、趋势跟踪策略
趋势跟踪的核心就一句话:顺势而为。价格涨了我就买,跌了我就卖,不猜顶也不抄底。
最常见的实现方式是双均线交叉。短线上穿长线做多,下穿做空。嗯,这里要注意:均线参数的选择直接影响策略表现。我在项目中遇到过用(5,20)参数跑螺纹钢,回测曲线漂亮得不行,一上实盘就连续亏损。后来发现是参数过拟合了。
趋势跟踪的核心逻辑:
- 入场信号:价格突破关键均线或通道
- 出场信号:反向突破或移动止损
- 止损设置:ATR倍数或固定点数
- 仓位管理:根据波动率动态调整
// 双均线趋势跟踪伪代码
if (shortMA > longMA) {
if (position == 0) {
buy(1); // 金叉开多
}
} else if (shortMA < longMA) {
if (position == 0) {
sell(1); // 死叉开空
}
}
// 移动止损
stopLoss = entryPrice - ATR * 2;
if (currentPrice <= stopLoss) {
closePosition();
}
避坑指南:我曾经在趋势策略里加了太多过滤条件,结果信号少得可怜,一年就交易十几次。后来我悟了——趋势策略不怕亏,怕的是没信号。少折腾,多持仓。
二、均值回归策略
均值回归和趋势跟踪正好相反。它赌的是价格会回到均值附近。说白了就是「涨多了会跌,跌多了会涨」。
实现方式通常是布林带或RSI。价格碰到上轨就做空,碰到下轨就做多。但这里有个大坑:强趋势行情里,均值回归会死得很惨。
我记得有一次做股指期货,RSI到了80以上,我按策略做空。结果行情继续暴涨,连续三天都没回调。那笔交易亏了将近5%。后来我加了一个趋势过滤器——只有市场处于震荡状态时才启用均值回归。
// 布林带均值回归伪代码
upperBand = MA + stdDev * 2;
lowerBand = MA - stdDev * 2;
if (currentPrice > upperBand) {
sell(1); // 触及上轨做空
} else if (currentPrice < lowerBand) {
buy(1); // 触及下轨做多
}
// 趋势过滤器
if (ADX > 25) {
// 趋势太强,不交易
return;
}
警告:均值回归策略的胜率通常很高(60%-70%),但盈亏比很低。一次大趋势就能把之前所有利润吃掉。一定要设硬止损。
三、套利策略
套利策略的逻辑相对复杂一些。它利用的是相关品种之间的价差偏离。比如螺纹钢和热卷,正常情况下价差在某个范围内波动。一旦价差超出范围,就做多一个、做空另一个,等它回归。
套利的好处是市场中性,不太受大盘涨跌影响。但坏处是:价差可能长期不回归。我见过一个做豆粕和菜粕套利的团队,价差偏离后等了三个月才回归,中间浮亏差点爆仓。
| 套利类型 | 逻辑 | 风险点 |
|---|---|---|
| 跨期套利 | 同一品种不同月份合约 | 交割月逼仓 |
| 跨品种套利 | 相关品种(如螺纹/热卷) | 基本面突变 |
| 跨市场套利 | 同一品种不同交易所 | 汇率、时差 |
// 跨品种套利伪代码
spread = priceA - priceB;
meanSpread = 计算过去N日的价差均值();
stdSpread = 计算过去N日的价差标准差();
if (spread > meanSpread + stdSpread * 2) {
// 价差过大,做空价差
sell(1, symbolA);
buy(1, symbolB);
} else if (spread < meanSpread - stdSpread * 2) {
// 价差过小,做多价差
buy(1, symbolA);
sell(1, symbolB);
}
四、日内高频策略
日内高频策略,说白了就是抢帽子。持仓时间短则几秒,长不过几分钟。靠的是速度和微小的价格波动。
这类策略对延迟极其敏感。我刚开始做高频时,用的是普通云服务器,结果每次下单都比别人慢几百毫秒。几百毫秒在日内高频里,足够让一笔盈利变成亏损。后来我换了托管服务器,延迟降到微秒级,效果立竿见影。
高频策略的逻辑通常很简单:
- 盘口失衡:买单量远大于卖单量时做多
- 动量爆发:价格快速突破前N笔成交均价时追入
- 反转捕捉:价格瞬间大幅波动后反向开仓
// 盘口失衡策略伪代码
bidVolume = 买一量;
askVolume = 卖一量;
if (bidVolume / askVolume > 3) {
// 买单严重失衡,做多
buy(1);
// 持仓不超过10秒
setTimeout(closePosition, 10000);
} else if (askVolume / bidVolume > 3) {
// 卖单严重失衡,做空
sell(1);
setTimeout(closePosition, 10000);
}
个人经验:日内高频策略的回测一定要用tick级数据。用1分钟K线回测出来的结果,基本是骗人的。我见过有人用1分钟K线回测年化50%,实盘直接亏到怀疑人生。
五、策略逻辑流程图
下面这张图,是我自己画的一个通用策略逻辑框架。不管你是做趋势还是做套利,这个流程都适用。
你想想看,这个流程其实适用于所有策略类型。区别只在于「计算指标」和「判断条件」这两个环节。趋势跟踪用均线,均值回归用布林带,套利用价差,高频用盘口数据。框架是一样的,换的是里面的零件。
总结一下:
- 趋势跟踪:顺势而为,参数别过拟合
- 均值回归:逆势交易,加趋势过滤器
- 套利策略:市场中性,注意价差回归时间
- 日内高频:速度第一,用tick级数据回测
好了,这四种策略的逻辑和伪代码都给你了。下一步就是动手写代码,跑回测。记住,纸上谈兵和实盘交易是两码事。我见过太多人在回测里赚得盆满钵满,一上实盘就原形毕露。所以,先跑模拟盘,再上小资金,最后才敢上大仓位。