高频量化回测系统:从tick数据到真实撮合引擎
简介本资源是一份面向量化交易初学者与进阶开发者的Python实战指南聚焦高频交易策略的完整回测系统搭建覆盖从环境配置、数据获取、策略设计到绩效评估与实盘模拟的全链路。文档结构严谨含11大章节共142页系统讲解双均线策略实现、事件驱动框架构建、订单撮合引擎开发、夏普/索提诺比率计算、遗传算法参数优化及动量策略实战等核心内容支持PDF阅读器目录跳转与左侧大纲导航便于按模块精读与复现。资源为单文件PDF格式大小5.31MB轻量易载适合作为学习笔记、项目参考或教学辅助材料。目前已有319人学习下载内容文字、图表、代码块与目录均显示正常无乱码或错位可直接用于策略开发实践与知识体系构建。1. 为什么高频策略回测系统不能只靠backtrader一行cerebro.run()就交差某开发者在实盘前用 backtrader 跑通了一个双均线交叉策略回测年化收益 23%最大回撤 8%信心满满接入实盘接口——结果首日滑点吃掉 1.7% 收益订单部分未成交实际盈亏为 -0.4%。这不是玄学是高频场景下「回测失真」的典型翻车现场tick 级数据缺失、订单簿动态模拟缺位、交易所撮合逻辑被简化成“立即成交”连最基础的限价单排队机制都没建模。本篇讲的不是“用 Python 做个能画图的回测器”而是从零搭建一个能逼近真实交易环境的高频策略回测系统它必须支持逐笔成交tick与 Level-2 行情十档买卖盘口双模式驱动内置可配置的撮合引擎按价格优先、时间优先规则模拟交易所行为并强制暴露滑点、延迟、订单拒绝率等关键失真指标。适合已掌握 pandas/numpy 基础、正从教学级策略转向实盘验证的量化从业者——你不需要懂 C 写内核但得清楚每一行.run()背后系统到底替你“猜”了什么、又藏了多少坑。2. 选型依据为什么放弃zipline/backtrader而用vectorbt 自研撮合层高频回测不是“把策略逻辑搬进框架”而是先定义交易世界的物理规则再让策略在这个世界里运行。主流框架在设计之初就做了取舍backtrader以 OHLC 框架为核心tick 级支持需重写DataFeed且无原生订单簿zipline依赖pandas_datareader实时行情对接弱撮合仅支持市价单与简单限价单二者均未暴露“订单在队列中的等待时间”“因流动性不足导致的成交比例”等高频核心变量。我们最终采用vectorbt作为向量化策略引擎 自研 Python 撮合模块的组合原因明确vectorbt原生支持 tick 级数据输入pd.DataFramewithdatetimeindex所有指标计算向量化避免 for-loop 性能瓶颈其Portfolio.from_signals()接口允许传入自定义slippage_func和fees_func为滑点与手续费建模留出钩子更关键的是它不封装撮合逻辑——你传入的entries/exits只是“信号”真正“下单→排队→撮合→成交”由你控制这正是高频回测不可妥协的透明性。提示不要被vectorbt文档里“支持多资产、多时间框架”等描述带偏。高频回测的核心矛盾从来不是“能不能跑多个股票”而是“同一毫秒内你的限价买单能否抢在对手方撤单前进入队列”。选型必须服务于这个单一目标。2.1 构建最小可行行情数据结构Tick 与 OrderBook 的内存表示高频回测的数据输入不是 CSV 文件而是带严格时序约束的内存对象流。我们定义两个核心类from dataclasses import dataclass from typing import List, Tuple dataclass class Tick: timestamp: pd.Timestamp price: float volume: int side: str # buy or sell dataclass class OrderBook: timestamp: pd.Timestamp bids: List[Tuple[float, int]] # [(price, size), ...] sorted descending asks: List[Tuple[float, int]] # [(price, size), ...] sorted ascendingTick表示一笔成交交易所公告的“最后一笔成交”用于验证策略信号是否触发如价格突破布林带上轨OrderBook表示某一时刻的十档盘口快照用于执行限价单撮合如挂 10.05 买 100 手需检查卖一价是否 ≤ 10.05。二者必须共享同一timestamp且OrderBook更新频率 ≥Tick频率否则无法解释“为何挂单未成交”。实践中我们从交易所 API 获取的原始数据经清洗后统一转为pd.DataFrame索引为pd.DatetimeIndex列包含[bid_price_1, bid_size_1, ask_price_1, ask_size_1, ..., last_price, last_volume]。后续所有计算均基于此 DataFrame 进行向量化操作避免逐行遍历。2.2 用vectorbt实现信号生成避开 OHLC 陷阱的向量化写法高频策略常依赖微观结构指标如订单簿不平衡度、价差跳跃、成交量脉冲这些指标需在 tick 或 orderbook 级别计算。若强行用 OHLC 聚合如 1s K线会丢失关键瞬态信息。以下代码演示如何直接在原始 tick 数据上计算“买卖盘口深度比”并生成信号import vectorbt as vbt import numpy as np import pandas as pd # 假设 df 是已加载的行情 DataFrame含列bid_price_1, bid_size_1, ask_price_1, ask_size_1 # 计算 bid-ask depth ratio: sum(bid_sizes) / sum(ask_sizes) over top 3 levels bid_depth df[[bid_size_1, bid_size_2, bid_size_3]].sum(axis1) ask_depth df[[ask_size_1, ask_size_2, ask_size_3]].sum(axis1) depth_ratio bid_depth / ask_depth # 生成信号当深度比 1.5 且价格较前一tick上涨时做多 entries (depth_ratio 1.5) (df[last_price] df[last_price].shift(1)) exits (depth_ratio 0.7) | (df[last_price] df[last_price].shift(1)) # 转为 vectorbt 格式True/False Series with DatetimeIndex entries_vbt vbt.SignalFactory.from_choice_func( entries.astype(bool), exit_funclambda x: exits.astype(bool) ).create()关键点entries和exits是与原始df.index对齐的布尔Series非 OHLC 时间戳vbt.SignalFactory.from_choice_func确保信号生成完全向量化无 Python 循环此写法可直接复用于实盘信号生成模块消除“回测用一套逻辑、实盘换一套”的割裂。2.3 注入自定义撮合逻辑让vectorbt.Portfolio知道“订单怎么成交”vectorbt的Portfolio.from_signals()默认使用simple模式信号发出即按当前last_price成交忽略盘口、滑点、延迟。我们必须替换其order_func参数注入真实撮合逻辑def custom_order_func( portfolio, i, # 当前索引位置 size, # 订单手数正为买负为卖 price, # 信号生成时的参考价如 last_price slippage, # 预设滑点率如 0.001 表示 0.1% **kwargs ): # 1. 获取当前时刻的 OrderBook 快照 ob get_orderbook_at_idx(i) # 自定义函数返回 OrderBook 对象 # 2. 若为买单查找最优卖价ask_price_1 if size 0: best_price ob.asks[0][0] if ob.asks else price # 滑点实际成交价 best_price * (1 slippage) —— 买单向上滑 exec_price best_price * (1 slippage) # 检查是否满足限价条件若策略挂限价单此处需校验 exec_price limit_price else: best_price ob.bids[0][0] if ob.bids else price exec_price best_price * (1 - slippage) # 卖单向下滑 # 3. 返回实际成交价格与数量此处简化为全部成交 return exec_price, abs(size) # 构建 Portfolio 时传入 portfolio vbt.Portfolio.from_signals( df[last_price], entries, exits, sizenp.inf, # 使用资金管理非固定手数 init_cash100000, fees0.0003, # 万三手续费 slippage0.001, # 千一滑点 order_funccustom_order_func # 关键注入自定义逻辑 )order_func在每个信号触发时被调用接收当前索引i可据此查询对应时刻的OrderBookexec_price计算显式体现滑点方向买单向上、卖单向下而非简单加减固定值此函数是高频回测的“心脏”——所有关于流动性、排队、撤单的扩展都从此处切入。3. 撮合引擎实现按价格优先、时间优先规则模拟交易所行为高频回测的可信度取决于撮合引擎对真实交易所规则的还原精度。A股、期货、加密货币交易所虽细节不同但核心撮合逻辑一致价格优先 → 同价时间优先 → 逐笔匹配。我们不追求 100% 复刻上交所内核但必须覆盖三个不可省略的环节订单簿维护、限价单排队、市价单即时成交。3.1 订单簿动态更新用SortedDict维护价格档位订单簿不是静态快照而是随每笔新订单、撤单、成交持续演化的状态机。我们用sortedcontainers.SortedDict非dict存储每个价格档位的累计挂单量确保价格档自动排序from sortedcontainers import SortedDict class OrderBookEngine: def __init__(self): self.bids SortedDict(lambda x: -x) # 降序高价在前 self.asks SortedDict() # 升序低价在前 def add_order(self, price: float, size: int, side: str): if side buy: self.bids[price] self.bids.get(price, 0) size else: self.asks[price] self.asks.get(price, 0) size def cancel_order(self, price: float, size: int, side: str): if side buy and price in self.bids: self.bids[price] max(0, self.bids[price] - size) if self.bids[price] 0: del self.bids[price] elif side sell and price in self.asks: self.asks[price] max(0, self.asks[price] - size) if self.asks[price] 0: del self.asks[price]SortedDict的 key 为价格value 为该档位总挂单量bids使用lambda x: -x实现降序保证bids.peekitem(0)返回最高买价asks默认升序asks.peekitem(0)返回最低卖价cancel_order支持部分撤单如挂 100 手后撤 30 手这是高频策略中常见的“冰山订单”行为。3.2 限价单撮合模拟“挂单排队”与“被动成交”限价单如“以 10.05 元买入 100 手”不立即成交而是进入对应档位排队。当反向市价单或更优限价单到来时才触发被动成交。以下是撮合核心逻辑def match_limit_order(self, price: float, size: int, side: str) - float: 尝试以指定价格挂单返回实际成交数量0 表示未成交 if side buy: # 买单寻找卖一价 price 的档位 matched 0 for ask_price, ask_size in self.asks.items(): if ask_price price: trade_size min(size - matched, ask_size) matched trade_size self.asks[ask_price] - trade_size if self.asks[ask_price] 0: del self.asks[ask_price] else: break # 价格不满足停止匹配 return matched else: # 卖单寻找买一价 price 的档位 matched 0 for bid_price, bid_size in self.bids.items(): if bid_price price: trade_size min(size - matched, bid_size) matched trade_size self.bids[bid_price] - trade_size if self.bids[bid_price] 0: del self.bids[bid_price] else: break return matched此函数返回实际成交数量而非布尔值——这是高频策略评估“订单成交率”的直接依据for循环按价格优先顺序遍历break保证不跨档匹配如买单不匹配卖二价若matched 0说明订单进入队列需记录到self.bids或self.asks。3.3 市价单撮合按最优价格立即成交直到数量满足市价单如“立即买入 100 手”不指定价格以当前最优档位价格成交直至数量满足或档位耗尽def match_market_order(self, size: int, side: str) - List[Tuple[float, int]]: 执行市价单返回 [(成交价, 成交量), ...] trades [] remaining size if side buy: # 从卖一价开始逐档吃单 for ask_price, ask_size in list(self.asks.items()): if remaining 0: break trade_size min(remaining, ask_size) trades.append((ask_price, trade_size)) remaining - trade_size self.asks[ask_price] - trade_size if self.asks[ask_price] 0: del self.asks[ask_price] else: # 从买一价开始逐档吃单 for bid_price, bid_size in list(self.bids.items()): if remaining 0: break trade_size min(remaining, bid_size) trades.append((bid_price, trade_size)) remaining - trade_size self.bids[bid_price] - trade_size if self.bids[bid_price] 0: del self.bids[bid_price] return trades返回List[Tuple[float, int]]便于统计加权平均成交价np.average(prices, weightssizes)list(self.asks.items())避免遍历时修改字典报错remaining为 0 时提前退出提升性能。4. 高频回测必踩的 5 个坑现象、原因与血泪解法高频回测的失败90% 不是策略问题而是环境失真。以下是我在模拟项目 X 中反复验证的 5 个致命坑每一条都附带可复现的检测方法和修复代码。4.1 现象回测收益远高于实盘但max_drawdown数值合理原因使用last_price作为成交价忽略盘口价差spread。例如卖一价 10.00、买一价 10.01策略信号在 10.005 触发回测按 10.005 成交实盘只能按 10.01 卖出单笔损失 0.5 个最小变动单位。解法强制所有成交价取best_bid卖或best_ask买并在custom_order_func中加入 spread 检查# 在 custom_order_func 中添加 best_bid ob.bids.peekitem(0)[0] if ob.bids else price best_ask ob.asks.peekitem(0)[0] if ob.asks else price spread best_ask - best_bid # 若策略为卖出信号实际成交价不能优于 best_bid if size 0: exec_price min(price, best_bid) # 不能比买一价更高4.2 现象同一策略在不同起始时间回测收益波动极大±15%原因未对齐行情与信号的时间戳。vectorbt默认按df.index对齐但若行情数据有重复时间戳如交易所发送的重复 tickpandas会自动去重或聚合导致信号错位。解法在数据加载后强制去重并检查# 加载数据后立即执行 print(f原始数据长度: {len(df)}) df df[~df.index.duplicated(keepfirst)] # 保留首次出现 print(f去重后长度: {len(df)}) if len(df) len(original_df) * 0.99: raise ValueError(检测到大量重复时间戳请检查数据源)4.3 现象portfolio.stats()显示win_rate65%但实盘连续 10 笔亏损原因win_rate计算基于PnL 0但高频策略中微小盈利如 0.1 元/手被手续费吞噬实际为亏损。回测未将手续费与滑点耦合计算。解法在custom_order_func中统一计算净收益# 在 custom_order_func 返回前 net_pnl (exec_price - entry_price) * size * contract_multiplier - fees - slippage_cost if net_pnl 0: # 记录为盈利 pass4.4 现象订单部分成交但回测显示“全部成交”原因vectorbt的size参数默认为整数手数未考虑最小交易单位如期货 1 手10 吨但订单可拆分为 0.5 手。当流动性不足时应允许部分成交。解法改用size_typepercent并在custom_order_func中返回实际成交比例# 构建 Portfolio 时 portfolio vbt.Portfolio.from_signals( ..., size0.1, # 使用资金的 10% size_typepercent, # ... ) # 在 custom_order_func 中返回 (exec_price, actual_size_ratio) return exec_price, min(1.0, matched_size / requested_size)4.5 现象回测速度极慢1 小时/天无法迭代原因在custom_order_func中频繁调用get_orderbook_at_idx(i)而该函数内部进行df.iloc[i]查找O(n) 复杂度。解法预加载所有 OrderBook 到内存列表用索引直接访问# 预处理 ob_list [] for i in range(len(df)): ob OrderBook( timestampdf.index[i], bids[(df.iloc[i][fbid_price_{j}], df.iloc[i][fbid_size_{j}]) for j in range(1, 11)], asks[(df.iloc[i][fask_price_{j}], df.iloc[i][fask_size_{j}]) for j in range(1, 11)] ) ob_list.append(ob) # 在 custom_order_func 中 ob ob_list[i] # O(1) 访问5. 验证回测可信度用“反事实分析”揪出隐藏失真回测报告里的sharpe_ratio和profit_factor是结果不是证据。真正决定你敢不敢实盘的是能否回答这 3 个反事实问题如果我把滑点放大 2 倍收益是否归零如果订单延迟 10ms胜率下降多少如果移除盘口数据仅用 last_price策略是否依然有效这些必须量化而非定性说“应该影响不大”。5.1 滑点敏感性测试绘制收益-滑点曲线我们固定其他参数将滑点率从0.00010.01%扫到0.0050.5%记录每档的total_returnslippage_rates np.linspace(0.0001, 0.005, 20) returns [] for slippage in slippage_rates: portfolio vbt.Portfolio.from_signals( ..., slippageslippage, order_funccustom_order_func ) returns.append(portfolio.total_return()) # 绘制 plt.plot(slippage_rates * 100, returns, o-) plt.xlabel(Slippage (%)) plt.ylabel(Total Return) plt.title(Slippage Sensitivity: Strategy Robustness Check) plt.grid(True) plt.show()合格标准曲线在0.0010.1%附近保持平缓斜率绝对值 5若在0.0005处已开始陡降说明策略过度依赖“零滑点幻想”应淘汰。5.2 延迟冲击测试注入可控网络延迟高频策略对延迟极度敏感。我们在custom_order_func中模拟订单从发出到交易所接收的时间差假设为 5ms、10ms、20msdef custom_order_func_with_delay(..., delay_ms0): # 模拟延迟找到延迟后时刻的 OrderBook target_ts df.index[i] pd.Timedelta(delay_ms, unitms) # 使用 .asof() 获取 target_ts 之前最后一个有效快照 delayed_i df.index.asof(target_ts) ob ob_list[delayed_i] # 后续撮合逻辑不变运行delay_ms为[0, 5, 10, 20]四组对比win_rate和avg_win合格标准delay_ms10时win_rate下降 3%avg_win下降 10%否则需重构策略逻辑如改用盘口预测替代价格突破。5.3 数据降级测试验证策略是否真的需要 Level-2这是最狠的验证——把你的豪华订单簿数据砍掉只留last_price和last_volume看策略是否还活着# 构造降级数据仅保留 last_price其他列置 NaN df_degraded df[[last_price]].copy() df_degraded[last_volume] df[last_volume] # 重跑回测使用 same custom_order_func but fallback to last_price when no OB portfolio_degraded vbt.Portfolio.from_signals( df_degraded[last_price], entries, exits, ... )合格标准降级后profit_factor≥ 1.2 且max_drawdown≤ 原版 1.5 倍若降级后收益归零说明策略本质是“盘口套利”而非价格趋势需警惕监管风险与流动性枯竭。我坚持在每次策略迭代前跑完这三项测试。它不增加代码行数但能帮你避开 80% 的实盘翻车。曾经有个策略在vectorbt默认回测中年化 42%但滑点扫到0.0015时收益变负——当时没停硬上了实盘三天后止损离场。那之后我把“滑点敏感性曲线”设为回测报告的第一页。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

