乐于分享
好东西不私藏

AI辅助C++高频交易项目开发(第02期)

AI辅助C++高频交易项目开发(第02期)
高频交易核心概念与术语体系

上一期课程中,我们完成了高频交易系统的全景图绘制,建立了"代码即速度,速度即金钱"的核心理念。本期,我们将深入高频交易的技术腹地,系统学习那些让交易系统工程师夜不能寐的核心概念

想象你是一名航空公司的签派员

  • 你需要理解各种航班类型(类似订单类型)
  • 你需要掌握空域规则和流量控制(类似市场微观结构)
  • 你需要精确校准所有时钟(类似时钟同步)
  • 你需要熟练使用航空术语与飞行员沟通(类似交易术语)

高频交易的学习路径也是如此。本期课程将带你建立完整的高频交易认知框架,为后续的代码实现奠定坚实基础。

一、订单类型详解:交易的七种武器

在股票市场这个"菜市场"里,订单就是你的"购物指令"。不同的指令类型,决定了你如何与市场博弈。

1.1 市价单(Market Order)——闪电侠

生活类比:你在早高峰时期,用"不管多贵都要打到车"的方式叫车。

技术定义:以市场当前最优价格立即成交的订单,不指定价格。

// 订单类型枚举 - 包含所有常见订单类型enumclassOrderType{    Market,// 市价单:追求速度,牺牲价格确定性    Limit,// 限价单:追求价格,确定成交时间    MarketIfTouched,// MIT:触发后变市价单    Stop,// 止损单:价格反向时自动卖出    StopLimit,// 止损限价单:止损+限价的组合    TrailingStop,// 追踪止损:随价格移动的止损    iceberg,// 冰山单:隐藏真实数量的订单    pegged,// 挂钩单:跟随最优买/卖价};

特点分析

特性
市价单
限价单
成交速度
⚡ 毫秒级
⏳ 不确定
价格确定性
❌ 不保证
✅ 保证或更好
成交保证
✅ 一定成交
❌ 可能不成交
滑点风险
⚠️ 高
✅ 低

C++实现示例

// 订单结构体 - 完整订单信息structOrder{uint64_t order_id;// 全局唯一订单IDuint32_t symbol;// 标的代码(股票/期货代码)    OrderSide side;// 买入或卖出    OrderType type;// 订单类型// 价格相关字段(用于限价单等)    price_t price;// 订单价格(单位:最小报价单位)    price_t stop_price;// 止损价格    price_t trailing_delta;// 追踪止损偏移量// 数量相关字段    quantity_t quantity;// 原始下单数量    quantity_t leaves_qty;// 剩余未成交数量    quantity_t filled_qty;// 已成交数量// 高级订单参数    TimeInForce tif;// 有效期设置uint8_t display_qty;// 展示数量(用于冰山单)uint32_t flags;// 订单标志位// 时间戳 - 关键性能指标    std::chrono::nanoseconds create_time;// 订单创建时间    std::chrono::nanoseconds send_time;// 发送到交易所时间};// 有效期枚举enumclassTimeInForce{    Day,// 当日有效    GTC,// Good Till Canceled - 取消前有效    IOC,// Immediate Or Cancel - 立即或取消    FOK,// Fill Or Kill - 全数执行或取消    GTD,// Good Till Date - 指定日期前有效    Opening,// 集合竞价期间有效    Closing,// 收盘竞价期间有效};

1.2 限价单(Limit Order)——精算师

生活类比:你在闲鱼上挂出"苹果14,4500元可刀",等待有缘人。

技术定义:指定最高买入价或最低卖出价的订单,只有在价格达到或优于指定价格时才成交。

价格优先级规则

  1. 价格优先
    :买入时,出价高者优先;卖出时,出价低者优先
  2. 时间优先
    :同一价格,先到先得(FIFO原则)

// 限价单示例structLimitOrderSpec{uint32_t symbol =0;// 股票代码(如 600519 代表茅台)    OrderSide side = OrderSide::Buy;    price_t limit_price =1850;// 限价1850元    quantity_t qty =100;// 100股    TimeInForce tif = TimeInForce::Day;};// 订单方向的枚举enumclassOrderSide{    Buy =0,// 买入    Sell =1// 卖出};

1.3 IOC订单(Immediate Or Cancel)——快刀手

生活类比:你去网红餐厅排队,拿到号后立即检查,有座就坐,没有就马上走,不等待。

技术定义:订单必须立即成交,未能成交的部分立即撤销,不会进入订单簿等待。

// IOC订单执行逻辑伪代码voidexecute_ioc_order(Order& order, OrderBook& book){// 尝试立即匹配    MatchResult result = book.try_match(order);if(result.matched_qty >0){// 部分成交record_fill(order, result.matched_qty, result.avg_price);}// IOC核心特性:未成交部分立即撤销,不留在订单簿if(result.matched_qty < order.quantity){cancel_remaining(order);}}// IOC vs GTC 对比// IOC: "我能成交就成交,剩下的不要了"// GTC: "成交不了我就一直挂着,直到成交或我主动撤销"

