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

点及财经,股票期货专业投机者。

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

这是为什么呢?

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

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

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

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

Python 多线程,同时做多件事

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

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

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

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

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

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

  • 继承 threading.Thread,在run()方法下编写策略。
  • 实例化以后调用start()方法启动线程。
  • 最后用join()方法,让主线程等待所有子线程执行完毕后,才执行。

如下图所示:

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()方法以的使用,如果不采用这个方法,作者就只能通过把策略名每个都写一遍。

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

最后

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

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

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/491283
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 1小时前
下一篇 1小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注