随机路面生成与功率谱密度对比:ISO 8608到Welch验证

随机路面生成与功率谱密度对比:ISO 8608到Welch验证

简介:面向整车振动仿真与路面激励重构的MATLAB资源包,主要适用于二自由度单轮、半车及七自由度整车模型的路面输入搭建,帮助开展随机路面不平度下的动力学响应分析。包体约30KB,共2个文件,含1个slx仿真模型与1个m脚本&…

2026/10/11 14:43:42 阅读更多 →
为什么 8GB 能打赢 54GB?Underdog-Saluki-27B-1.0 量化模型 9 大基准测试全解析

为什么 8GB 能打赢 54GB?Underdog-Saluki-27B-1.0 量化模型 9 大基准测试全解析

【免费下载链接】Underdog-Saluki-27B-1.0 项目地址: https://ai.gitcode.com/hf_mirrors/ConwayResearch/Underdog-Saluki-27B-1.0 点击查看 免费下载 Underdog-Saluki-27B-1.0 是一款基于 Qwen3.8-27B 的 2-bit 量化 GGUF 模型,体积仅 7.89 GB&#x…

2026/10/11 14:42:42 阅读更多 →
大众点评案例分析:从本地生活电商到商业模式拆解

大众点评案例分析:从本地生活电商到商业模式拆解