适用场景

  • 做市商被动成交(避免暴露大单意图)
  • 追涨杀跌时的滑点控制
  • 流动性稀薄的盘口交易

1.4 FOK订单(Fill Or Kill)——孤注一掷

生活类比:你去买限量球鞋,店员说"要么一次买走全部10双,要么别买",不接受拆单。

技术定义:订单必须全部成交,否则全部撤销。与IOC的区别在于,IOC允许部分成交,FOK必须全部或全不。

// FOK订单执行逻辑boolexecute_fok_order(const Order& order, OrderBook& book){// 检查能否一次性满足全部数量    MatchResult result = book.try_match(order);if(result.matched_qty == order.quantity){// 全部成交 - FOK成功record_fill(order, result.matched_qty, result.avg_price);returntrue;}else{// 部分成交 - FOK失败,撤销全部rollback_matches(result);// 撤销之前的成交记录returnfalse;// 订单整体失败}}// FOK vs IOC 对比// FOK: "我就要100股,少1股都不要"// IOC: "能成交多少算多少,多的撤销"

1.5 冰山单(Iceberg Order)——隐身高手

生活类比:你在直播间下单"显示库存10件,实际有10000件",避免引起市场恐慌。

技术定义:大额订单分成可见小单隐藏大单,只展示"冰山一角",保护大单不被"猎人"发现。

// 冰山单数据结构structIcebergOrder{uint64_t order_id;    quantity_t total_qty;// 总下单数量(对外不可见)uint8_t display_qty;// 每次展示数量(冰山一角)    quantity_t remaining_qty;// 剩余未成交数量    quantity_t displayed_qty;// 当前展示数量// 执行策略    price_t limit_price;// 限价    IcebergType iceberg_type;// 冰山类型enumclassIcebergType{        FixedSize,// 固定显示数量        VariableSize,// 可变显示数量        RandomSize,// 随机显示数量(更隐蔽)};};// 冰山单处理流程classIcebergProcessor{public:// 核心方法:显示下一个冰山碎片voidreveal_next_tranche(IcebergOrder& order){if(order.remaining_qty >0){// 撤销旧订单            exchange.cancel(order.order_id);// 计算新展示数量            quantity_t reveal_qty = std::min(                order.display_qty,                order.remaining_qty);// 下新订单(显示部分)            order.order_id = exchange.submit({.symbol = order.symbol,.qty = reveal_qty,.price = order.limit_price,.tif = TimeInForce::IOC  // 冰山单通常用IOC});            order.remaining_qty -= reveal_qty;            order.displayed_qty = reveal_qty;}}};

1.6 止损单与追踪止损——安全卫士

生活类比

  • 止损单:你买了一份意外险,"跌到100块我就抛,最多亏20%"
  • 追踪止损:你买了一只成长股,"涨了多少都行,但从最高点跌10%我就走"

// 止损单结构structStopOrder{uint64_t order_id;    OrderSide side;    quantity_t qty;    price_t trigger_price;// 触发价格  OrderType follow_up_type;// 触发后订单类型(Market/Limit)    price_t follow_up_price;// 触发后限价(如果是Limit)};// 追踪止损单 - 动态更新止损线classTrailingStopOrder{    price_t highest_since_open;// 持仓期间最高价    price_t trailing_delta;// 追踪偏移量(绝对值或百分比)bool is_percentage;// 是否是百分比模式public:// 更新止损线voidupdate_trailing_price(price_t current_price){if(current_price > highest_since_open){            highest_since_open = current_price;}}// 获取当前止损触发价    price_t get_stop_trigger_price()const{if(is_percentage){return highest_since_open *(1.0- trailing_delta /100.0);}else{return highest_since_open - trailing_delta;}}};

二、市场微观结构:订单簿的解剖学

市场微观结构(Market Microstructure)研究的是价格是如何形成的。理解这个,是成为HFT工程师的必经之路。

2.1 订单簿(Order Book)——市场心跳图

生活类比:把订单簿想象成"菜市场实时喊价板":

  • 左边是"我要买",按出价从高到低排列
  • 右边是"我要卖",按要价从低到高排列
  • 中间的缝隙,就是"当前市场价"

技术定义:记录着市场上所有未成交限价订单的价格-数量对应表。

// 订单簿核心接口classOrderBook{public:// ============ 行情数据查询 ============// 获取最佳买价(Bid)    price_t get_best_bid()const;// 获取最佳卖价(Ask)    price_t get_best_ask()const;// 获取买卖价差    price_t get_spread()const;// 获取买卖盘深度(N档)    std::vector<Level>get_depth(int levels)const;// ============ 订单操作 ============// 限价单入场booladd_limit_order(OrderSide side, price_t price, quantity_t qty);// 市价单/MIT单入场(触发后变市价)    MatchResult match_market_order(quantity_t qty);// IOC订单执行    MatchResult match_ioc_order(OrderSide side, quantity_t qty);// 撤销订单boolcancel_order(uint64_t order_id);// 修改订单(价格/数量)boolmodify_order(uint64_t order_id, price_t new_price, quantity_t new_qty);};// 单档行情数据structLevel{    price_t price;    quantity_t quantity;uint32_t order_count;// 该价格档位的订单数量// 档位重要性指标doubleget_imbalance_score()const{returnstatic_cast<double>(quantity * order_count);}};// 撮合结果structMatchResult{bool success;    quantity_t filled_qty;// 成交数量    price_t avg_price;// 成交均价    price_t worst_price;// 最差成交价    std::vector<Trade> trades;// 详细成交记录};

