KB / ARTICLE

策略编写环境与依赖管理

策略文档 · 期货版修订 R1发布于 2026-10-09

编写环境与依赖管理

本文讲解期魔方期货策略的 Python 运行环境、编译与回测入口、以及已内置和可自定义的依赖库清单。

平台Python环境

期魔方平台内置了 Python 编写与运行环境,无需用户自行配置 Python。

策略新建与编译

策略 -> 策略列表 -> 我的策略 -> 新增策略 -> 填写策略名称,选择语言为 Python(已固定),添加注释说明-> 确定 如果系统提示下载编写工具,就点击下载安装包,编辑器解压进度条 100% 后,会自动跳转到 VSCode 编辑器页面

回测运行与结果展示

回测栏 -> 添加回测单元 -> 在参数设置页面填写基础参数和策略参数后保存 -> 点击回测

批量回测与综合报表

在回测功能视图右上角有综合报表按钮,综合报表结构与单策略类似

回测完成后点击详情查看报告,综合报告,收益回撤,图表分析,明细详情,参数信息等,回测日志区内容在软件退出后会保存到日志目录,如用户目录的 AppData\Local\qmfquant\logs\backtest_server 下面

任务启动

任务栏->双击策略->填写任务参数->提交任务->启动

可以在任务界面查看实时 K 线和日志内容,日志内容在客户端退出后会保存到日志目录,如用户目录的 AppData\Local\qmfquant\logs\task_server 下面

依赖库管理

软件中已安装的库

比如 talib 库,已经安装在期魔方软件内部,直接在函数中导入即可使用:

import numpy as np
import talib as ta

# 计算均线指标数据
def calc_sma(context):
    len1 = context.len1
    len2 = context.len2   
    context.close_array = context.klines.get("close")
    ma1_array = ta.SMA(np.asarray(context.close_array),len1)
    ma2_array = ta.SMA(np.asarray(context.close_array),len2)

目前在期魔方平台编写策略支持的库文件及版本如下:

aiohttp                   3.9.5
aiosignal                 1.3.1
akshare                   1.16.9
altgraph                  0.17.4
annotated-types           0.6.0
anyio                     4.3.0
APScheduler               3.10.4
arch                      7.2.0
astropy                   7.0.1
astropy-iers-data         0.2025.2.17.0.34.13
asttokens                 2.4.1
attrs                     23.2.0
beautifulsoup4            4.12.3
certifi                   2024.7.4
cffi                      1.17.1
charset-normalizer        3.3.2
clarabel                  0.10.0
click                     8.1.7
colorama                  0.4.6
contourpy                 1.3.0
cryptography              43.0.1
cvxpy                     1.6.1
cycler                    0.12.1
DBUtils                   3.1.0
decorator                 5.1.1
dnspython                 2.6.1
email_validator           2.1.1
et_xmlfile                2.0.0
executing                 2.1.0
fastapi                   0.110.1
fonttools                 4.54.1
frozendict                2.4.6
frozenlist                1.4.1
h11                       0.14.0
html5lib                  1.1
idna                      3.7
ipython                   8.29.0
jedi                      0.19.1
joblib                    1.4.2
jsonpath                  0.82.2
kiwisolver                1.4.7
loguru                    0.7.2
lxml                      5.3.0
matplotlib                3.9.2
matplotlib-inline         0.1.7
mini-racer                0.12.4
multidict                 6.0.5
multitasking              0.0.11
mysql-connector-python    8.3.0
networkx                  3.4.2
ntplib                    0.4.0
numpy                     1.26.4
objprint                  0.2.3
openpyxl                  3.1.5
osqp                      0.6.7.post3
packaging                 24.1
paho-mqtt                 1.6.1
pandas                    2.2.2
parso                     0.8.4
patsy                     1.0.1
peewee                    3.17.7
pefile                    2023.2.7
pillow                    11.0.0
pip                       25.0.1
platformdirs              4.3.6
prompt_toolkit            3.0.48
pure_eval                 0.2.3
py-mini-racer             0.6.0
pybind11                  2.13.6
pycparser                 2.22
pydantic                  2.6.4
pydantic_core             2.16.3
pyerfa                    2.0.1.5
Pygments                  2.18.0
pyinstaller               6.10.0
pyinstaller-hooks-contrib 2024.9
PyMySQL                   1.1.0
pyparsing                 3.2.0
python-dateutil           2.9.0.post0
pytz                      2024.1
pywin32-ctypes            0.2.2
PyYAML                    6.0.2
qdldl                     0.1.7.post5
QuantStats                0.0.64
requests                  2.31.0
Riskfolio-Lib             7.0.0
scikit-learn              1.6.1
scipy                     1.14.1
scs                       3.2.7.post2
seaborn                   0.13.2
setuptools                72.1.0
six                       1.16.0
sniffio                   1.3.1
soupsieve                 2.6
stack-data                0.6.3
starlette                 0.37.2
statsmodels               0.14.4
TA-Lib                    0.4.28
tabulate                  0.9.0
threadpoolctl             3.5.0
tqdm                      4.67.1
traitlets                 5.14.3
typing_extensions         4.12.2
tzdata                    2024.1
uvicorn                   0.29.0
wcwidth                   0.2.13
webencodings              0.5.1
websockets                12.0
win32-setctime            1.1.0
xlrd                      2.0.1
XlsxWriter                3.2.2
yarl                      1.9.4
yfinance                  0.2.48

软件中没有的库

比如 statsmodels 库,期魔方软件中没有安装,用户可以首先把库安装到本地电脑的 Python 环境中,然后在策略中把本地 Python 库的 lib 路径添加到环境变量中。

def register_python_env(env_path):
    import os
    import sys

    if not os.path.isabs(python_root):
        put_log("必须使用绝对路径", "ERROR")
        return False
    sub_dirs = [
        # '', # 根目录
        "Lib",  # 标准库
        os.path.join("Lib", "site-packages"),  # 第三方库
        "DLLs",  # 动态链接库
    ]
    for sub in sub_dirs:
        path = os.path.normcase(os.path.abspath(os.path.join(python_root, sub)))
        if path not in [os.path.normcase(p) for p in sys.path]:
            sys.path.append(path)
    return True


def on_init(context):
    register_python_env(r'python_dir')

def on_tick(context):
    on_bar_run(on_bar, context)

def on_bar(context):
    import statsmodels.api as sm
    # 创建数据
    X = [1, 2, 3, 4, 5]
    y = [2, 3, 5, 7, 11]
    # 添加常数项
    X = sm.add_constant(X)
    # 拟合线性回归模型
    model = sm.OLS(y, X).fit()
    result = model.summary()

其中,python_dir 是用户电脑的 Python 路径。如果出现兼容性问题,可以查看下是否因为期魔方 Python 版本不支持。策略程序中使用 sys.version 可以查看当前调用 Python 的版本。


相关阅读

  • [策略生命周期与回调函数]
  • [核心API 实时行情数据]
  • [核心API 历史K线数据]
  • [核心API 账户持仓查询]
  • [核心API 衍生数据]
  • [核心API 合约信息查询]
已复制到剪贴板
策略文档 · 期货版修订 R1

返回策略文档 · 期货版板块

评论