简介:大众点评案例分析电子商务.pptx是一份围绕大众点评网展开的电子商务案例教学PPT,适合电子商务、市场营销及商业分析相关课程的学生和教师使用。内容从公司简介、发展历程入手,依次梳理产品服务、商业模式、盈利模式、SWOT分析及总结建议…

2026/10/11 14:42:41 阅读更多 →

最新新闻

虚拟现实数据手套汇总一览:TaoToken 统一 Key 接入 VR 开发数据链路

虚拟现实数据手套汇总一览:TaoToken 统一 Key 接入 VR 开发数据链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 15:32:07 阅读更多 →
MFC中用GDI+绘制抗锯齿贝塞尔曲线的完整实现

MFC中用GDI+绘制抗锯齿贝塞尔曲线的完整实现

简介:本资源是一个基于MFC框架实现的Bezier曲线交互式绘制程序,面向C初学者、Windows桌面开发入门者及计算机图形学实践学习者,解决二维参数曲线建模与GDI绘图集成的核心问题。项目完整呈现了四点控制Bezier曲线的数学原理应用、鼠标事件驱动…

2026/10/11 15:32:07 阅读更多 →
2026年全球AI服务器液冷歧管市场深度分析:规模、竞争格局与盲插式模块化演进趋势

2026年全球AI服务器液冷歧管市场深度分析:规模、竞争格局与盲插式模块化演进趋势