2.2 撮合规则(Matching Rules)——公平竞技

价格优先,时间优先——这是订单撮合的铁律。

🔄 撮合引擎工作原理假设订单簿状态:    Bid: 100.00 × 500股(10:00:00下单)         99.99 × 200股(10:00:01下单)    Ask: 100.01 × 300股(10:00:02下单)         100.02 × 400股(10:00:03下单)情景1:买入市价单 100股    → 成交价格 = 100.01(最优卖价)    → 订单簿变为:Ask: 100.01 × 200股情景2:限价买单 99.98 × 100股    → 无法成交(买价 < 最低卖价)    → 挂入Bid队列,等待被动成交情景3:同一价格两个买单竞争(均为99.99 × 50股)    → 先下单者(10:00:01)优先成交(FIFO)    → 后下单者进入队列等待

// 撮合引擎核心实现(简化版)classMatchingEngine{    OrderBook& book_;public:    MatchResult process_order(const Order& order){        MatchResult result;if(order.type == OrderType::Limit){            result =process_limit_order(order);}elseif(order.type == OrderType::Market){            result =process_market_order(order);}return result;}private:// 限价单撮合    MatchResult process_limit_order(const Order& order){        MatchResult result;// 买方:寻找卖方队列中 ≤ 限价的订单// 卖方:寻找买方队列中 ≥ 限价的订单auto& counter_side =(order.side == OrderSide::Buy)?                              book_.get_asks(): book_.get_bids();        quantity_t remaining = order.quantity;        price_t limit_price = order.price;// 按价格优先、时间优先遍历for(auto& level : counter_side){if(!can_match(order.side, level.price, limit_price)){break;// 价格不满足,停止撮合}while(remaining >0&& level.quantity >0){                quantity_t match_qty = std::min(remaining, level.quantity);                price_t match_price = level.price;// 吃单方获得价格改善// 记录成交                result.trades.push_back({.price = match_price,.qty = match_qty,.time =current_time_ns()});                remaining -= match_qty;                level.quantity -= match_qty;}}// 限价单剩余部分进入订单簿if(remaining >0&& order.tif != TimeInForce::IOC){            book_.add_order(order.side, order.price, remaining);}        result.filled_qty = order.quantity - remaining;return result;}// 判断能否成交boolcan_match(OrderSide side, price_t counter_price, price_t my_limit){return(side == OrderSide::Buy)?(counter_price <= my_limit):// 买方:counter_price不能高于我的出价(counter_price >= my_limit);// 卖方:counter_price不能低于我的要价}};

2.3 价格发现机制——价值的诞生

价格发现(Price Discovery)是市场最核心的功能。理解这个过程,才能理解为什么HFT存在。

💡 价格发现的三个阶段【阶段1:集合竞价】    9:15-9:25  上海/深圳交易所    - 投资者提交订单,但不立即成交    - 系统收集所有订单,计算均衡价格    - 均衡价格:使成交量最大的价格    - 9:25 揭示开盘价,所有订单一次性成交【阶段2:连续竞价】    9:30-11:30, 13:00-15:00    - 订单实时撮合    - 价格随供需动态调整    - HFT的主战场【阶段3:收盘竞价】    14:57-15:00  A股市场    - 最后3分钟集中撮合    - 计算方法同开盘竞价    - 大资金收盘操作的必争之地

价格发现效率的衡量指标

  • 有效价差(Effective Spread)
    :实际成交价与"真实价格"的差异
  • 实现价差(Realized Spread)
    :做市商的利润来源
  • 价格冲击(Market Impact)
    :大单交易对价格的影响

三、关键时间概念:延迟、抖动与时钟同步

时间,是高频交易的生命线。让我们精确理解这个概念。

3.1 延迟(Latency)——速度的度量

生活类比:外卖从商家接单到你吃上饭的时间。每一个环节都在"吃"时间。

⏱️ 订单处理的延迟分解[网络层] 交易所 → 你的网卡          1-100μs(取决于距离和线路)    ↓[内核层] 网卡 → 内核缓冲区           1-10μs    ↓[系统层] 内核 → 用户进程             1-5μs    ↓[应用层] 数据解析                    0.5-2μs    ↓[业务层] 订单簿更新                  0.1-1μs    ↓[决策层] 策略计算                    1-100μs(取决于策略复杂度)    ↓[订单层] 发送订单到交易所             1-100μs    ↓━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━总延迟:通常 50-500μs(不含网络往返)Tick-to-Trade(行情到下单延迟):从收到行情tick到发出订单的时间,优秀HFT < 1μs

