Article Blog Image

诚挚邀请您加入内测

新闻

我们会在之后很长一段时间内进行软件内测,在这里您可以找到最新的内测License。诚挚邀请您加入我们的软件内测讨论组,为我们提出宝贵的意见。

2024年12月

5ef986085eafa0de41d47542e1cb6c1e33bc146407a7945b3d9668e789884e5d53b9fa35a1b4d975736dc0d639938a918d6a4626c0911a39fab67581822a9b9c

2025年1月

2ccdf2160cad2a0ff91f52f19be4827f5a12b1a7d7a99c9bc979153f07fd4fd24d717132cd35bf65bf11d58b2d711d8ca2d1ef0ae7517a94727e5fc98e710f47

2025年2月

9b696cd152ac7a56f0901f278dd064153ee87ab1b2a540c2714536bd5729b171bbec8679a4641d3f7823982618421f203d781b02dba670eba0ab07fee8f61a0f

2025年3月

df50a4d6be0a31fefab8bf1e8e63de8c546680cc34c522404a093a9596d28336c12bfc9ab21d887fcd1efe91346d70a5990446ac055d6f014fff8e827307ab8a

2025年4月

9095bf9626bffbe53e99c7962268b1fab85fdbcce2502a37e5917b97fc9a1d2c3c10f24cdb61a58794de0fdf50dd3a959f2eebc5162704f8e43c34a5fa4bcab6

2025年5月

88b3cf22342e6cb45ae7ff41edf7a3d371686a935160631dadb4417ab74ab3df5898d9688d48d6546e317595831ee88803a452f54305a2a6f7f266e482a1b1dd

2025年6月

240532ba07c844862ba47a9418392a1ea6bd914a6eae148d66512480be52a8296f25b1460145a41f376c63da3e49004375a2fac6e48574baa0074ee6408b60a2

2025年7月

f543cc61a24e27b70abf9f3449c34c493258f0e9b5bc4a9d53b65bf2fe8aa525202feb7df4510eedc65af1a17bd9552ddf63ebb1899ee11d4d7ea38c0f6085fc

2025年8月

ef1f8cbc2c34140bcef61ac7c8734b4430738a08d6764e5e604ee3c96e18104115e030690b64fc4749d3d076ff6f1baeb3329247ea82ff9689ff1aec90ea8584

2025年9月

26d6dd46abda05ea7046e9967b08e1396b917a90350ad4dcf8e0c8c10e4f95b4d8f521d2831d6a3d0ab8fece0e295a0f0b68de7b4400f22526ae1cc0b28e75b1

Article Blog Image

监控期货全市场的套利机会

实践

本文中将带领您基于DevelStudio完成一个国内期货全市场的跨期套利监控小程序,并实现日常监控报告生产。

套利,通常指在某种实物资产或金融资产拥有两个价格的情况下,以较低的价格买进,较高的价格卖出,从而获取丰厚的收益。

某支股票同时在伦敦和纽约交易所上市,同股同权,但是在纽约标价10美元,在伦敦却标价12美元,投资者就可以在纽约买进,到伦敦卖出。 又比如在货币交易上进行套利,如借入利息较低的货币为融资,买进高息货币以赚取汇差或利差,例如,日元放款利息长年维持在近乎零的水平,而南非或巴西等国因其通胀严重,利息常年维持在高水平。 如果借入日圆来购买南非币或巴西里拉,在不考虑汇差情况下,也能赚取丰厚的利差。

而跨期套利是套利策略的一种,是在同一期货品种的不同月份合约上建立数量相等、方向相反的交易头寸,最后以对冲或交割方式结束交易、获得收益的方式。 我们以中国期货市场为例,当前有几十种不同类型的合约在交易,而每种合约有多个不同交割月份的独立合约。如何能有效发现市场中可能存在的套利机会?

下面的内容中将带您通过一个Python小程序实现全市场合约的跨期套利监控。

数据准备

在编写市场监控程序之前,您需要先部署DataCenter进行数据采集,收集足够的行情数据。如果您已经完成了DataCenter的部署,可直接跳过并阅读下一小节。

启动DataCenter

$ mkdir /home/thunder-ticks $ sudo docker run --privileged -d -p 70:80 -v /home/thunder-ticks:/thunder-ticks thundertrader/datacenter:1.81 

随后我们登录DataCenter控制面板http://127.0.0.1:70并配置CTP行情采集插件,即可完成部署。地址http://127.0.0.1:70就是数据中心的地址,后面小结会用到。

具体的使用方法可以参考文档DataCenter使用文档

启动DevelStudio

$ mkdir /home/workspace $ sudo docker --privileged -d run -p 8080:80 -p 8081:81...
        
Article Blog Image

从Strategy101开始学习

策略

