<返回更多

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

2020-06-23    
加入收藏

 

前言

通常情况下,期货量化交易策略都会以多标的、多策略、多周期进行组合交易。除股指期货外,很少有单策略、单品种、单周期的情况。

这是为什么呢?

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

采用这样的方法可以平滑资金曲线,减少回撤,因为不同类型策略、品种或周期之间可以做到互补,所谓"东方不亮西方亮"。

所以,作者将借助天勤量化交易平台的量化开发包 tqsdk进行单品种多策略的开发。

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

首先,得要明白什么是多线程。

Python 多线程,同时做多件事

除了多进程能够实现多任务外,"多线程"同样也能够实现多任务!

首先,多线程你可以看做是工厂车间里的多条生产线,比如手机零部件生产线和组装生产线,两者虽然做不同的事,但最终的目的是为了完成手机的生产。

而作者使用多线程,则是为了完成单品种多策略多账户的功能,两个账户和两个策略同时操作一个品种

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

其次,多线程是共用一个内存空间。 比如车间内的厕所,每个工人都可以方便。

作者采用线程类的方式,来实现这个功能。

如下图所示:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

作者的两个类,可以看做是两个策略,我们在同一个文件中就可以实现多策略同时运行。

1. 通过dir()方法获取到文件中所有的类名,函数名。

如下图所示:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

Run:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

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

如下图所示:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

Run:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

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

如下图所示:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

Run:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

接下来,作者将借助天勤量化tqsdk量化开发包,实现这一功能。

Python单品种多策略多账户组合交易实现

作者将以双均线k线突破策略为例,演示如何实现单品种多策略及多账户同时运行。

1. 准备工作。

需要准备两个账号,可以是实盘账户、快期模拟账户、仿真账户。作者将采用快期模拟账户,如需模拟账户请在快期官网进行注册。

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

2. 编写策略

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

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

Run:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

3. 启动多线程,执行策略

准备一个账户列表并将api存入api_list中,交易品种为螺纹钢期货2010合约。

用eval()函数将获取到的策略名(字符串),转化为Python的有效表达式并传入参数后将其存入列表中。

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

Run:

Python量化交易之单品种多策略多账户组合交易,多线程的应用!

小结。

通过上述3个步骤,完成了多策略多账户功能的实现。其中作者认为主要的是eval()方法以的使用,如果不采用这个方法,作者就只能通过把策略名每个都写一遍。

一个策略还好,几十个策略呢?或者说其中某些策略名字更改了,或者新增策略名后,很麻烦。

最后

多策略多周期组合是量化交易中常用的一些操作。除此之外,使用多线程还可以实现很多其他的功能。

文章及策略代码仅供学习交流,切勿直接实盘。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>