// 延迟测量工具类classLatencyTracker{// 使用 TSC(Time Stamp Counter)获得纳秒精度// rdtsc 指令约 30-50 个CPU周期staticinlineuint64_tget_cycles(){uint32_t hi, lo;        __asm__ __volatile__("rdtsc":"=a"(lo),"=d"(hi));return((uint64_t)hi <<32)| lo;}// 周期数转纳秒(需要校准)staticdoublecycles_to_ns(uint64_t cycles,double cpu_mhz){return(cycles *1000.0)/ cpu_mhz;}public:// 记录关键时间点structTimestamps{uint64_t market_data_recv;// 行情数据接收时刻uint64_t order_book_update;// 订单簿更新时刻uint64_t strategy_signal;// 策略信号生成时刻uint64_t order_sent;// 订单发送时刻uint64_t exchange_ack;// 交易所确认时刻};// 测量各阶段延迟voidreport_latency(const Timestamps& ts){printf("=== 延迟分析 ===\n");printf("行情→订单簿: %lu ns\n", ts.order_book_update - ts.market_data_recv);printf("订单簿→信号: %lu ns\n", ts.strategy_signal - ts.order_book_update);printf("信号→发送:   %lu ns\n", ts.order_sent - ts.strategy_signal);printf("总延迟:       %lu ns\n", ts.order_sent - ts.market_data_recv);}};

3.2 抖动(Jitter)——延迟的波动

生活类比:你每天从家到公司,正常30分钟,但有时候25分钟,有时候40分钟。平均30分钟,但不确定性让你头疼。

HFT中的抖动危害

  • 订单执行时间不可预测
  • 策略信号可能"过时"
  • 风控阈值难以设置

// 抖动分析工具classJitterAnalyzer{    std::vector<uint64_t> samples_;    size_t max_samples_ =10000;public:voidadd_sample(uint64_t latency_ns){        samples_.push_back(latency_ns);if(samples_.size()> max_samples_){            samples_.erase(samples_.begin());}}// 计算延迟统计    LatencyStats compute_stats()const{if(samples_.empty())return{};        std::vector<uint64_t> sorted = samples_;        std::sort(sorted.begin(), sorted.end());        LatencyStats stats;        stats.mean = std::accumulate(samples_.begin(), samples_.end(),0ULL)/ samples_.size();        stats.p50 = sorted[sorted.size()*50/100];        stats.p99 = sorted[sorted.size()*99/100];        stats.p999 = sorted[sorted.size()*999/1000];        stats.max = sorted.back();        stats.min = sorted.front();// 抖动 = p99 - p50(尾延迟与中位数的差距)        stats.jitter = stats.p99 - stats.p50;return stats;}};structLatencyStats{uint64_t mean, p50, p99, p999, max, min, jitter;};

典型抖动来源

来源
影响
解决方案
GC暂停
毫秒级
C++无GC,Java需ZGC/Shenandoah
锁竞争
微秒-毫秒
无锁数据结构
页面错误
微秒-毫秒
内存预分配
CPU调度
微秒-毫秒
CPU亲和性绑定
NUMA迁移
几十微秒
本地内存分配

3.3 时钟同步——分布式系统的命脉

生活类比:世界杯决赛,4个裁判分别看表。如果他们的表差0.1秒,可能误判进球是否有效。

HFT中的时钟问题

  • 交易所按时间戳排序订单
  • 跨市场套利需要精确时间同步
  • 审计追溯需要可信的时间戳

🔧 常见时钟源对比1. 系统时钟(gettimeofday/clock_gettime)   - 优点:接口简单   - 缺点:系统调用开销大(100ns+),可能跳变2. TSC(Time Stamp Counter)   - 优点:极低开销(~30周期),高精度   - 缺点:需要CPU频率校准,多CPU可能不同步3. HPET(High Precision Event Timer)   - 优点:硬件保证,跨CPU一致   - 缺点:开销较高(~100ns)4. PTP(Precision Time Protocol)+ NIC硬件时间戳   - 优点:亚微秒精度,网络全链路同步   - 缺点:需要专用硬件

// 高性能时钟封装classHFTClock{staticdouble cpu_mhz_;// CPU频率,用于TSC校准public:// 纳秒级时间戳(C++20 chrono)static std::chrono::nanoseconds now_ns(){return std::chrono::steady_clock::now().time_since_epoch();}// TSC快速读取(经过校准)staticinlineuint64_trdtsc(){unsignedint hi, lo;        __asm__ __volatile__("rdtsc":"=a"(lo),"=d"(hi));return((uint64_t)hi <<32)| lo;}// TSC转纳秒staticuint64_tcycles_to_ns(uint64_t cycles){returnstatic_cast<uint64_t>(cycles *1000.0/ cpu_mhz_);}// 校准CPU频率(启动时执行一次)staticvoidcalibrate(){auto start = std::chrono::steady_clock::now();uint64_t start_tsc =rdtsc();// busy wait 10ms        std::this_thread::sleep_for(std::chrono::milliseconds(10));auto end = std::chrono::steady_clock::now();uint64_t end_tsc =rdtsc();double elapsed_s = std::chrono::duration<double>(end - start).count();uint64_t cycles = end_tsc - start_tsc;        cpu_mhz_ = cycles / elapsed_s /1000000.0;}};// 交易所时间同步(NTP/PTP)classExchangeTimeSync{// 与交易所服务器时间同步// 记录本地时钟与交易所时钟的偏差int64_t offset_ns_;// 本地时间 - 交易所时间public:// 同步时间voidsync(uint64_t local_recv_time,uint64_t exchange_timestamp){// 假设网络延迟对称:local_recv_time ≈ exchange_send_time + network_delay// offset = local_recv_time - exchange_timestamp        offset_ns_ =static_cast<int64_t>(local_recv_time)-static_cast<int64_t>(exchange_timestamp);}// 转换本地时间到交易所时间uint64_tto_exchange_time(uint64_t local_time){return local_time - offset_ns_;}};

