设置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,encrypt
或
#!encrypt
策略作者自己运行、通过注册码给他人使用均不加密策略代码:
#!python,not encrypted
或者
#!not encrypted
判断Python策略代码加密是否生效,使用代码os.getenv('__FMZ_ENV__')
,返回字符串"encrypt"
说明已经生效。仅实盘有效,回测不会加密Python策略代码。
#!encrypt
def main():
ret = os.getenv('__FMZ_ENV__')
# 打印变量ret为字符串encrypt或者ret == "encrypt"为真,即代表加密生效
Log(ret, ret == "encrypt")