第三章 品种配置:交易品种的注册与注销、品种参数、品种分组与分类
好,咱们进入实战环节。这一章聊品种配置,说白了就是告诉系统:你要交易什么,怎么交易。
我见过不少团队,上来就写策略,结果品种参数写死在代码里。换一个合约,改半天。嗯,这种坑我踩过不止一次。
3.1 交易品种的注册与注销
先想一个问题:你的系统怎么知道今天能交易哪些品种?
我个人习惯,把品种注册做成一个动态列表。不是写死在配置文件里,而是通过数据库或注册中心管理。
核心思路: 品种注册 = 告诉系统「这个品种我关注」;品种注销 = 告诉系统「这个品种我不玩了」。
举个例子,我曾在项目中遇到一个情况:某天交易所临时下架了一个合约,但系统还在继续发单。结果?报错一堆。从那以后,我强制要求所有品种必须走注册流程。
注册流程
// 伪代码示例:品种注册接口
bool RegisterInstrument(InstrumentInfo info) {
// 1. 检查是否已注册
if (IsRegistered(info.Symbol)) {
LogWarning("品种已存在: " + info.Symbol);
return false;
}
// 2. 校验参数合法性
if (!ValidateParams(info)) {
LogError("参数校验失败");
return false;
}
// 3. 写入注册表
m_instrumentRegistry[info.Symbol] = info;
// 4. 通知策略模块
NotifyStrategyManager(info.Symbol, REGISTERED);
return true;
}
注销流程
注销比注册麻烦。为什么?因为可能有未平仓的订单。
我曾经吃过这个亏:注销品种时没检查持仓,结果平仓指令发不出去。所以我现在强制要求:
- 注销前必须检查该品种是否有未平仓
- 如果有,先平仓再注销
- 注销后,所有相关策略自动暂停
注意: 注销不是删除。我建议保留历史记录,方便复盘。你可以加一个状态字段:Active / Inactive / Archived。
3.2 品种参数详解
品种参数是交易系统的「地基」。参数错了,后面全白搭。你想想看,合约乘数算错,盈亏能差出几个数量级。
合约乘数
合约乘数,说白了就是「1手等于多少标的」。比如股指期货,1手 = 300元/点。你算盈亏时,必须乘这个数。
| 品种 | 合约乘数 | 说明 |
|---|---|---|
| IF(沪深300股指期货) | 300 | 每点300元 |
| IC(中证500股指期货) | 200 | 每点200元 |
| 螺纹钢 | 10 | 每手10吨 |
我建议把合约乘数单独拎出来,不要和别的参数混在一起。因为它是计算盈亏的核心因子。
最小变动价位
最小变动价位,就是价格跳动的最小单位。比如螺纹钢是1元/吨,股指期货是0.2点。
这个参数影响什么?影响你的滑点计算和止损精度。我记得有一次,一个同事把最小变动价位设错了,导致止损单一直触发不了。嗯,那天的回撤挺惨的。
小技巧: 最小变动价位最好从交易所接口实时获取,不要写死。因为交易所可能会调整。
保证金率
保证金率决定了你开一手需要多少钱。公式很简单:
保证金 = 价格 × 合约乘数 × 手数 × 保证金率
但这里有个坑:保证金率不是固定的。交易所会根据市场波动调整。比如遇到极端行情,保证金率可能从10%调到15%。
我个人的做法是:
- 从交易所接口定时拉取最新保证金率
- 本地缓存一份,但设置过期时间(比如1小时)
- 如果拉取失败,使用上次有效值,但发出告警
避坑指南: 我曾经因为保证金率没更新,导致开仓时资金不足。从那以后,我强制要求每次开仓前重新计算保证金。
3.3 品种分组与分类
品种多了以后,你会发现需要分组管理。比如:
- 按资产类别: 股指、商品、债券、外汇
- 按交易所: CFFEX、DCE、SHFE、CZCE
- 按策略类型: 趋势组、套利组、高频组
我习惯用树形结构来管理分组。为什么?因为可以灵活扩展。比如:
// 分组结构示例
{
"groupName": "商品期货",
"children": [
{
"groupName": "黑色系",
"instruments": ["RB", "HC", "I", "J"]
},
{
"groupName": "化工系",
"instruments": ["MA", "TA", "PP", "L"]
}
]
}
分组的好处很明显:
- 批量操作: 比如我想暂停所有黑色系品种的交易,只需操作一个分组
- 风险控制: 可以给每个分组设置总仓位上限
- 策略分配: 一个策略可以绑定一个分组,而不是单个品种
我的经验: 分组不要太细,也不要太粗。我个人建议控制在3-5个层级。太细了维护麻烦,太粗了失去分组意义。
3.4 知识体系结构图
下面这张图,是我自己整理的知识体系。你可以看到,品种配置分三层:注册层、参数层、分组层。每一层都有对应的操作和注意事项。
3.5 实战建议
最后,给几个实战中的小建议:
- 参数校验不能省: 注册品种时,一定要校验参数。比如合约乘数不能为0,保证金率不能超过100%。
- 版本管理: 品种配置建议做版本管理。每次修改都记录谁改的、改了什么、为什么改。
- 灰度发布: 新增品种时,先在小范围测试。没问题了再全量上线。
我的习惯: 每周一早上,我会检查一遍品种配置列表。看看有没有过期合约,有没有参数需要更新。这个习惯帮我避免了好几次事故。
好了,品种配置这块就聊到这儿。记住一句话:配置是系统的骨架,骨架歪了,肉长再多也没用。
公众号:蓝海资料掘金营,微信deep3321