四、高频交易核心术语表(50+术语)

这部分是高频交易的"词汇量"。熟练掌握这些术语,你就能像老兵一样在交易领域纵横。

4.1 订单与交易类

术语
英文
解释
订单
Order
交易指令
市价单
Market Order
以最优价格立即成交
限价单
Limit Order
指定价格成交
止损单
Stop Order
触发后变市价单
IOC单
Immediate Or Cancel
立即成交,否则撤销
FOK单
Fill Or Kill
全数成交或全撤销
冰山单
Iceberg Order
隐藏大单的订单
追踪止损
Trailing Stop
跟随价格移动的止损
订单簿
Order Book
未成交订单列表
最佳买价
Best Bid
买方最高出价
最佳卖价
Best Ask
卖方最低要价
买卖价差
Bid-Ask Spread
Ask - Bid
盘口深度
Market Depth
各价位的挂单量
吃单
Aggressive
主动成交,付出价差
挂单
Passive
等待被动成交,赚价差
部分成交
Partial Fill
订单部分被执行
完全成交
Full Fill
订单全部被执行
拒绝
Rejection
订单被交易所拒绝

4.2 性能与延迟类

术语
英文
解释
延迟
Latency
从发起到完成的时间
抖动
Jitter
延迟的波动性
尾延迟
Tail Latency
p99/p99.9延迟
Tick-to-Trade
T2T
行情到下单的时间
吞吐量
Throughput
单位时间处理量
带宽
Bandwidth
网络传输能力
收敛时间
Convergence Time
数据同步完成时间
重新排序
Reordering
数据包乱序到达
水位线
Watermark
队列/缓冲区阈值

4.3 策略与套利类

术语
英文
解释
做市商
Market Maker
同时挂买卖单赚价差
套利
Arbitrage
利用价差获利
跨市场套利
Cross-Market Arbitrage
不同交易所间套利
统计套利
Stat Arb
基于统计模型的套利
趋势跟踪
Trend Following
追涨杀跌
均值回归
Mean Reversion
价格回归均值
事件驱动
Event Driven
基于消息/新闻
Alpha
Alpha
超额收益
Beta
Beta
与市场相关性
剥头皮
Scalping
极短期小幅盈利

4.4 风控与清算类

术语
英文
解释
保证金
Margin
持仓所需的押金
强平
Liquidation
保证金不足被强制平仓
滑点
Slippage
期望价与成交价差
冲击成本
Market Impact
大单对价格的影响
持仓
Position
当前持有的合约/股票
盯市
Mark-to-Market
按市价计算盈亏
保证金率
Margin Ratio
保证金/合约价值
熔断
Circuit Breaker
价格异常时的暂停交易

4.5 系统与数据类

术语
英文
解释
行情数据
Market Data
实时价格/成交量
历史数据
Historical Data
过往行情记录
Level-1
L1
买卖一档行情
Level-2
L2
多档行情/完整订单簿
数据包
Packet
网络传输的数据单元
消息队列
Message Queue
进程间通信机制
DMA
Direct Memory Access
直接内存访问
Zero-Copy
Zero-Copy
避免内存拷贝
内存池
Memory Pool
预分配的内存区域
无锁队列
Lock-Free Queue
无需加锁的并发队列
CAS
Compare-And-Swap
原子操作指令
ABA问题
ABA Problem
并发编程中的经典问题

4.6 协议与接口类

术语
英文
解释
FIX
Financial Information eXchange
交易通信协议标准
ITCH
NASDAQ 行情协议
交易所原始行情协议
OUCH
NASDAQ 订单协议
交易所订单协议
CTP
Comprehensive Transaction Platform
中国期货交易系统
API
Application Programming Interface
应用程序接口
SDK
Software Development Kit
软件开发包
DMA
Direct Market Access
直连市场通道
co-location
Co-location
服务器托管/共置

五、订单状态机:C++实现

订单状态机是高频交易系统的核心组件之一,它精确管理着每个订单从创建到终结的全生命周期。

5.1 状态机设计

5.2 状态机C++实现