在本文中我们将引导您创建第一个交易策略:Strategy101策略。它会周期性进行开仓、等待、平仓操作,并且还演示了如何使用State、Timer、Parameter、Metrics等基本功能。

Strategy101策略实现了一个循环下单的逻辑:

  • 1.下单开仓
  • 2.等待20秒
  • 3.平仓并重复上述逻辑

与此同时考虑到报单成交超时以及报单错误的情况,实现自动撤单并且重新报单。虽然现实中不存在这样的交易逻辑,但是可以作为一个很好的教学示例,这个例子足以展示如何基于有限状态自动机以及Timer功能实现自动化交易。策略将会接入2个目标合约,并在自定义看板上试试检测合约各自的价格与成交量,以及两个合约价格相减形成的套利价差。同时,策略还支持发送人工干预信号,进行开仓、平仓、定时器的创建与撤销等操作。

定义策略参数

策略定义了四个参数,abc以及enable_order_test分别为int、double、string类型。其中abc三个参数仅作为示例,并没有在策略中实际用到,而enable_order_test如果被设置为1则策略会开启”开仓-等待-平仓”的循环自动交易逻辑。在Native策略中参数可直接通过相关指令进行定义:

BEGIN_PARAMETER_BIND INT_PARAMETER("a", "parameter a is an int64_t", 5) DOUBLE_PARAMETER("b", "parameter b is a double", 0.2) STRING_PARAMETER("c", "parameter c is a...
        
Article Blog Image

设计考量

系统设计

本文为您介绍ThunderTrader系统架构设计过程中的思路与目标,带您从另外一个角度理解ThunderTrader的设计模式。

容器化部署

ThunderTrader所有模块均采用Docker容器进行部署,这样做的主要目的是降低您学习使用ThunderTrader的门槛。与常见的Linux软件包不同,Docker镜像不需要您额外安装任何第三方依赖,因此也减少了在不同Linux发行版下依赖兼容性的风险。此外Docker容器是完全隔离的,不会受到来自外界的影响,同时也不会影响到宿主机的环境设置,更加便于进行云端部署。

除了上面所述的优势,docker的另外一个优点是对性能几乎没有损耗。使用Docker镜像封装的应用程序基本与在物理机器上执行的应用程序有着相同的性能。 thunder-architecture.jpg

Native策略与Remote策略

众所周知,Python/Golang/R/Java等编程语言相较于C++,在科学计算、仿真模拟等方面有着更加友好的使用体验,而C++则在计算性能方面有着天然的优势。为了支持多语言策略开发满足不同的场景,ThunderTrader为您提供NativeRemote两种策略开发模式。

当您只是想实现一个Idea,使用历史数据仿真,或者在实盘进行小规模交易,再或者您的策略涉及到的计算量并不大,对延迟要求并不高,那么Remote策略非常适合这种场景。Remote策略是一种基于HTTP的协议约定,Engine向Remote策略推送行情数据以及报单事件(Event),而Remote策略向Engine返回需要执行的动作(Action)。基于这种模式,几乎所有编程语言都可以成为您开发策略的理想选择。而且Remote策略本身可以运行在任何环境中,甚至可以运行在您的桌面办公电脑上,这非常适合您快速将您的想法变为可进行交易的策略。

当您希望策略能够快速响应,对延迟有严格的要求,对计算性能也有较高的预期,此时您可以选择用Native的方式实现策略。当然这需要您能够较为熟练地使用C++语言进行开发。虽然C++开发涉及到较多的环境配置,但是好在我们为您提供的DevelStudio已经帮您配置好了一切,您可以在DevelStuduo中完成策略编写、编译、仿真等一系列步骤。编译好的策略可以直接上传到Engine进行部署。

Native策略以寄生Engine内部的方式运行,本质上与Engine是一个整体。这样的方式使得engine能够第一时间将行情数据推送给策略,同时也能快速将策略的交易信号发送到交易所,这些动作的延迟几乎可以忽略不计。同时C++拥有非常多的高性能科学计算库,例如GSL、BLAS等等,这些特点使得Native方式非常适合高频交易策略的开发。同时Native策略支持故障恢复机制,系统能在检测到故障后自动恢复当前运行的策略实例,使得您的交易系统更加稳定。

native-remote.jpg

基于Python策略验证仿真环境

ThunderTrader并没有像其他量化工具一样提供基于用户界面的仿真工具,而是提供了基于Python的一套仿真工具套件(DevelStudio),这样做的主要目的是为了更加方便您进行第三方开发。Python作为一个强大的数据分析工具,提供了像Matplotlib、Numpy、Scipy、Pandas等一系列科学计算、图形报表绘制工具,您可以基于DevelStudio构建您自己的策略分析框架。 devel-studio-compose.jpg