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

从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容器进行部署,这样做的主要目的是降低您学习使用Thunder的门槛。与常见的Linux软件包不同,Docker镜像不需要您额外安装任何第三方依赖,同时也减少了在不同Linux发行版下依赖兼容性的风险。此外Docker容器是完全隔离的,不会受到来自外界的影响,同时也不会影响到宿主机的环境设置。

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

Native策略与Remote策略

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

当您只是想实现一个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策略支持故障恢复机制,系统能在检测到故障后自动恢复当前运行的策略实例,使得您的交易系统更加稳定。

基于Python的仿真工具

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