在 SharpTrader 中用真实 Tick 优化您自己的交易机器人 16 10 月, 2026 – Posted in: 外汇交易, 套利软件
BJF TRADING GROUP · SHARPTRADER OPTIMIZER
您自己的机器人,我们的逐笔 Tick 级优化器
SharpTrader Optimizer 不再只支持 BJF 内置策略。您可以加载自己为外汇经纪商或加密货币交易所编写的交易机器人,并在真实历史 Tick 数据上进行回测——使用您经纪商以毫秒计的订单执行时间、逐笔变化的点差以及多核参数网格。
本文内容
有哪些变化:您的策略,我们的优化器
SharpTrader Optimizer 最初是为套利而打造的——在套利中,策略的成败取决于几毫秒和零点几个点。此前,它只能回测和调优 BJF 随 SharpTrader 提供的策略:Latency Arbitrage、DominionForce、Phantom Drift、Lock 系列和 Hedge。而这些特性对任何自动化策略都同样重要,无论是趋势跟踪、突破、均值回归、交易时段策略还是剥头皮。因此,我们开放了这个引擎。
| 以前 | 现在 | |
|---|---|---|
| 可优化的策略 | 仅限 BJF 内置策略 | 内置策略以及您自己的 SharpTrader 机器人 |
| 模式 | 回测、网格优化 | 回测、网格优化、前向分析(walk-forward)——同样适用于您的机器人 |
| 您可以控制的内容 | 内置策略的参数 | 您的机器人开放的任何输入参数:止损、止盈、指标周期、过滤条件、交易时段 |
您的机器人开放其输入参数,您勾选需要优化的参数并设置最小值 / 步长 / 最大值,Optimizer 便会运行所有组合,并按 PnL、回撤或您自定义的评分对结果进行排序。
机器人在哪里编写:SharpTrader 机器人编辑器
SharpTrader 机器人使用 C# 在内置的机器人编辑器中编写。新机器人从带有事件处理函数的模板开始:OnInit、OnTick、OnPositionOpened、OnPositionClosed、OnOrderStatusUpdate。指标可通过内置 API 调用,例如 indicators.iObv(0, Symbol, Period, 0)。Build 用于编译机器人,Import 用于加载现成的机器人文件,例如由外部服务生成或转换的文件。

