QMT 策略代码保护指南(加密):从 pyc 到 pyd,加密等级从低到高怎么选
发布时间:1小时前阅读:5
把写好的策略文件发到一个交流群里请大家指点,第二天有人在别的群看到几乎一样的代码,署名已经不是自己。这时候才想起,Python 源码是明文,任何拿到文件的人都能直接读、直接改。代码保护这件事,越早做代价越小。
先说清楚保护的原理和局限。Python 脚本运行前会被编译成字节码,pyc 文件就是字节码的落盘形式,发布 pyc 而不是 py 源文件,是最基础的一层:别人打开看不到源码了。但字节码和源码结构对应得很紧,用现成工具可以反编译回去,还原程度不低。所以 pyc 防的是随手翻看,防不了有心人。
中间一层是混淆。把变量名、函数名改成无意义的字符,去掉注释和文档字符串,再配合 pyc 发布,反编译出来的东西可读性会差很多。这层不需要改代码逻辑,用工具批量处理即可,属于性价比较高的一档。
最高的常用等级是 pyd。用 Cython 之类的工具把核心模块编译成二进制扩展文件,运行时像普通库一样导入。二进制里没有字节码,常规反编译手段基本失效,逆向成本一下子提高了几个量级。代价是需要编译环境,而且编译产物和目标机器的 Python 版本、系统位数绑定,QMT 内置哪个版本的解释器,就要用哪个版本去编译,版本对不上导入就会报错。
怎么选,看使用场景。只在自己电脑上跑,源码不出门,不做处理也行;要把文件发给他人运行、或者放到不受你控制的机器上,至少上 pyc 加混淆;核心逻辑涉及参数和规则,不想被看懂,就把这些部分单独抽成模块编译成 pyd,入口脚本保持明文,方便排查问题。
实操时记三件事:编译前留一份源码备份,编译产物丢了源码就没了;编译完先在目标环境里导入测试一次,别到实盘才发现版本对不上;混淆工具处理完要跑一遍完整流程,个别写法会被改出问题。
判断标准:把处理后的文件拿到一台没有源码的电脑上运行,功能完整、你也不担心规则被读出来,这个保护等级就够用了;还不放心,就往 pyd 那一档再加。
股票/量化开户欢迎找我!满足条件股票佣金万0.854、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!期权1.8元一张全包价!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