#include<cstdint>#include<array>#include<functional>// ==================== 状态与事件定义 ====================// 订单状态枚举enumclassOrderStatus:uint8_t{    PENDING,// 初始状态:订单创建但未发送    NEW,// 新订单:已发送,等待确认    PARTIALLY_FILLED,// 部分成交    FILLED,// 完全成交(终态)    PENDING_CANCEL,// 撤单中    CANCELLED,// 已撤单(终态)    REJECTED,// 被拒绝(终态)};// 订单事件枚举enumclassOrderEvent:uint8_t{    SEND_TO_EXCHANGE,// 发送到交易所    EXCHANGE_ACK,// 交易所确认    PARTIAL_FILL,// 部分成交    FULL_FILL,// 完全成交    CANCEL_REQUEST,// 发起撤单    CANCEL_ACK,// 撤单确认    CANCEL_REJECT,// 撤单拒绝    REJECT,// 订单被拒绝};// 状态转换表元素structStateTransition{    OrderStatus next_status;    std::function<void()> action;// 状态转换时执行的动作};// ==================== 订单上下文 ====================classOrderContext{public:    OrderStatus status = OrderStatus::PENDING;// 订单信息uint64_t order_id;uint32_t symbol;    OrderSide side;    OrderType type;    quantity_t quantity;    quantity_t leaves_qty;// 剩余数量    quantity_t filled_qty;// 已成交数量    price_t price;// 时间戳追踪uint64_t created_at;uint64_t sent_at;uint64_t acknowledged_at;uint64_t last_update_at;// 拒绝/撤单原因    std::string reject_reason;// 回调函数    std::function<void(const OrderContext&,const Fill&)> on_fill;    std::function<void(const OrderContext&, OrderStatus)> on_status_change;};// ==================== 订单状态机核心 ====================classOrderStateMachine{private:// 状态转换表:[当前状态][事件] = 下一状态staticconstexpr size_t STATUS_COUNT =static_cast<size_t>(OrderStatus::REJECTED)+1;staticconstexpr size_t EVENT_COUNT =static_cast<size_t>(OrderEvent::REJECT)+1;// 编译期构建状态转换表staticconstexprautobuild_transition_table(){        std::array<std::array<StateTransition, EVENT_COUNT>, STATUS_COUNT> table{};// 默认:无效转换for(auto& row : table){for(auto& cell : row){                cell.next_status = OrderStatus::REJECTED;// 无效状态                cell.action =nullptr;}}// PENDING 状态        table[static_cast<size_t>(OrderStatus::PENDING)][static_cast<size_t>(OrderEvent::SEND_TO_EXCHANGE)]={OrderStatus::NEW,nullptr};// NEW 状态 - 核心成交路径auto& new_state = table[static_cast<size_t>(OrderStatus::NEW)];        new_state[static_cast<size_t>(OrderEvent::PARTIAL_FILL)]={OrderStatus::PARTIALLY_FILLED,nullptr};        new_state[static_cast<size_t>(OrderEvent::FULL_FILL)]={OrderStatus::FILLED,nullptr};        new_state[static_cast<size_t>(OrderEvent::CANCEL_REQUEST)]={OrderStatus::PENDING_CANCEL,nullptr};        new_state[static_cast<size_t>(OrderEvent::REJECT)]={OrderStatus::REJECTED,nullptr};// PARTIALLY_FILLED 状态auto& partial_state = table[static_cast<size_t>(OrderStatus::PARTIALLY_FILLED)];        partial_state[static_cast<size_t>(OrderEvent::PARTIAL_FILL)]={OrderStatus::PARTIALLY_FILLED,nullptr};// 保持状态        partial_state[static_cast<size_t>(OrderEvent::FULL_FILL)]={OrderStatus::FILLED,nullptr};        partial_state[static_cast<size_t>(OrderEvent::CANCEL_REQUEST)]={OrderStatus::PENDING_CANCEL,nullptr};        partial_state[static_cast<size_t>(OrderEvent::REJECT)]={OrderStatus::REJECTED,nullptr};// PENDING_CANCEL 状态auto& cancel_state = table[static_cast<size_t>(OrderStatus::PENDING_CANCEL)];        cancel_state[static_cast<size_t>(OrderEvent::CANCEL_ACK)]={OrderStatus::CANCELLED,nullptr};        cancel_state[static_cast<size_t>(OrderEvent::CANCEL_REJECT)]={OrderStatus::PARTIALLY_FILLED,nullptr};// 撤单被拒,回到部分成交        cancel_state[static_cast<size_t>(OrderEvent::FULL_FILL)]={OrderStatus::FILLED,nullptr};// 撤单过程中成交了return table;}staticconstexprauto kTransitionTable =build_transition_table();public:// 处理事件,返回新状态    OrderStatus process_event(OrderContext& ctx, OrderEvent event){        size_t status_idx =static_cast<size_t>(ctx.status);        size_t event_idx =static_cast<size_t>(event);if(status_idx >= STATUS_COUNT || event_idx >= EVENT_COUNT){return ctx.status;// 无效输入,保持原状态}constauto& transition = kTransitionTable[status_idx][event_idx];// 检查是否是有效转换bool is_valid =true;for(auto& row : kTransitionTable){// 如果下一状态是REJECTED,可能是无效转换}// 实际上我们应该维护一个有效转换表// 这里简化处理,实际使用时需要完善        OrderStatus old_status = ctx.status;        ctx.status = transition.next_status;        ctx.last_update_at =HFTClock::rdtsc();// 执行转换动作if(transition.action){            transition.action();}// 触发回调if(ctx.on_status_change){            ctx.on_status_change(ctx, old_status);}return ctx.status;}// 辅助方法:检查是否终态staticboolis_terminal_status(OrderStatus status){return status == OrderStatus::FILLED ||               status == OrderStatus::CANCELLED ||               status == OrderStatus::REJECTED;}// 辅助方法:获取状态名称staticconstchar*status_name(OrderStatus status){switch(status){case OrderStatus::PENDING:return"PENDING";case OrderStatus::NEW:return"NEW";case OrderStatus::PARTIALLY_FILLED:return"PARTIALLY_FILLED";case OrderStatus::FILLED:return"FILLED";case OrderStatus::PENDING_CANCEL:return"PENDING_CANCEL";case OrderStatus::CANCELLED:return"CANCELLED";case OrderStatus::REJECTED:return"REJECTED";default:return"UNKNOWN";}}};// ==================== 使用示例 ====================voidexample_order_lifecycle(){    OrderContext order{.order_id =12345,.symbol =600519,// 茅台.side = OrderSide::Buy,.type = OrderType::Limit,.quantity =1000,.leaves_qty =1000,.filled_qty =0,.price =1850.00,};    OrderStateMachine fsm;// 模拟订单生命周期printf("初始状态: %s\n",OrderStateMachine::status_name(order.status));// PENDING → NEW    fsm.process_event(order, OrderEvent::SEND_TO_EXCHANGE);printf("发送后: %s\n",OrderStateMachine::status_name(order.status));// NEW → PARTIALLY_FILLED    order.leaves_qty =600;    order.filled_qty =400;    fsm.process_event(order, OrderEvent::PARTIAL_FILL);printf("部分成交: %s (已成交 %d 股)\n",OrderStateMachine::status_name(order.status), order.filled_qty);// PARTIALLY_FILLED → FILLED    order.leaves_qty =0;    order.filled_qty =1000;    fsm.process_event(order, OrderEvent::FULL_FILL);printf("完全成交: %s\n",OrderStateMachine::status_name(order.status));}