完整的 API 参考请见 SharpTrader 机器人编程文档(英文):SharpTraderBot 命名空间,包括 Bot 基类、Tick、STOrder 和 STPosition、各事件参数类、IIndicators 和 ITicker 接口以及所有枚举(订单方向、类型和状态、时间周期、指标模式)。
面向加密货币交易所的机器人:同样的 C# 代码,内置 WebSocket 连接器
SharpTrader 机器人并不局限于外汇经纪商。SharpTrader 自带连接 50 多家加密货币交易所的内置连接器,包括 Binance 和 Bybit,并通过快速的 WebSocket 数据流接收行情,而不是缓慢的 REST 轮询。您的机器人无需了解每家交易所的 API:它在 OnTick 中接收 Tick,并通过同一个 SharpTrader 接口发送订单,而连接器负责身份验证、订单路由以及各交易所的所有特有细节。
- 一个机器人,多个交易场所。同一套 C# 逻辑既可以在外汇经纪商交易,也可以在加密货币交易所交易,现货或期货均可。
- 快速行情数据。WebSocket 数据流会实时推送每一次价格更新,这正是剥头皮、突破、动量和价差策略所需要的。
- 代码中无需处理 API 细节。无需请求签名、速率限制处理或重连逻辑:这些都由连接器完成。
- 先测试,再交易。在 Tick 历史数据上(交易所 Tick 数据可以 CSV 格式导入)以真实的执行时间优化逻辑,然后通过连接器实盘运行。
正因如此,过去不得不为每个交易所 API 单独编写机器人的加密货币交易者,现在可以保留同一套策略,并在不同交易所之间迁移。更多关于平台加密货币方面的内容:SharpTrader 用于加密货币;以及为什么数据流优于轮询,请参阅我们的指南加密货币交易所 API:REST 与 WebSocket。
为什么要在 SharpTrader 而不是标准测试器中测试您的机器人
大多数零售测试器都有三个隐含假设:订单以显示价格即时成交、点差固定、K 线之间的价格变动通过插值生成。每一个假设都会美化结果。三者叠加,正是回测表现出色的策略在实盘账户上亏损的主要原因。
| 决定实盘结果的因素 | 典型零售测试器 | SharpTrader Optimizer |
|---|---|---|
| 价格数据 | K 线,内部 Tick 由插值生成 | 真实历史 Tick(时间戳、bid、ask) |
| 订单执行时间 | 零:即时成交 | 您设定的毫秒值,开仓和平仓分别设置 |
| 滑点 | 无,或猜测的固定值 | 针对每笔订单从 Tick 数据流中推导 |
| 点差 | 固定 | 从每个 Tick 读取 |
| 优化速度 | 通常只用一个 CPU 线程 | 使用全部 CPU 核心,每个核心运行一个组合 |
1. 真实 Tick,而非 K 线插值
每次运行都会回放真实的历史 Tick。没有任何数据被平滑掉,因此止损、止盈和入场都会在真实市场中应当触发的位置触发。您可以使用 BJF Feed 的 Tick 历史数据(伦敦、东京和纽约节点),也可以以 CSV 格式导入您自己的 Tick 数据,包含时间戳、bid 和 ask。
2. 您经纪商的执行时间,以毫秒计
这是大多数测试器根本不具备的部分。您输入在自己经纪商处实际观察到的订单执行时间,例如在快速 VPS 上为 40 毫秒,在典型零售环境下为 150 毫秒。从机器人决定交易的那一刻起,引擎会沿 Tick 数据流向前推进该延迟的单程部分(T/2),并以那一刻真实存在的 bid 或 ask 成交订单。

由此得到的滑点不是猜测出来的,而是从市场中推导出来的:可能为正、为负或为零,完全取决于这几毫秒内价格的实际变动。您可以为开仓和平仓订单设置不同的执行时间,因为许多经纪商处理平仓的速度比开仓更慢。该方法在我们关于回测与真实执行时间之间差距的文章中有详细说明。
3. 每个 Tick 的可变点差
点差直接从 Tick 数据流中读取。当点差在隔夜展期、新闻前后或流动性稀薄时段扩大时,您的机器人会像实盘一样承担它。
4. 多核网格
优化任务分布在所有 CPU 核心上。在一周的 Tick 数据上运行数万个组合的网格,在普通工作站上一夜即可完成,并且在 8–16 核上几乎线性扩展。
5. 显示机器人何时真正盈利的诊断功能
每次回测都包含 24 小时利润分布、按星期和按小时的过滤器、订单持续时间过滤器以及完整的逐笔交易记录。一个整体表现平平的策略,往往会在两三个特定时段盈利,而在其余时段亏损。

