怎么把一个Python策略封装成本地文件

发布时间:2021-11-26 09:54:27 作者:iii
来源:亿速云 阅读:206

这篇文章主要介绍“怎么把一个Python策略封装成本地文件”,在日常操作中,相信很多人在怎么把一个Python策略封装成本地文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么把一个Python策略封装成本地文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

封装一个策略

我们找一个简单的Python策略做示范,使用经典的Dual Thrust策略,策略地址:https://www.fmz.com/strategy/21856
我们力求不改动任何策略部分代码,将策略封装成一个可由FMZ平台上策略代码调用的文件,并且执行结果和直接运行该策略完全一致。封装最大的问题在于FMZ平台上的策略代码调用的全局对象,全局函数,常量值,在我们封装的文件中无法访问,这样就必须想个办法把这些对象、函数、变量、常量传递到封装的文件。那接下来我们按部就班的处理。

FMZ平台上的启动策略

启动策略就很简单了,如下:

怎么把一个Python策略封装成本地文件

在FMZ平台上写的代码就只有这几行,需要注意的是这个启动策略的参数是要和我们封装的策略python版 Dual Thrust OKCoin 期货一模一样的,其实可以直接复制一下「python版 Dual Thrust OKCoin 期货」策略,然后把策略代码清空就可以了,粘贴上

import sys# 这里我写的是自己放置testA文件的路径,具体我替换为xxx了,简单说就是设置自己的testA文件路径就可以了sys.path.append("/Users/xxx/Desktop/pythonPlayground/")import testAdef main():# 传递交易所对象testA.SetExchanges(exchanges)# 传递全局函数 SetFunc(pLog, pSleep, pTA, pChart, pLogStatus, pLogProfitReset, p_N, p_C, pLogProfit)testA.SetFunc(Log, Sleep, TA, Chart, LogStatus, LogProfitReset, _N, _C, LogProfit)# 传递策略参数 SetParams(pContractTypeIdx, pMarginLevelIdx, pNPeriod, pKs, pKx, pAmountOP, pInterval, pLoopInterval, pPeriodShow)testA.SetParams(ContractTypeIdx, MarginLevelIdx, NPeriod, Ks, Kx, AmountOP, Interval, LoopInterval, PeriodShow)# 执行封装的testA文件中的策略主函数testA.main()

这样我们就把策略逻辑主体封装在testA文件,放在托管者所在设备本地,FMZ平台上只用保存一个启动策略,创建这个启动策略的机器人,就可以直接加载我们的本地文件在托管者本地运行了。

回测对比

另一种更加简单的方式

直接将文件载入执行。
这次我们准备一个testB文件,放置「python版 Dual Thrust OKCoin 期货」策略的代码。

import timeclass Error_noSupport(BaseException):def __init__(self):Log("只支持OKCoin期货!#FF0000")class Error_AtBeginHasPosition(BaseException):def __init__(self):Log("启动时有期货持仓! #FF0000")ChartCfg = {'__isStock': True,'title': {'text': 'Dual Thrust 上下轨图'},'yAxis': {...

策略太长,就省略了,策略代码完全不用改动。
然后准备「python版 Dual Thrust OKCoin 期货 (启动策略,直接执行testB文件)」,就是我们在FMZ平台上的策略,创建机器人,直接加载testB文件,并且直接执行。需要注意的是启动策略必须也有和「python版 Dual Thrust OKCoin 期货」原版一摸一样的策略参数设置(策略界面参数)。

怎么把一个Python策略封装成本地文件

if __name__ == '__main__':Log("run...")try:# 文件路径做了处理,可以写入自己testB文件放置的实际路径f = open("/Users/xxx/Desktop/pythonPlayground/testB.py", "r")code = f.read()exec(code)except Exception as e:Log(e)

执行回测:
怎么把一个Python策略封装成本地文件

到此,关于“怎么把一个Python策略封装成本地文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Ubuntu Server挂载AWS S3成一个本地文件夹
  2. Python Django 封装分页成通用的模块详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:python怎样生成词云

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》