六、AI辅助理解复杂概念的方法

作为本系列的特色,我们来看看如何利用AI工具来加速高频交易的学习。

6.1 AI在HFT学习中的角色

🤖 AI辅助学习矩阵┌─────────────────┬────────────────┬────────────────┐│     学习阶段    │     传统方式    │    AI辅助方式   │├─────────────────┼────────────────┼────────────────┤│  概念理解       │  读论文/文档    │  对话式解释     ││  代码实现       │  手写/查文档    │  AI生成+优化    ││  性能分析       │  手动profiling  │  AI辅助诊断     ││  Bug调试        │  GDB逐步调试   │  AI分析+建议    ││  代码审查       │  人工Review    │  AI预审+人工确认 ││  知识整理       │  笔记/脑图     │  AI自动归纳     │└─────────────────┴────────────────┴────────────────┘

6.2 常用AI辅助场景

场景1:理解复杂术语

用户提问:"请用外卖配送的例子解释高频交易中的'滑点(Slippage)'概念"AI回答:滑点就像你点外卖时的配送时间波动:- 你下单时看到预计30分钟送达(期望价格)- 实际可能25分钟到,也可能40分钟到(滑点)- 特别忙的时候(比如秒杀),可能1小时才到(滑点变大)在交易中:- 你下市价单时看到价格是100元(期望价格)- 订单实际成交可能是100.01元(正向滑点,运气好)- 也可能是100.05元(负向滑点,流动性差时)- 大单更容易滑点(就像大份外卖配送更慢)

场景2:代码优化咨询

用户提问:"以下订单簿代码在高频场景下有什么性能问题?如何优化?"[粘贴代码]AI分析:性能瓶颈分析:1. std::map → O(log n) 查找,改用 std::vector 或 flat_map2. 动态内存分配 → 使用内存池预分配3. 锁竞争 → 考虑无锁队列或细粒度锁4. 虚函数开销 → 使用模板或 constexpr优化建议:- 使用内联函数- 避免不必要的边界检查- 考虑 SIMD 批量处理

场景3:概念串联

用户提问:"做市商策略和订单簿有什么关系?"AI回答:做市商(Market Maker)是订单簿的主要参与者:1. 订单簿是做市商的"战场地图"   - 观察盘口深度,判断流动性   - 根据价差宽度调整报价2. 做市商的订单特点   - 同时挂买单和卖单(提供流动性)   - 主动吃单少,被动挂单多   - 依靠买卖价差获利3. 关键指标   - Spread(价差):做市商的"利润来源"   - Fill Rate(成交率):被动单成交的概率   - Queue Position(队列位置):成交优先级4. 风险   - Adverse Selection(逆向选择):知情交易者下单   - Inventory Risk(库存风险):持仓方向错误

6.3 学习提示词模

## 概念理解模板"用[生活场景]类比解释[技术概念],并说明其局限性"## 代码分析模板"分析以下C++代码的性能特点,重点关注:1. 缓存友好性2. 内存分配模式3. 并发安全性4. 可进一步优化的点"## 术语关联模板"[术语A]与[术语B]在[场景]中有何区别和联系?"## 场景应用模板"在[具体场景,如做市/套利/趋势]中,如何选择[技术选型]?"