一、市场规模与核心驱动力据GIR (Global Info Research) 调研统计,按收入计,2025年全球AI服务器液冷歧管市场规模约为7.34亿美元,预计至2032年将增长至22.14亿美元,2026至2032年间年均复合增长率(CAGR)为16…

2026/10/11 15:32:07 阅读更多 →
HaGRID数据集实战:手势识别从标注转换到YOLOv8训练

HaGRID数据集实战:手势识别从标注转换到YOLOv8训练

简介:HaGRID 手势识别图像数据集是一份面向计算机视觉研究者与深度学习开发者的数据资源,覆盖常见手势类别,可用于手势分类、交互应用等视觉任务的模型训练与评估。压缩包内共 55 个文件,以 JSON 标注文件为主,并含一个…

2026/10/11 15:32:07 阅读更多 →
U-Net息肉分割边缘翻车?用SAM提示框把Dice拉高3个点

U-Net息肉分割边缘翻车?用SAM提示框把Dice拉高3个点

简介:本资源面向医学图像分割方向的研究者与开发者,提供一套在Unet基础上引入SAM提示框机制的息肉肿瘤语义分割完整方案,用于提升肿瘤边界识别精度。压缩包共约2000个文件,以1992张jpeg医学图像及分割标注为主,另含5个…

2026/10/11 15:32:07 阅读更多 →
一带一路经济走廊路线shp数据实战:从投影变换到缓冲分析

一带一路经济走廊路线shp数据实战:从投影变换到缓冲分析

简介:这份「一带一路经济走廊路线shp图」数据集面向地理信息、区域经济与交通规划方向的研究者和学生,提供中蒙俄、中巴、新亚欧大陆桥等经济走廊的空间矢量数据,可用于经济走廊分析、交通网络规划、基础设施分布研究及国际合作模式探讨等场景…

2026/10/11 15:31:07 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →