输入/搜索内容
入门
欢迎使用发明者量化交易平台
快速开始
密钥安全性
平台基础
账号与计费
实盘计费与充值
子账号
交易所
通用协议
本地凭据文件
交易所特殊说明
证券与期货
加密货币
托管者
策略库
实盘
编写策略
开发工具
回测系统
进阶专题
数据与研究
对外接口

平台开源了JavaScript和Python的本地回测引擎,与云端回测使用相同的引擎核心和历史数据(从平台的数据服务器下载),可以在自己的电脑上快速回测JavaScript、Python策略:

Python

安装(需要Python 3和pip):

bash
pip install https://github.com/fmzquant/backtest_python/archive/master.zip pip install pandas matplotlib # 仅在使用 Join(True)、Show() 时需要

第一次使用时会从数据服务器下载对应系统的引擎文件,之后除了历史数据不再联网。策略文件就是普通的FMZ策略,加上开头的backtest配置注释(格式见回测配置与保存)和几行引擎调用代码:

python
'''backtest start: 2026-09-01 00:00:00 end: 2026-09-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Binance","currency":"BTC_USDT","balance":10000,"stocks":0}] ''' import json from fmz import * task = VCtx(__doc__) # 按上方注释中的配置初始化回测引擎,exchange、Log、TA 等成为全局对象 # 以下为待测试的策略代码,可以从平台直接复制 def main(): Log(exchange.GetAccount()) while True: r = exchange.GetRecords() LogStatus(_D(), r[-1]["Close"]) Sleep(60 * 60 * 1000) try: main() except EOFError: # 虚拟时钟到达结束时间时,引擎抛出 EOFError pass result = json.loads(task.Join(False)) # 原始回测结果(JSON) print(result["LogsCount"], result["Elapsed"] / 1e6) # task.Show() # 或者显示收益图表(需要 matplotlib)

用python strategy.py运行。task.Join(False)返回原始回测结果的JSON,task.Join(True)返回收益数据的pandas表格,task.Show()画出收益曲线。

JavaScript

bash
npm install git+https://github.com/fmzquant/backtest_javascript.git
javascript
var fmz = require("fmz") var task = fmz.VCtx({ start: "2026-09-01 00:00:00", end: "2026-09-15 00:00:00", period: "1h", basePeriod: "15m", exchanges: [{eid: "Binance", currency: "BTC_USDT", balance: 10000, stocks: 0}] }) // 从这里开始 exchange、Log、TA 等成为全局对象,粘贴策略代码后调用 main() function main() { Log(exchange.GetAccount()) while (true) { var r = exchange.GetRecords() LogStatus(_D(), r[r.length - 1].Close) Sleep(60 * 60 * 1000) } } try { main() } catch (e) { // 虚拟时钟到达结束时间时,引擎抛出 "EOF" } var result = JSON.parse(task.Join()) // 与 Python 引擎 Join(False) 的结果相同 console.log(result.LogsCount)

与云端回测的区别

  • 只支持JavaScript和Python策略,不会自动加载模板:策略引用的模板代码需要粘贴到文件中,因此依赖交易类库的PINE、My语言策略不能在本地回测。
  • 策略参数不会自动注入,需要在代码中定义为全局变量。
  • 注释中的start、end按本机时区解析;网络延迟固定为200毫秒,不支持滑点和实盘级Tick模式。
  • 收益、回撤和收益曲线同样只在策略调用LogProfit()时才有。

AI回测

在AI助手中可以直接让它回测:AI助手通过MCP工具run_backtest发起云端回测,用get_backtest读取收益、回撤、错误日志等结果,见AI接入。也可以让AI助手在本机安装本地回测引擎,快速修改、回测,再用云端回测确认一次。