第三章 品种配置:交易品种的注册与注销、品种参数、品种分组与分类

好,咱们进入实战环节。这一章聊品种配置,说白了就是告诉系统:你要交易什么,怎么交易。

我见过不少团队,上来就写策略,结果品种参数写死在代码里。换一个合约,改半天。嗯,这种坑我踩过不止一次。

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"]
    }
  ]
}

分组的好处很明显:

  1. 批量操作: 比如我想暂停所有黑色系品种的交易,只需操作一个分组
  2. 风险控制: 可以给每个分组设置总仓位上限
  3. 策略分配: 一个策略可以绑定一个分组,而不是单个品种

我的经验: 分组不要太细,也不要太粗。我个人建议控制在3-5个层级。太细了维护麻烦,太粗了失去分组意义。

3.4 知识体系结构图

下面这张图,是我自己整理的知识体系。你可以看到,品种配置分三层:注册层、参数层、分组层。每一层都有对应的操作和注意事项。

品种配置知识体系 注册层 注册:添加品种到系统 注销:移除品种(需检查持仓) 参数层 合约乘数 盈亏计算核心 最小变动价位 影响滑点与止损 保证金率 需实时更新 分组层 按资产类别 按交易所 按策略类型

3.5 实战建议

最后,给几个实战中的小建议:

  • 参数校验不能省: 注册品种时,一定要校验参数。比如合约乘数不能为0,保证金率不能超过100%。
  • 版本管理: 品种配置建议做版本管理。每次修改都记录谁改的、改了什么、为什么改。
  • 灰度发布: 新增品种时,先在小范围测试。没问题了再全量上线。

我的习惯: 每周一早上,我会检查一遍品种配置列表。看看有没有过期合约,有没有参数需要更新。这个习惯帮我避免了好几次事故。

好了,品种配置这块就聊到这儿。记住一句话:配置是系统的骨架,骨架歪了,肉长再多也没用。


公众号:蓝海资料掘金营,微信deep3321