一个简单测试,判断您的机器人是否真实可用
用您最好的参数组合运行三次,只改变执行时间:
| 执行时间 | 代表什么 | 如何解读 |
|---|---|---|
| 0 毫秒 | 理论上限 | 仅供参考。切勿在此条件下优化。 |
| 40–60 毫秒 | 靠近经纪商服务器的快速 VPS | 现实中的最佳情况 |
| 120–150 毫秒 | 典型零售连接 | 如果利润在此大幅下降,说明机器人依赖于您可能并不具备的速度 |
如果结果保持稳定,说明这套设置值得进一步推进。接下来用前向分析(walk-forward)进行确认:在一个时间段上优化,在下一个时间段上验证。如果最佳参数在不同时间段之间完全不同,说明机器人存在过拟合。我们的 VPS 指南提供了不同配置下的真实延迟数据。
还没有 SharpTrader 机器人?新服务可以为您生成
并非每位交易者都会编写 C#。一项新服务 Strategy X-Ray 近期已经上线并投入运行,它恰好填补了这一空白。它的三项功能可以自然地衔接在 SharpTrader Optimizer 之前。
通过交易报告分析交易账户
上传交易报告(HTML、CSV 或 XLSX),或以只读权限连接账户,该服务即可生成一份免费的绩效报告:收益、回撤、盈利因子、胜率、资金曲线、月度收益,以及按交易品种、小时和星期的细分。通过只读 API 密钥或交易历史导出,还支持 Binance、Bybit 和 OKX 等主要交易所的加密货币账户。
重建策略并生成机器人
除了统计数据之外,Strategy X-Ray 还会尝试逆向还原交易背后的规则(入场、离场、交易时段、仓位大小),并报告其重建结果与真实交易的吻合程度,包括在预留的一段历史数据上的吻合程度。重建出的算法可以导出为多个平台的源代码,其中包括 C# 编写的 SharpTrader 机器人。对于加密货币账户,主要的导出目标正是 SharpTrader 机器人:SharpTrader 通过其 WebSocket 连接器自行连接交易所,因此您得到的只是交易逻辑,并可以在同一家或另一家交易所运行。
将现有机器人转换为 SharpTrader 版本
如果您已经有为其他流行零售交易终端编写的机器人,该服务的 AI 代码转换器可以将其改写为 SharpTrader 版本,保持相同的逻辑,并解释不同平台之间的差异。编译错误可以粘贴回去,由 AI 进行修复。
完整工作流程

- 获取机器人。使用 SharpTrader Coding Module 自己用 C# 编写,根据账户报告生成,或将其他平台上的现有机器人转换过来。
- 将其加载到 SharpTrader 中(Build 或 Import),并检查它能否在模拟连接上编译和运行。
- 在真实 Tick 上回测,使用您经纪商的真实执行时间和逐笔点差。
- 在网格中优化参数,寻找稳定区域,而不是某个偶然出现的峰值。
- 压力测试:在多个执行时间下测试,并在新的时间段上进行前向验证。
- 谨慎实盘,先用小仓位,使用 SharpTrader Pro 或 SharpTrader Lite,并将实盘成交与回测预测进行比较。
您需要什么
要回测和优化您自己的机器人,您需要三个许可证:
- SharpTrader — Lite 或 Pro;
- Coding Module — 用于在 SharpTrader 中运行自定义 C# 机器人(API 参考,英文);
- SharpTrader Optimizer — 回测与优化引擎。
用市场的方式测试您的机器人
已经拥有 SharpTrader?添加 Coding Module 和 Optimizer 即可,您现有的许可证将继续有效。对某个具体的机器人或平台有疑问?我们的团队会为您提供帮助。
常见问题
我可以优化非套利策略的机器人吗?
可以。这正是本次更新的意义所在。趋势、突破、均值回归、交易时段和剥头皮机器人都能从真实 Tick 和真实的执行时间中受益。
我的机器人可以在加密货币交易所交易吗?
可以。SharpTrader 拥有连接 50 多家加密货币交易所的内置 WebSocket 连接器,因此同一个 C# 机器人无需任何交易所专用的 API 代码,就可以在外汇经纪商或加密货币交易所交易。
SharpTrader 机器人使用什么语言编写?
C#。API 在 SharpTrader 机器人编程文档(英文)中有说明。如果您不会编程,可以借助外部服务生成或转换机器人,将其导入,然后在 SharpTrader 中测试和调整。
我可以使用自己的 Tick 数据吗?
可以。支持包含时间戳、bid 和 ask 的 CSV 文件。若希望在 SharpTrader 中获得最接近实盘交易的结果,建议使用 BJF Feed 的 Tick 历史数据。
好的回测能保证盈利吗?
不能。真实的回测可以消除最常见的错觉(即时成交、固定点差、平滑价格),但市场和经纪商条件会发生变化。请始终进行前向验证,并以小仓位开始实盘。
外汇、差价合约(CFD)和加密资产交易具有较高风险。回测和优化结果均为假设性结果,不保证未来表现。BJF Trading Group 仅提供软件,不提供投资建议。