通常情况下,期货量化交易策略都会以多标的、多策略、多周期进行组合交易。除股指期货外,很少有单策略、单品种、单周期的情况。
这是为什么呢?
采用这样的方法可以平滑资金曲线,减少回撤,因为不同类型策略、品种或周期之间可以做到互补,所谓”东方不亮西方亮“。
所以,作者将借助天勤量化交易平台的量化开发包 tqsdk进行单品种多策略的开发。

首先,得要明白什么是多线程。
Python 多线程,同时做多件事
除了多进程能够实现多任务外,”多线程”同样也能够实现多任务!
首先,多线程你可以看做是工厂车间里的多条生产线,比如手机零部件生产线和组装生产线,两者虽然做不同的事,但最终的目的是为了完成手机的生产。
而作者使用多线程,则是为了完成单品种多策略多账户的功能,两个账户和两个策略同时操作一个品种。

其次,多线程是共用一个内存空间。 比如车间内的厕所,每个工人都可以方便。
作者采用线程类的方式,来实现这个功能。
- 继承 threading.Thread,在run()方法下编写策略。
- 实例化以后调用start()方法启动线程。
- 最后用join()方法,让主线程等待所有子线程执行完毕后,才执行。
如下图所示:

作者的两个类,可以看做是两个策略,我们在同一个文件中就可以实现多策略同时运行。
1. 通过dir()方法获取到文件中所有的类名,函数名。
如下图所示:

Run:

2. 当我们通过循环拿到策略名后,需要用eval()方法,将字符串(策略名)以Python的有效表达式来求值,因为我们遍历出的是字符串数据类型。
如下图所示:

Run:

3. 最后,通过start()和join()及两个循环启动线程和主线程等待,完成多任务的执行。
如下图所示:

Run:

接下来,作者将借助天勤量化tqsdk量化开发包,实现这一功能。
Python单品种多策略多账户组合交易实现
作者将以双均线及k线突破策略为例,演示如何实现单品种多策略及多账户同时运行。
1. 准备工作。
需要准备两个账号,可以是实盘账户、快期模拟账户、仿真账户。作者将采用快期模拟账户,如需模拟账户请在快期官网进行注册。

2. 编写策略。
作者已经将两个策略写好,传入api及品种代码就可以运行了。为了识别他们之间相互独立,作者在k线更新时打印了两个策略的持仓情况。

Run:

3. 启动多线程,执行策略。
准备一个账户列表并将api存入api_list中,交易品种为螺纹钢期货2010合约。
用eval()函数将获取到的策略名(字符串),转化为Python的有效表达式并传入参数后将其存入列表中。

Run:

小结。
通过上述3个步骤,完成了多策略多账户功能的实现。其中作者认为主要的是eval()方法以的使用,如果不采用这个方法,作者就只能通过把策略名每个都写一遍。
一个策略还好,几十个策略呢?或者说其中某些策略名字更改了,或者新增策略名后,很麻烦。
最后
多策略多周期组合是量化交易中常用的一些操作。除此之外,使用多线程还可以实现很多其他的功能。
文章及策略代码仅供学习交流,切勿直接实盘。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/491283
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!