编写环境与依赖管理
本文讲解期魔方期货策略的 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 合约信息查询]

评论
登录后参与讨论,与站内账号体系共用。