FMZ在其文章中FMZ 发布 python 本地 回测引擎写的代码缺少很多必要信息

fmz本地回测怎么运行不了
fmz本地回测怎么编写

由于FMZ在其文章中FMZ 发布 python 本地 回测引擎写的代码缺少很多必要信息(其实是删除了一些函数和参数等之后呈现出来的),运行不起来,这对大家学习fmz在IDE中编辑&迭代策略&学习产生了很大的学习阻力,打击了学习信心,影响学习&迭代量化/策略的效率,同时对初学者自我产生了怀疑,完全没必要哈,复制下面的代码你在pycharm中run一下,之后再搜集信息,迭代写的更专业就好了。
其代码缺少很多东西,应该是工程师为了大家能知道基本的结构就删除了一些内容,但是这个例子作为本地部署是第一个例子,很多人蒙13了,找了半天,测试了半天,不能运行,打击太大了,不和你玩了。同时这print不是python3的是python2的导致大家更蒙13了。

task.Join()

       print(task.Join())

默认False,打印出来一堆乱码(其实是一些你账户信息和你fmz获取到的行情等信息),很多初学人就更蒙了,像下面这么改,加个 True

       print(task.Join(True))

这样写打印出来的就规范了,如下

                           PnL(USDT)  Utilization(%)
2025-06-19 00:00:00+08:00        0.0             0.0
2025-06-19 01:00:00+08:00        0.0             0.0
2025-06-19 02:00:00+08:00        0.0             0.0
2025-06-19 03:00:00+08:00        0.0             0.0
2025-06-19 04:00:00+08:00        0.0             0.0
...                              ...             ...
2025-07-10 08:00:00+08:00        0.0             0.0
2025-07-10 09:00:00+08:00        0.0             0.0
2025-07-10 10:00:00+08:00        0.0             0.0
2025-07-10 11:00:00+08:00        0.0             0.0
2025-07-10 12:00:00+08:00        0.0             0.0

代码如下哈,你试试吧

在安装了fmz的那个包再运行,线上没安装fmz包,它也不行啊,你安包再running

# !/usr/local/bin/python
# -*- coding: UTF-8 -*-

"""
backtest
start: 2025-06-19 00:00:00
end: 2025-07-10 12:00:00
period: 15m
exchanges: [{"eid":"Futures_OKX","currency":"BTC_USDT","balance":10000, "stocks":1},{"eid":"Futures_Binance","currency":"BTC_USDT","balance":10000}]
mode: 1
"""

from ccxt import exchanges  # 在这个fmz里没用到ccxt的,单纯为了骗IDE不会报错,本质 exchanges 会在上面 backtest 中的 exchanges 参数中获取
from fmz import *

task = VCtx(__doc__) # initialize backtest engine from __doc__
exchange = exchanges[0] # exchanges[0] exchanges[1] 分别表示参数中的两个 交易所exchange

# ------------------------------ 策略部分开始 --------------------------

print(exchange.GetAccount())     # 调用GetAccount 测试;连接情况 | 简易的 test
print(exchange.GetTicker())

#def adjust_float(v):             # 策略中自定义的函数 | 没用到这个函数,后面增加下单模块可能会用到
#    v = math.floor(v * 10000)
#    return v / 10000

def on_tick():
    # 正确调用方式
    task.g_Log("进入 onTick 函数")

    # 策略逻辑...
    ticker = exchange.GetTicker()
    task.g_Log(f"当前价格: {ticker['Last']}")

def main():
    init_account = exchange.GetAccount()
    task.g_Log(init_account)
    while True:
        on_tick()
        task.g_Sleep(10000)

# ------------------------------ 策略回测结束 --------------------------
if __name__ == '__main__':
    try:
        main()
    except Exception as e:
        print(f"本次回测结果: {e}")
        print(task.Join(True))
        task.Show()
    finally:
        print("本次回测结束")


fmz的回测的那个例子

链接: FMZ 发布 python 本地 回测引擎
链接: FMZ量化平台策略编写进阶教程
如何使用一个策略 在本地回测引擎中回测:
在这里插入图片描述

·回测进阶
Python本地回测
具体开源地址:https://github.com/fmzquant/backtest_python
fmz本地回测怎么安装这文章中也告诉了
在这里插入图片描述

FMZ本地回测搭建 | FMZ本地回测下载

copy
Python本地回测
具体开源地址:https://github.com/fmzquant/backtest_python

安装

在命令行输入以下命令:

pip install https://github.com/fmzquant/backtest_python/archive/master.zip

具体见FMZ量化平台策略编写进阶教程中的Python本地回测

Reference

FMZ 发布 python 本地 回测引擎#如何使用一个策略-在本地回测引擎中回测https://www.fmz.com/bbs-topic/1687
FMZ量化平台策略编写进阶教程-回测进阶-Python本地回测-回测https://www.fmz.com/bbs-topic/4183#python%E6%9C%AC%E5%9C%B0%E5%9B%9E%E6%B5%8B
推荐文章:掌握Python回测利器——backtest_pythonhttps://blog.csdn.net/gitblog_00045/article/details/139258137
发明者本地回测平台python版[博]https://blog.csdn.net/u011331731/article/details/105334611

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