输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

  • 设置Python策略程序使用的Python解释器
    使用Python编写的策略,在回测或实盘时,如果托管者所在系统环境同时安装了Python2和Python3,可以在策略开始的第一行设置策略运行时启动的Python版本。例如:#!python3#!python2,系统将自动查找相应的解释器。也可以指定绝对路径,例如:#!/usr/bin/python3

  • 基于Python的策略安全性
    在优宽量化交易平台上开发的策略,仅对优宽量化交易平台账户持有者可见。在优宽量化交易平台上可以实现策略代码的完全本地化,例如将策略封装成一个Python库,在策略代码中加载,从而实现策略代码本地化。

    Python代码的安全性:
    由于Python是开源且易于反编译的语言,如果策略非自用而是出租,担心策略泄露可以让策略运行在自己部署的托管者上,并以子账号或全托管管理的形式出租。

    Python策略代码加密:
    默认情况下,Python策略代码作者自用时不加密,租给他人使用时加密。在Python策略开头编写如下代码,可以指定自用或租出Python策略运行时是否加密策略代码。支持策略代码加密的Python版本为:Python 2.7版本、Python 3.5版本、Python 3.6版本。

    • 策略作者自己运行、通过注册码给他人使用时,均加密策略代码:
      使用代码#!python指定Python解释器版本,之后使用逗号,间隔,输入加密指令encrypt。如果不指定Python版本,可以直接添加#!encrypt

      python
      #!python,encrypt

      python
      #!encrypt
    • 策略作者自己运行、通过注册码给他人使用时均不加密策略代码:

      python
      #!python,not encrypted

      或者

      python
      #!not encrypted

    判断Python策略代码加密是否生效,使用代码os.getenv('__FMZ_ENV__'),返回字符串"encrypt"表示已经生效。仅在实盘有效,回测不会加密Python策略代码。

    python
    #!encrypt def main(): ret = os.getenv('__FMZ_ENV__') # 打印变量ret为字符串encrypt或者ret == "encrypt"为真,即代表加密生效 Log(ret, ret == "encrypt")
  • Python自定义模块导入功能
    FMZ平台支持在Python策略中导入自定义模块,实现代码的模块化开发和复用。

    例如,我们需要设计一个模块:mymath,将mymath.py保存为一个单独的文件。

    python
    # mymath.py - 保存为一个单独的文件 """ 简单的数学工具模块 """ def add(a, b): """加法""" return a + b

    部署模块文件,将mymath.py文件放置到托管者程序目录下的指定位置(storage目录中的文件夹名称是实盘Id,以实盘Id为123456为例):

    托管者程序目录/logs/storage/123456/mymath.py

    最后在FMZ平台上的Python策略中直接导入mymath模块。

    python
    import mymath def main(): Log("mymath.add(1, 2):", mymath.add(1, 2))

    Id为123456的实盘(策略实例)所绑定的策略中即可调用mymath模块中的方法。