本地回测引擎
平台开源了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助手在本机安装本地回测引擎,快速修改、回测,再用云端回测确认一次。