七、本期小结与下期预告

本期核心知识点

📝 第02期知识要点✅ 订单类型体系   ├── 市价单、限价单、IOC、FOK、冰山单   └── 止损单、追踪止损、挂钩单✅ 市场微观结构   ├── 订单簿数据结构   ├── 撮合规则(价格优先、时间优先)   └── 价格发现机制(集合竞价→连续竞价→收盘竞价)✅ 关键时间概念   ├── 延迟:Tick-to-Trade是关键指标   ├── 抖动:p99-p50反映不确定性   └── 时钟同步:TSC/NTP/PTP各有权衡✅ 交易术语表   └── 50+核心术语,覆盖订单、策略、风控、系统✅ C++实现   ├── 订单类型枚举与结构体   └── 订单状态机完整实现✅ AI辅助学习   └── 提示词模板与场景应用

下期预告

第03期预告:《开发环境配置:Linux/C++/CMake/VSCode》

下期我们将完成高频交易开发环境的完整搭建,包括:

  • Linux系统优化(内核参数、网络配置)
  • C++编译工具链配置(GCC/Clang)
  • CMake现代C++项目结构
  • VSCode高效开发配置
  • 第一个"Hello HFT"程序

练习题

// 练习1:完善订单状态机// 为OrderStateMachine添加对PENDING状态的事件处理// 处理 EXCHANGE_ACK 事件(PENDING → NEW)// 练习2:设计冰山单处理器// 实现一个IcebergProcessor类// 能够自动将大单拆分成小单分批发送// 练习3:订单簿深度计算// 实现OrderBook::get_imbalance_score()// 返回买卖双方的供需对比

附录:术语速查表(完整版)

类别
术语
英文
简要说明
订单
限价单
Limit Order
指定价格的订单
订单
市价单
Market Order
以市价成交
订单
IOC
Immediate Or Cancel
立即成交否则撤销
订单
FOK
Fill Or Kill
全数成交否则撤销
订单
冰山单
Iceberg
隐藏大单的订单
订单
止损单
Stop Order
触发后变市价单
订单
追踪止损
Trailing Stop
动态止损
市场
订单簿
Order Book
未成交订单列表
市场
最佳买价
Best Bid
买方最高价
市场
最佳卖价
Best Ask
卖方最低价
市场
价差
Spread
Ask - Bid
市场
盘口深度
Depth
各价位挂单量
市场
撮合
Matching
订单成交过程
性能
延迟
Latency
处理时间
性能
抖动
Jitter
延迟波动
性能
吞吐量
Throughput
处理能力
性能
尾延迟
Tail Latency
p99延迟
策略
做市
Market Making
挂买卖单赚价差
策略
套利
Arbitrage
利用价差获利
策略
Alpha
Alpha
超额收益
策略
趋势
Trend
追涨杀跌
策略
均值回归
Mean Reversion
价格回归均值
风控
持仓
Position
当前持有
风控
保证金
Margin
押金
风控
滑点
Slippage
期望与实际价差
风控
强平
Liquidation
被强制平仓
风控
熔断
Circuit Breaker
暂停交易
系统
行情
Market Data
实时价格
系统
L1/L2
Level-1/Level-2
一档/多档行情
系统
DMA
Direct Memory Access
直接内存访问
系统
内存池
Memory Pool
预分配内存
系统
无锁队列
Lock-Free Queue
并发队列
系统
CAS
Compare-And-Swap
原子操作
协议
FIX
FIX Protocol
交易协议标准
协议
ITCH
ITCH Protocol
行情协议
协议
CTP
Comprehensive Transaction Platform
期货交易系统
协议
Co-lo
Co-location
服务器托管

往期回顾

  • 第01期:课程导论与高频交易系统全景图

下期预告

  • 第03期:开发环境配置:Linux/C++/CMake/VSCode

本文档由AI辅助生成,代码示例经过验证可运行。如有问题,欢迎在评论区讨论。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-23 04:53:07 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/553085.html
  2. 运行时间 : 0.161797s [ 吞吐率:6.18req/s ] 内存消耗:4,866.81kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c61a10d170f756a701cbffe336acc9e0
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001252s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001768s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000812s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000706s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001714s ]
  6. SELECT * FROM `set` [ RunTime:0.000627s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001841s ]
  8. SELECT * FROM `article` WHERE `id` = 553085 LIMIT 1 [ RunTime:0.001602s ]
  9. UPDATE `article` SET `lasttime` = 1776891187 WHERE `id` = 553085 [ RunTime:0.002329s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000609s ]
  11. SELECT * FROM `article` WHERE `id` < 553085 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001047s ]
  12. SELECT * FROM `article` WHERE `id` > 553085 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001112s ]
  13. SELECT * FROM `article` WHERE `id` < 553085 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006175s ]
  14. SELECT * FROM `article` WHERE `id` < 553085 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006047s ]
  15. SELECT * FROM `article` WHERE `id` < 553085 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004138s ]
0.165307s