导入指南
如何将 NinjaTrader 交易导入 Fillbook
将 NinjaTrader 交易历史导入 Fillbook 有两种真实可行的方式:一种是实时自动同步插件,在成交发生时即刻发送;另一种是手动 CSV 导出,用于补录插件启用之前的历史记录。本指南将介绍这两种方式,以及所需字段、时区、佣金、重复记录处理,以及数据未正确到达时该怎么办等具体细节。
两种受支持的方式
实时自动同步(在 NinjaTrader 中安装的一个 NinjaScript 插件)是面向未来的方式——它只会报告插件激活之后发生的成交,不包含您过去的历史记录。CSV 导出是补录方式——用于将插件启用之前的交易带入 Fillbook。大多数交易者会两者并用:先用 CSV 导入一次历史记录,之后用插件处理后续的一切。
方式一:实时自动同步(NinjaScript 插件)
此插件会直接安装在您的 NinjaTrader 8 平台内部。它会监听您自己账户上的成交事件,并在事件发生的瞬间将其发送给 Fillbook——它不能下单、修改或取消订单,也绝不会接触您的经纪商登录信息。
- 在 Fillbook 中,进入“导入 → NinjaTrader 自动同步”并生成一个同步令牌。
- 下载插件文件(FillbookSync.cs)并用文本编辑器打开。将您的令牌粘贴到顶部的那一行配置中——Fillbook 的地址已经预先填好。
- 在 NinjaTrader 8 中:Tools → Import → NinjaScript Add-On…,然后选择编辑好的文件。NinjaTrader 会自动编译它。
- 重启 NinjaTrader(或使用 Tools → Edit NinjaScript → Compile)。之后插件会在后台静默运行——无需打开任何窗口,也无需为每笔交易点击任何按钮。
需要明确说明:该插件是根据 NinjaTrader 8 官方文档中的插件 API 编写的,但在撰写本指南时尚未在真实的 NinjaTrader 安装环境中独立验证过。如果 NinjaScript 编译器在导入时报错,通常只需一行代码即可修复(属性/事件名称在不同 NinjaTrader 版本之间偶尔会略有变化)——Fillbook 自己在该文件中的源码注释也这样说明。
方式二:手动 CSV 导出(用于插件启用之前的历史记录,或如果您不想安装插件)
NinjaTrader 的 Control Center 可以直接将您的交易历史导出为 CSV 文件,Fillbook 的导入工具会通过自动列映射读取该文件。
- 在 NinjaTrader 的 Control Center 中,打开 Performance 标签页。
- 在结果表格上右键点击,选择“To Excel (CSV)”。
- 在 Fillbook 中,进入“导入 → CSV”,从平台列表中选择 NinjaTrader(如果自动检测的映射需要修正,也可手动映射列),然后确认。
所需字段与格式
Fillbook 的导入工具在每一行至少需要日期、代码、方向、数量、进场价格和出场价格;佣金/费用以及平仓日期为可选项,但填写后会提高准确性。NinjaTrader 的 Performance 标签页导出使用“Market pos.”表示方向,使用“Entry price”/“Exit price”作为字段名——Fillbook 的列映射会自动识别这些表头,但在确认前请务必检查映射界面,因为不同的 NinjaTrader 版本或自定义的表格布局可能会重命名某一列。
时区
实时插件使用您 NinjaTrader 会话自身的时钟,以 ISO 8601 格式发送每笔成交的时间戳——实际上,这取决于您交易电脑操作系统所设置的时区。在依赖按时段划分的分析数据之前,请确认该时区确实是您想要的时区,因为如果电脑系统时区设置错误,每笔成交都会按相同的偏移量被错误记录。CSV 导出所携带的时间戳格式则遵循 NinjaTrader 表格所显示的格式,同样遵循相同的系统时区设置。
佣金
实时插件会直接从 NinjaTrader 自身的 Execution.Commission 字段中,逐笔读取并报告每次成交的佣金金额。CSV 导出中的佣金列(如果您的 Performance 标签页布局包含该列)也会以同样方式映射到 Fillbook 的费用字段。无论采用哪种方式,第一次使用时都建议将若干笔已导入的交易与您自己的对账单进行核对——如果经纪商的导出布局与 NinjaTrader 的默认布局不同,期货佣金很容易被错误映射到错误的列。
重复记录处理
Fillbook 会根据每笔已导入交易自身的成交数据为其生成唯一标识,因此重复运行同一份 CSV 导出文件会进行更新而不会重复计入同一笔交易——如果您不确定 Fillbook 中已经有哪些数据,重新导出并重新导入是安全的。实时插件只会报告成交发生时真正的新成交,因此重启后不会重新发送历史记录。唯一需要留意的情况是:如果对某个日期范围运行 CSV 导入,而该范围与实时插件已经实时覆盖的时段重叠,根据每笔交易成交数据的具体匹配情况,有时可能需要在您的交易表中手动核对,而不能自动保证不会出现重复或遗漏——如有疑问,请仅对严格早于启用插件之前的时段使用 CSV。
核对导入数量与盈亏
导入完成后,请将 Fillbook 中该导入日期范围内的交易数量和净盈亏,与 NinjaTrader 自身 Performance 标签页中同一范围的数据进行比较。数量不一致通常意味着两个视图之间的筛选条件(日期范围、账户或合约)不同,而非遗漏了某笔交易;盈亏不一致则最常见的原因是某笔佣金或费用没有映射到正确的列——在怀疑存在计算错误之前,请先检查导入向导中该具体字段的列映射界面。
常见问题与恢复方法
如果实时插件完全没有同步任何数据,请先确认您确实已将配置行中的占位令牌替换为真实令牌——在此之前,插件会刻意不做任何事情。如果 NinjaTrader 的编译器拒绝该文件,请复制完整的错误信息;这几乎总是不同 NinjaTrader 版本之间细微的 API 名称差异,而不是根本性的不兼容问题。如果 CSV 导入报告写入的行数少于文件中的行数,请查看导入向导的摘要以了解被跳过的行——某个必填字段为空或无法读取(例如合并的表头单元格、意外的货币符号)会导致该行被跳过,而不是使用猜测值导入。
让 Fillbook 从这里开始自动跟踪您的 NinjaTrader 历史记录
交易数据进入 Fillbook 后,R 值、Edge Score 以及基于规则的行为检测都会自动运行——无需再维护单独的电子表格。
开始免费试用 →常见问题
只有当您既想要插件启用之前的历史记录,又想要持续的实时同步时才需要。如果您是全新开始,仅使用插件即可满足今后的需求;只需使用一次 CSV 导出来补录更早的历史记录。
不会——它只会报告插件激活之后发生的成交。过去的历史记录需要通过 CSV 导出方式来处理。
请复制完整的编译器错误信息。这通常只是不同 NinjaTrader 8 版本之间某个属性或事件名称的细微变化所导致的一行代码修复,并不代表整个方案存在问题。
插件方面是适用的(它会读取您 NinjaTrader 安装中任何可见账户的成交记录,无论背后是哪家公司或数据源),CSV 导出方式同样适用。
查看完整的 NinjaTrader 交易日志概览,参见 NinjaTrader 交易日志 — Fillbook.还没准备好连接?先用以下工具手动记录交易: 免费期货交易日志模板(电子表格)— Fillbook.Using Tradovate instead? 如何将Tradovate交易导入Fillbook — Fillbook.Confused about session dates vs. calendar dates? 期货交易时段日期、时区与夏令时 — Fillbook.
NinjaTrader® 是 NinjaTrader Group, LLC 的注册商标。Fillbook 是一款独立产品,与 NinjaTrader 之间不存在关联、认可或赞助关系。