4、交易系统概念介绍
约 8165 字大约 27 分钟
2026-03-23
本篇介绍一些金融交易系统中的专业名词;
档位(Levels)
订单
Order Side(订单方向)
订单方向是交易订单最基本的属性,表示交易者是买入还是卖出。这是所有订单都必须指定的核心参数。
// 最基本的订单方向枚举
enum class OrderSide {
BUY, // 买入
SELL // 卖出
};BUY:买方是指由各类投资机构(如共同基金、养老基金和保险公司)组成的订单方,这些机构通常会出于资金管理的目的购入大量证券。
SELL:相反的一方则由那些出于资金管理目的而大量抛售证券的金融机构组成。
Order type 订单类型
订单类型定义了订单如何被执行的规则,是交易系统中最重要的参数之一。不同的订单类型适用于不同的交易策略和市场条件。
// 基础订单类型
enum class OrderType : uint8_t {
// 基础类型
MARKET = 0, // 市价单
LIMIT = 1, // 限价单
STOP = 2, // 止损单
STOP_LIMIT = 3, // 止损限价单
// 高级类型
TRAILING_STOP = 4, // 移动止损单
TRAILING_LIMIT = 5, // 移动限价单
ICEBERG = 6, // 冰山订单
PEGGED = 7, // 锚定订单
// 条件类型
MARKET_IF_TOUCHED = 8, // 触价转市价
LIMIT_IF_TOUCHED = 9, // 触价转限价
ONE_CANCELS_OTHER = 10, // 二选一委托
BRACKET = 11, // 括号委托
// 特殊类型
TWAP = 12, // 时间加权平均价格
VWAP = 13, // 成交量加权平均价格
POV = 14, // 成交量百分比
ADAPTIVE = 15, // 自适应订单
UNKNOWN = 255
};
// 订单类别
enum class OrderCategory {
SIMPLE, // 简单订单(立即执行)
CONDITIONAL, // 条件订单(需触发)
ALGO, // 算法订单
COMPLEX // 复杂组合订单
};
// 订单类型特征
struct OrderTypeFeatures {
bool requires_price; // 是否需要价格
bool requires_stop; // 是否需要止损价
bool requires_trail; // 是否需要跟踪参数
bool can_be_hidden; // 是否可以隐藏
bool supports_iceberg; // 是否支持冰山
OrderCategory category;
};| 订单类型 | 价格指定 | 触发条件 | 可见性 | 适用场景 |
|---|---|---|---|---|
| 市价单 | 无 | 立即 | 全部 | 快速成交 |
| 限价单 | 有 | 达到限价 | 全部 | 控制成本 |
| 止损单 | 触发价 | 达到止损 | 全部 | 风险控制 |
| 止损限价 | 触发+限价 | 达到止损 | 全部 | 精确控制 |
| 移动止损 | 动态 | 价格反向 | 全部 | 保护利润 |
| 冰山订单 | 有限价 | 达到限价 | 部分 | 大额交易 |
| 括号委托 | 多个 | 多种 | 全部 | 自动化交易 |
Market Order(市价单)
市价单是指以当前市场上最优可用价格立即执行的订单类型。它保证成交,但不保证成交价格。
什么是市价单?
// 市价单的核心特征
- 保证成交(只要有对手盘)
- 不保证价格(可能产生滑点)
- 立即执行(优先级最高)
- 简单直接(只需指定数量)| 特性 | 市价单 | 限价单 |
|---|---|---|
| 成交保证 | 保证成交 | 不保证成交 |
| 价格控制 | 无控制 | 精确控制 |
| 执行速度 | 立即 | 可能等待 |
| 滑点风险 | 有 | 无 |
| 使用场景 | 急需成交 | 控制成本 |
使用建议:
- 小订单:可以直接使用市价单
- 大订单:考虑分批或使用冰山订单
- 高波动:设置滑点保护
- 低流动性:避免使用市价单
- 紧急情况:市价单是最佳选择
Limit Order(限价单)
限价单是指以指定价格或更好价格执行的订单。它保证价格,但不保证成交。
什么是限价单?
// 限价单的核心特征
- 保证价格(不会以更差价格成交)
- 不保证成交(可能永远不会执行)
- 价格控制(精确指定买入/卖出价)
- 可能部分成交(如果只成交一部分)限价单 vs 市价单
| 特性 | 限价单 | 市价单 |
|---|---|---|
| 价格控制 | 精确控制 | 无控制 |
| 成交保证 | 不保证 | 保证成交 |
| 执行速度 | 可能等待 | 立即 |
| 滑点风险 | 无 | 有 |
| 使用场景 | 控制成本 | 急需成交 |
优缺点
| 优点 | 缺点 |
|---|---|
| 精确控制价格 | 可能无法成交 |
| 无滑点风险 | 需要等待 |
| 可以做市赚差价 | 可能错过行情 |
| 适合大额交易 | 需要监控 |
| 可以隐藏意图 | 可能被利用 |
Limit Order 的关键点:
- 价格控制:精确指定交易价格
- 执行不确定性:可能永远无法成交
- 优先规则:价格优先、时间优先
- 市场影响:提供流动性
- 策略多样:可用于各种交易策略
Stop Order(止损单)
止损单是一种条件触发订单,当市场价格达到指定的止损价时,它会被激活并转为市价单或限价单。主要用于风险控制和利润保护。
什么是止损单?
// 止损单的核心特征
- 条件触发:达到止损价才激活
- 风险控制:限制最大亏损
- 利润保护:锁定已有利润
- 自动执行:无需人工干预止损单的两种主要类型:
| 类型 | 触发后转为 | 特点 |
|---|---|---|
| 市价止损 | 市价单 | 保证成交,价格不确定 |
| 限价止损 | 限价单 | 价格确定,可能不成交 |
优缺点:
| 优点 | 缺点 |
|---|---|
| 自动控制风险 | 可能被短期波动触发 |
| 无需盯盘 | 滑点风险 |
| 保护利润 | 可能错过反弹 |
| 纪律性强 | 需要精确设置 |
| 适合各种策略 | 可能被操纵 |
Stop Order 的关键点:
- 风险控制:限制最大亏损
- 自动执行:无需人工干预
- 条件触发:达到指定价格才激活
- 多种类型:市价止损、限价止损、移动止损
- 策略核心:是交易系统的重要组成部分
"Order max visible quantity"(订单最大可见数量)是订单簿中显示的订单数量上限,是冰山订单(Iceberg Order)的核心概念。
Stop-Limit Order(止损限价单)
止损限价单是止损单和限价单的组合。它先像止损单一样触发,然后像限价单一样执行,既有触发条件又有价格限制。
什么是止损限价单?
// 止损限价单的核心特征
- 两个价格:止损价(触发) + 限价(执行)
- 触发前:像止损单一样监控市场
- 触发后:变成限价单等待成交
- 精确控制:既有触发价又有执行价止损限价单 vs 其他订单
| 订单类型 | 触发条件 | 执行保证 | 价格控制 |
|---|---|---|---|
| 止损市价 | 达到止损价 | 保证成交 | 无控制 |
| 止损限价 | 达到止损价 | 不保证 | 精确控制 |
| 普通限价 | 立即 | 不保证 | 精确控制 |
| 普通市价 | 立即 | 保证成交 | 无控制 |
优缺点:
| 优点 | 缺点 |
|---|---|
| 精确控制执行价格 | 可能无法成交 |
| 避免滑点 | 触发后仍可能不成交 |
| 适合大额订单 | 比普通止损复杂 |
| 防止被操纵 | 需要更多判断 |
| 适合震荡市 | 趋势市可能错过 |
Stop-Limit Order 的关键点:
- 双重控制:既有止损条件又有价格限制
- 精确执行:避免不利价格成交
- 风险可控:知道最差可能的价格
- 灵活运用:可用于多种交易策略
- 需要技巧:正确设置需要经验
Trailing Stop Order(移动止损单)
移动止损单是一种动态调整的止损订单,它会随着市场价格的有利变动自动调整止损价,以保护利润,同时在市场反转时触发止损。
什么是移动止损?
// 移动止损的核心原理
初始价格: 100.00
移动距离: 0.50
价格上涨: 100.00 -> 101.00
止损价上移: 99.50 -> 100.50
价格上涨: 101.00 -> 102.00
止损价上移: 100.50 -> 101.50
价格回调: 102.00 -> 101.40 (未触发)
价格继续回调: 101.40 -> 101.00 (触发止损)移动止损 vs 固定止损
| 特性 | 移动止损 | 固定止损 |
|---|---|---|
| 止损价 | 动态调整 | 固定不变 |
| 利润保护 | 锁定利润 | 不保护利润 |
| 市场适应 | 跟随趋势 | 固定位置 |
| 使用场景 | 趋势行情 | 震荡行情 |
Trailing Stop Order 的关键点:
- 动态保护:随价格移动调整止损
- 利润锁定:保护已获得的浮盈
- 趋势跟随:让利润在趋势中奔跑
- 自动执行:无需人工干预
- 灵活配置:可调整跟踪距离和类型
Trailing Stop-Limit Order(移动止损限价单)
移动止损限价单是移动止损单和限价单的结合体。它像移动止损单一样动态调整触发价,但触发后转为限价单而非市价单,既有动态保护又有价格控制。
什么是移动止损限价单?
// 移动止损限价单的核心特征
- 两个动态价格:移动止损价(触发) + 限价(执行)
- 触发前:像移动止损一样动态调整
- 触发后:变成限价单,有价格上限/下限
- 双重控制:既有移动保护,又有价格限制移动止损限价 vs 其他订单
| 订单类型 | 止损价 | 执行价 | 价格控制 | 成交保证 |
|---|---|---|---|---|
| 移动止损 | 动态 | 市价 | 无 | 保证成交 |
| 移动限价 | 动态 | 限价 | 精确 | 可能不成交 |
| 固定止损限价 | 固定 | 限价 | 精确 | 可能不成交 |
移动止损限价的优缺点
| 优点 | 缺点 |
|---|---|
| 动态保护利润 | 可能永远无法成交 |
| 精确价格控制 | 比简单移动止损复杂 |
| 避免不利滑点 | 需要更多参数设置 |
| 适合大额订单 | 在快速市场中可能错过 |
| 防止被操纵 | 需要监控限价合理性 |
Trailing Stop-Limit Order 的关键点:
- 双重动态:触发价和限价都动态调整
- 精确控制:既有移动保护又有价格限制
- 保护空间:触发价和限价之间的缓冲
- 灵活配置:可根据市场调整参数
- 高级工具:适合专业交易者
Order Time in Force(订单有效时间)
Time in Force (TIF) 是指定订单在市场上保持活跃的时间长度的重要参数。它决定了订单何时自动失效或被取消。
什么是Time in Force?
// Time in Force的核心作用
- 控制订单生命周期
- 防止订单无限期挂单
- 适应不同交易策略
- 管理风险和资金占用常见的TIF类型
| TIF类型 | 缩写 | 含义 | 适用场景 |
|---|---|---|---|
| Day | DAY | 当日有效 | 日内交易 |
| Good Till Cancelled | GTC | 撤销前有效 | 长期策略 |
| Immediate or Cancel | IOC | 立即成交否则撤销 | 快速成交 |
| Fill or Kill | FOK | 全部成交否则撤销 | 大单精确控制 |
| Good Till Date | GTD | 指定日期前有效 | 事件驱动 |
| At the Opening | OPG | 开盘价成交 | 捕捉开盘 |
| At the Closing | CLS | 收盘价成交 | 捕捉收盘 |
TIF类型详细对比
| TIF | 有效期 | 部分成交 | 适用策略 | 风险 |
|---|---|---|---|---|
| DAY | 当天 | 允许 | 日内交易 | 收盘未成交 |
| GTC | 长期 | 允许 | 长线投资 | 价格变化 |
| IOC | 瞬间 | 允许 | 快速成交 | 可能只成交部分 |
| FOK | 瞬间 | 不允许 | 精确控制 | 可能全不成交 |
| GTD | 指定 | 允许 | 事件驱动 | 日期选择 |
| OPG | 开盘 | 不允许 | 捕捉开盘 | 开盘价不利 |
| CLS | 收盘 | 不允许 | 捕捉收盘 | 收盘价不利 |
Time in Force 的关键点:
- 生命周期控制:决定订单存活时间
- 策略适配:不同策略需要不同TIF
- 风险管控:防止订单无限期挂单
- 执行控制:IOC/FOK控制执行方式
- 时间价值:考虑时间对订单的影响
Good-Till-Cancelled (GTC) 订单
GTC订单是一种长期有效的订单类型,它会一直保留在市场中,直到被手动取消或完全成交。这是长线投资者最常用的订单类型之一。
什么是GTC订单?
// GTC订单的核心特征
- 长期有效:不会自动过期
- 手动取消:只有交易者主动取消才失效
- 跨交易日:可以保留数天、数周甚至数月
- 价格锁定:锁定理想价格,等待市场到达GTC vs 其他TIF
| 特性 | GTC | DAY | IOC/FOK |
|---|---|---|---|
| 有效期 | 无限期 | 当天 | 瞬间 |
| 跨交易日 | 是 | 否 | 否 |
| 取消方式 | 手动 | 自动收盘 | 自动 |
| 适用场景 | 长线投资 | 日内交易 | 紧急成交 |
GTC订单的优缺点
| 优点 | 缺点 |
|---|---|
| 无需每天重新下单 | 可能错过价格变动 |
| 捕捉理想价格 | 长期占用资金 |
| 适合长线投资 | 需要定期检查 |
| 减少操作频率 | 市场变化后可能不适用 |
| 自动执行策略 | 有最长期限限制 |
Good-Till-Cancelled (GTC) 订单的关键点:
- 长期有效:持续到手动取消或成交
- 策略执行:自动执行长线投资策略
- 价格锁定:锁定理想买入/卖出价
- 减少操作:无需每天重新下单
- 需要监控:定期检查确保仍然合理
Immediate-Or-Cancel (IOC) 订单
IOC订单是一种要求立即部分或全部成交,未成交部分立即撤销的订单类型。它是高频交易和快速执行策略的核心工具。
什么是IOC订单?
// IOC订单的核心特征
- 立即执行:下单后立即尝试成交
- 部分接受:可以只成交一部分
- 剩余取消:未成交部分立即撤销
- 无等待:不会挂在订单簿上IOC vs 其他订单类型
| 特性 | IOC | FOK | 普通限价 | 市价 |
|---|---|---|---|---|
| 部分成交 | 允许 | 不允许 | 允许 | 允许 |
| 剩余处理 | 取消 | 取消 | 保留 | 保留 |
| 执行速度 | 立即 | 立即 | 可能等待 | 立即 |
| 价格控制 | 有限价 | 有限价 | 有限价 | 无 |
IOC订单的优缺点
| 优点 | 缺点 |
|---|---|
| 立即执行 | 可能只成交部分 |
| 不挂单 | 无法等待更好价格 |
| 价格控制(限价) | 大单可能成交少 |
| 适合高频交易 | 需要监控市场深度 |
| 减少市场影响 | 不适合大额订单 |
IOC的使用场景
| 场景 | 说明 | 示例 |
|---|---|---|
| 套利 | 快速捕捉价差 | 跨市场套利 |
| 做市 | 提供流动性 | 频繁买卖 |
| 大单拆分 | 分批执行 | TWAP/VWAP |
| 流动性探测 | 测试市场深度 | 冰山探测 |
| 紧急平仓 | 快速退出 | 止损触发 |
Immediate-Or-Cancel (IOC) 订单的关键点:
- 即时性:下单后立即尝试成交
- 灵活性:接受部分成交
- 无残留:不成交部分立即取消
- 价格控制:可设限价避免不利价格
- 策略工具:适合高频和套利策略
Fill-Or-Kill (FOK) 订单
FOK订单是一种要求全部立即成交,否则完全撤销的订单类型。它是大额交易和精确仓位控制的重要工具。
什么是FOK订单?
// FOK订单的核心特征
- 全部成交:必须整个订单一次完全成交
- 立即执行:下单后立即尝试
- 否则撤销:无法全部成交就完全取消
- 无部分成交:不允许部分填充FOK vs 其他订单类型
| 特性 | FOK | IOC | 普通限价 | 市价 |
|---|---|---|---|---|
| 部分成交 | 不允许 | 允许 | 允许 | 允许 |
| 全部成交要求 | 必须 | 不必须 | 不必须 | 不必须 |
| 剩余处理 | 完全取消 | 部分取消 | 保留 | 保留 |
| 执行速度 | 立即 | 立即 | 可能等待 | 立即 |
| 适用场景 | 大单精确控制 | 快速成交 | 价格控制 | 确保成交 |
FOK订单的优缺点
| 优点 | 缺点 |
|---|---|
| 确保完整仓位 | 高被拒率 |
| 避免部分成交 | 不适合大单 |
| 价格控制精确 | 流动性要求高 |
| 适合套利策略 | 可能错过机会 |
| 执行确定性强 | 需要精确计算 |
FOK的使用场景
| 场景 | 说明 | 成功率要求 |
|---|---|---|
| 套利 | 锁定价差 | 必须100% |
| 大单拆分 | 分批执行 | 中等 |
| 仓位调整 | 精确控制 | 高 |
| 开盘/收盘 | 捕捉特定价格 | 高 |
| 对冲 | 同时开平仓 | 必须100% |
Fill-Or-Kill (FOK) 订单的关键点:
- 全部或全不:要么完全成交,要么完全取消
- 确定性:知道要么全部成交,要么一点没有
- 流动性要求:需要足够的市场深度
- 精确控制:适合需要精确仓位的场景
- 风险工具:避免部分成交的风险
All-Or-None (AON) 订单
AON订单是一种要求要么全部成交,要么完全不成交的订单类型。与FOK不同,AON订单不要求立即执行,可以挂在订单簿上等待,直到能够全部成交。
什么是AON订单?
// AON订单的核心特征
- 全部成交要求:必须整个订单一次完全成交
- 允许等待:可以挂在订单簿上等待
- 无部分成交:不允许部分填充
- 时间灵活:可以设置各种时间有效期AON vs FOK 对比
| 特性 | AON | FOK | IOC |
|---|---|---|---|
| 全部成交要求 | 必须 | 必须 | 不必须 |
| 立即执行要求 | 不必须 | 必须 | 必须 |
| 允许等待 | 是 | 否 | 否 |
| 部分成交 | 不允许 | 不允许 | 允许 |
| 适用场景 | 大单等待 | 立即套利 | 快速成交 |
AON订单的优缺点
| 优点 | 缺点 |
|---|---|
| 确保完整仓位 | 可能等待很长时间 |
| 避免部分成交 | 匹配难度大 |
| 可以等待市场 | 流动性要求高 |
| 适合大额交易 | 可能错过机会 |
| 价格控制好 | 需要耐心 |
AON的使用场景
| 场景 | 说明 | 成功率 |
|---|---|---|
| 机构大单 | 避免市场冲击 | 中等 |
| 指数调整 | 需要精确数量 | 高 |
| 换仓操作 | 同时买卖 | 中等 |
| 期权行权 | 需要整手 | 高 |
| 大宗交易 | 场外协商 | 高 |
All-Or-None (AON) 订单的关键点:
- 数量刚性:必须全部成交
- 时间柔性:可以等待市场
- 避免碎片:防止部分成交
- 大单工具:适合机构交易
- 市场深度:需要足够的对手盘
冰山订单
冰山订单
- 总数量:订单实际的总数量(隐藏在水下)
- 可见数量:订单簿上显示的部分(冰山一角)
- 最大可见数量:允许显示在订单簿上的最大数量
订单簿显示:
卖二:100.07 800股
卖一:100.05 200股 ← 可能是冰山订单,实际总数量更大
-------------------
买一:100.00 500股
买二:99.99 1000股
冰山订单实际结构:
总数量:10,000股
可见峰值:200股
每次刷新:显示200股,成交完再显示200股...为什么需要可见数量限制?
1、隐藏真实意图
// 不好的做法:显示全部订单
Order largeOrder(10000, OrderSide::SELL, 100.05);
// 订单簿显示10000股卖单,吓跑买家
// 好做法:冰山订单
IcebergOrder hiddenOrder(
/* total */ 10000,
/* visible */ 200,
OrderSide::SELL,
100.05
);
// 订单簿只显示200股,市场不会察觉大抛压2、减少市场冲击 大额订单直接显示会导致价格剧烈波动
分批显示可以平滑交易影响
3、防止市场操纵 限制可见数量防止虚假深度
要求显示真实流动性的一部分
常规订单
Regular Order(常规订单/普通订单)是指最基础、最标准的订单类型,与之相对的是各种高级订单类型(如冰山订单、止损单、条件单等)。
#### Regular Order 的定义
1. 一次性显示全部数量 2. 没有特殊条件或隐藏机制 3.遵循基本的买卖规则 4. 最常见的订单类型
对比:Regular Order vs 其他订单类型
| 特性 | Regular Order | Iceberg Order | Stop Order | Conditional Order |
|---|---|---|---|---|
| 可见性 | 全部可见 | 部分可见 | 全部可见 | 全部可见 |
| 触发条件 | 立即/限价 | 立即/限价 | 达到止损价 | 满足其他条件 |
| 复杂性 | 最低 | 中等 | 中等 | 高 |
| 使用频率 | 90%+ | 机构常用 | 风险控制 | 策略交易 |
订单量
Order Quantity(订单数量)是指订单中指定的交易单位数量,是订单最基本的属性之一。
核心概念
- 订单数量 = 想要买入或卖出的证券数量
- 通常以股(股票)、手(A股1手=100股)、合约(期货/期权)为单位
- 与价格共同决定订单的总价值
Order Executed Quantity
Order Executed Quantity(订单已执行数量/成交量)是指订单中已经被市场匹配并成功交易的部分数量。这是订单生命周期中的核心概念。
关键概念
- 已执行数量 = 已经成交的证券数量
- 未执行数量 = 订单总量 - 已执行数量
- 部分成交:订单只执行了一部分
- 完全成交:订单全部数量都执行了
Order leaves quantity
LeavesQuantity(剩余数量/未成交数量)是指订单当前还未成交的剩余部分数量。这是订单生命周期中的一个关键字段,特别在FIX金融信息交换协议中常见。
核心概念
- LeavesQuantity = 订单总数量 - 已成交数量
- 代表仍然活跃在市场上等待成交的数量
- 当LeavesQuantity = 0时,订单完全成交或被取消
FIX协议中的定义 在FIX(Financial Information eXchange)协议中,LeavesQuantity是标准字段:
// FIX协议字段标签
namespace FIXTags {
const int OrderQty = 38; // 订单原始数量
const int CumQty = 14; // 累计成交数量
const int LeavesQty = 151; // 剩余数量
const int LastQty = 32; // 最后一笔成交数量
const int LastPx = 31; // 最后一笔成交价格
}
// FIX消息示例
// "35=8|55=AAPL|38=10000|14=4500|151=5500|..."
// 订单原始数量10000,已成交4500,剩余5500Time in Force
Time in Force (TIF) 是订单的有效时间指令,决定了订单在市场中保持活跃的时间长度。这是订单生命周期管理的关键参数。
TIF 的作用
- 控制订单的生命周期:订单在市场上停留多久
- 风险管理:防止订单无限期挂在市场上
- 交易策略:适应不同的交易需求
Market Order Slippage(市价单滑点)
滑点是指预期成交价格与实际成交价格之间的差异。对于市价单,滑点是一个关键的风险因素。
什么是滑点?
// 预期价格 vs 实际价格
double expected_price = 100.00; // 下单时的市场价格
double actual_price = 100.05; // 实际成交价格
double slippage = actual_price - expected_price; // 0.05 正滑点(买贵了)
// 对于买单:正滑点 = 买贵了,负滑点 = 买便宜了
// 对于卖单:正滑点 = 卖便宜了,负滑点 = 卖贵了为什么会产生滑点?
流动性不足:没有足够的对手盘
市场波动:价格在成交过程中变化
订单规模:大订单消耗多个价格档位
延迟:从下单到成交的时间差
Order Trailing Distance to Market(订单的跟踪距离/移动止损距离)
Trailing Distance 是移动止损/止盈订单的核心参数,定义了订单价格与市场价格之间的动态距离。
什么是移动跟踪距离?
// 移动止损的基本原理
double trailing_distance = 0.50; // 跟踪距离0.50美元
double best_price = 100.00; // 观察到的最高价(多头)
// 止损价格 = 最佳价格 - 跟踪距离
double stop_price = best_price - trailing_distance;
// 随着价格上涨,止损价也上移
best_price = 101.00; // 价格上涨
stop_price = 101.00 - 0.50 = 100.50; // 止损价上移到100.50Trailing Distance 的关键点:
动态保护:随价格移动自动调整止损
锁定利润:保护已获得的浮盈
适应市场:可根据波动率调整
风险控制:防止利润回吐过多
自动化:无需人工干预
Order Trailing Step(移动止损步长)
Trailing Step 是移动止损订单中控制止损价格调整的最小单位,决定了止损价更新的频率和精度。
什么是移动步长?
// 移动步长的作用
double trailing_step = 0.10; // 步长0.10美元
double best_price = 100.00;
double current_stop = 99.50; // 初始止损 = best_price - 0.50
// 价格涨到100.07,但涨幅0.07 < 步长0.10,止损不变
best_price = 100.07;
current_stop = 99.50; // 保持不变
// 价格涨到100.11,涨幅0.11 >= 步长0.10,止损上移
best_price = 100.11;
current_stop = 100.11 - 0.50 = 99.61; // 止损上移0.11步长 vs 距离
struct TrailingParameters {
double distance; // 跟踪距离(如0.50美元)- 止损与最佳价的差距
double step; // 移动步长(如0.10美元)- 触发止损移动的最小价格变动
// 止损价 = 最佳价 - 距离
// 但只有当最佳价变化 >= 步长时,才更新止损
};Trailing Step 的关键点:
控制频率:决定止损价更新的频繁程度
减少噪声:避免被微小波动频繁触发更新
平衡保护:在保护和灵活性之间找到平衡
可优化:可以通过历史数据找到最优步长
适应市场:不同市场条件需要不同步长
OrderBook(订单簿)
什么是订单簿
订单簿(Order Book)是一个实时记录并展示所有未成交买单和卖单的电子列表。它本质上是一个价格优先、时间优先的排序队列:
买单队列:按价格从高到低排序(谁出价高谁优先)
卖单队列:按价格从低到高排序(谁要价低谁优先)
同价格:按到达时间从早到晚排序(先来后到)
买单队列(Bids)
买单队列(Bids)排序规则:
- 通常买单按价格从高到低排序(谁出价高谁优先)
- 正向迭代器:从高到低遍历
- 反向迭代器:从低到高遍历
案例:
买单队列(价格从高到低):
[100] → [99] → [98] → [97] (正向迭代方向)
↑
当前在100,下一个更低价格是99
使用正向迭代器++会到99吗?不,正向是从高到低
需要反向迭代器从低到高遍历才能找到更低价格卖单队列(Asks)
通常卖单按价格从低到高排序(谁要价低谁优先)
正向迭代器:从低到高遍历
反向迭代器:从高到低遍历
案例:
卖单队列(价格从低到高):
[100] → [101] → [102] → [103] (正向迭代方向)
↑
当前在100,下一个更高价格是101
使用正向迭代器++即可ITHC协议
ITHC协议是什么
ITCH是一种由纳斯达克(Nasdaq)开发的二进制协议,专门用于高效、低延迟地传输交易所的完整订单簿和市场数据。它是全球高频交易和算法交易系统中最核心的数据标准之一。
简单来说,可以把ITCH想象成交易所向全世界实时广播的“内部账本”。它不仅告诉你最终成交的价格,还把你看到交易簿所需的每一笔订单的完整生命周期——从下单、修改、取消到成交——都实时推送给你。有了这些数据,你就可以在本地精确地重建出和交易所一模一样的完整订单簿
ITCH协议的核心特点
首创与普及:由Nasdaq于2000年1月首创。如今不仅用于纳斯达克自己的市场,也被全球许多使用Nasdaq交易系统的交易所采用,例如日本交易所集团(JPX)、新加坡交易所(SGX)、澳大利亚证券交易所(ASX) 等。
数据颗粒度:市场按订单:提供最高级别的市场数据(通常称为L3或Level 3数据)。它通过唯一的订单参考编号来追踪每一个单独的订单,让用户能看到每个价格水平上订单的构成和排队顺序。
设计目标:极致性能:采用二进制编码,每个消息字段的位置和长度都是固定的,解析起来非常快,确定性高。专为低延迟、高吞吐量的场景设计,最大程度减少网络带宽占用。
传输方式:ITCH本身只定义业务消息格式。它通常依赖底层的会话和传输协议来保证数据的可靠传输,最常见的组合是:
MoldUDP64:用于主要的数据广播,通过UDP组播将数据同时发给所有订阅者。
SoupBinTCP:用于点对点的可靠数据传输,常用于启动时的快照恢复(如Glimpse服务)或作为备份通道。
ITCH消息的构成
ITCH协议由一系列按顺序排列的二进制消息组成。你上一轮问到的消息类型缩写,正是每条消息的第一个字节,用于标识该消息属于哪种事件。紧随其后的是根据不同消息类型而变化的定长字段。
一个典型的ITCH消息可能包含以下信息:
- 消息类型:如 A (添加订单), E (订单成交), X (订单取消) 等。
- 时间戳:通常是自午夜以来的纳秒数,精度极高。
- 订单参考编号:交易所分配给该订单的唯一标识符。
- 成交/数量:涉及的股票数量。
- 股票代码:对应的金融工具。
- 价格:以整数表示,需要结合该股票的预设精度进行转换。
- 买卖方向:表示买单 (B) 或卖单 (S)。
消息类型
ITCH协议中,每种消息都由一个唯一的单字节ASCII字符作为类型标识(Message Type)。根据公开的ITCH 5.0规范文档及相关工具库,以下是主要消息类型的缩写、名称及简要说明的汇总整理。
| 类型缩写 | 消息名称 (Message Name) | 简要说明 |
|---|---|---|
| 系统与状态消息 | ||
S | System Event Message | 系统事件消息,标识市场或数据源的启动、结束等状态。 |
R | Stock Directory Message | 股票目录消息,提供股票的基本信息和交易状态。 |
H | Stock Trading Action Message | 股票交易行动消息,指示某支股票的交易状态(如暂停、恢复)。 |
Y | Reg SHO Restriction Message | Reg SHO限制消息,根据Reg SHO规则指示股票的卖空状态。 |
L | Market Participant Position Message | 市场参与者头寸消息,标识特定市场参与者在某股票上的持仓状态。 |
V | MWCB Decline Level Message | 市场-wide熔断机制(MWCB)下跌区间消息。 |
W | MWCB Status Message | 市场-wide熔断机制(MWCB)状态消息。 |
K | IPO Quoting Period Update Message | IPO报价时段更新消息。 |
J | LULD Auction Collar Message | 涨跌幅限制(LULD)拍卖区间消息。 |
h | Operational Halt Message | 运营暂停消息。 |
订单与交易消息
| 订单与交易消息 | ||
|---|---|---|
A | Add Order Message | 添加订单消息(无MPID归属),表示一个新的限价订单进入市场。 |
F | Add Order - MPID Attribution Message | 添加订单消息(有MPID归属),与A类似,但包含了执行经纪商的ID。 |
E | Order Executed Message | 订单执行消息,表示订单部分或全部成交。 |
C | Order Executed with Price Message | 订单以指定价格执行消息,用于成交价与原显示价不同的情况(如非显示订单执行)。 |
X | Order Cancel Message | 订单取消消息,表示订单被部分取消(余量更新)。 |
D | Order Delete Message | 订单删除消息,表示订单被完全取消。 |
U | Order Replace Message | 订单替换消息,表示一个订单被修改(如数量或价格变更)。 |
P | Trade Message (Non-Cross) | 非交叉交易消息,报告常规撮合产生的成交。 |
Q | Cross Trade Message | 交叉交易消息,报告开盘、收盘或IPO等集合竞价产生的成交。 |
B | Broken Trade / Order Execution Message | 交易作废消息,报告一笔之前公布的成交被作废。 |
| 其它消息 | ||
I | NOII Message | 净订单 imbalance指标消息,提供开盘和收盘集合竞价前的 imbalance 信息。 |
N | Retail Price Improvement Indicator (RPII) | 零售价格改进指示器消息。 |
补充说明:
- 变体与扩展:除了标准的NASDAQ TotalView-ITCH 5.0,其他交易所(如Borsa Istanbul)或特定场景(如ITCH for Reported Trades)可能会对协议进行调整或扩展,引入新的消息类型。因此,具体应用中应以目标交易场所发布的协议规范为准。
- 数据表示:在ITCH协议中,消息以二进制格式编码。通常,第一个字节即为上述的消息类型缩写(如
0x41代表A)。