快速上手

您可以在这里了解到如何通过ThunderTrader快速实现一个策略并进行实盘交易

Previous page Next page

本小结内容将带您快速体验基于ThunderTrader进行策略开发编译、仿真验证、实盘交易的完整生命周期。

  • 首先会引导您完成DataCenter的部署,录制策略仿真所需要的历史行情数据
  • 您将会在DevelStudio环境中完成Strategy101策略的编译,包括C++版本以及Python版本
  • 编译好的策略会在DevelStudio进行历史数据仿真,生成相关的指标以及报表
  • 您将会部署Engine并配置您的实盘账号,完成程序化交易
Strategy101是一个专为教学而开发的示例策略,其中包含了绝大部分平台功能的使用示例,您甚至可以基于Strategy101策略来构建自己的交易策略。

本小结仅对常见功能作简短介绍,更加详细的使用方法可查看各模块对应的使用手册。

录制行情数据

使用DataCenter录制足够多的真实行情数据,便于我们对策略进行仿真验证。

首先需要下载并安装DataCenter组件。进入DataCenter下载页面下载最新的镜像并载入,这里以1.81版本为例。

$ wget "http://images.thunder-trader.com/1.81/datacenter.1.81.docker.tar.gz"
$ sudo docker load < datacenter.1.81.docker.tar.gz

在磁盘上新建一个文件夹,用来存储录制的行情数据。

$ mkdir /home/tick-data

启动DataCenter并监听90端口,同时将我们刚才新建的/home/tick-data目录映射到容器内部,DataCenter将会把录制完成的行情数据保存到该目录。

$ sudo docker run --privileged -d -p 90:80 -v /home/tick-data:/thunder-ticks thundertrader/datacenter:1.81

在浏览器中打开DataCenter的控制面板(http://127.0.0.1:90),在License选项卡中,将License复制到编辑框,并点击下方SUBMIT按钮,完成License配置。

datacenter-license.png

我们需要添加一个或者多个数据录制插件实例,这是负责对接交易所接收行情数据的组件,这里我们以CTP期货接口为例,您需要事先按照经纪公司的流程申请SDK账号。

datacenter-deployproducer.png

Dashboard选项卡中查看录制的行情数据的吞吐量,曲线数值代表每分钟DataCenter收集到的Tick数量,可以辅助您判断系统工作是否符合预期。

datacenter-metrics.png

您也可以打开/home/tick-data目录,或者在浏览器中打开http://127.0.0.1:90/thunder-ticks进一步验证行情数据录制情况。

到此为止,我们已经成功部署DataCenter,它的地址是http://127.0.0.1:90,在下面的小结中我们会用到这个地址。

DataCenter中的所有Producer插件实例被设计为开盘自动启动,收盘自动关闭,为7x24小时无人值守,通常不需要人为干预。

编译Strategy101策略

Strategy101的源代码伴随DevelStudio一起发布,进入DevelStudio下载页面,下载DevelStudio最新的镜像并载入,这里以1.81版本为例。

$ wget "http://images.thunder-trader.com/1.81/develstudio.1.81.docker.tar.gz"
$ sudo docker load < develstudio.1.81.docker.tar.gz

在91端口启动DevelStudio

$ sudo docker run --privileged -d -p 91:80 thundertrader/develstudio:1.81

您可以在浏览器中访问http://127.0.0.1:91使用网页版本VSCode或者Jupyter notebook。

develstudio-portal.png

Native版本

点击左侧Cloud IDE进入VSCode。并且打开/strategy101目录,我们可以看到策略的源代码文件:

  • strategy.h:策略头文件
  • strategy.cpp:策略实现文件
  • CMakeLists.txt:cmake项目文件

develstudio-vscode.png

通过执行如下命令,调用编译器进行策略编译。

$ cd /strategy101
$ mkdir build
$ cd build
$ cmake ..
$ make -j2

build目录下,您会看到生成的策略文件strategy_strategy101.so,我们将该文件拷贝到共享目录/workspace中实现文件下载,并上传到engine进行实盘交易。

Python版本

Python版本策略采用无需编译即可运行。可以在VSCodeJupyter中新建Terminal,执行下面shell命令即可启动教学策略:

$ cd /strategy101
$ launch_strategy.sh pystrategydft.py

历史数据仿真

点击右侧Research Notebook进入Jupyter notebook

develstudio-new-terminal.png

新建一个NoteBook,并执行如下代码:

#!/usr/bin/python
# -*- coding: <encoding name> -*-
import pythunder.simulator as sim

tick_config = (["sfit.future.ag2602", "sfit.future.ag2603"], ("20251224", "20251224"))
# For C++ implemented strategy
simulator = sim.Simulator("/strategy101/build/strategy_strategy101.so", tick_config, "http://192.168.3.44:90")
# For Python implemented strategy
#simulator = sim.Simulator(("127.0.0.1", "1001", ""), tick_config, "http://192.168.3.44:90")
result = simulator.simulate()
res.show_metric({"size":(40, 15), "dpi": 200})

可以看到我们生成的策略Metrics develstudio-strategy-metric-plot.png

部署策略进行实盘交易

进入Engine下载页面,下载Engine最新的镜像并载入。

$ wget "http://images.thunder-trader.com/1.81/engine.1.81.docker.tar.gz"
$ sudo docker load < engine.1.81.docker.tar.gz

通过下面命令启动Engine进程容器,将会在92端口打开Engine控制面板。

$ sudo docker run --privileged -d -p 92:80 thundertrader/engine:1.81

在浏览器中访问http://127.0.0.1:92,进入Engine控制面板。

提示:Engine默认密码为thunderpass

License页面中设置License,并在Source/Deploy Source选项卡中,添加至少一个交易源和一个行情源。

thunder-engine-source-deploy.png

Upload/Upload native strategy页面中,上传您刚才编译好的strategy_strategy101.so策略文件上传到Engine容器中(容器已经内置该策略,此处可以略过)。

thunder-engine-native-deploy-1.png

Strategy卡片中选择您希望部署的策略文件,并且在Parameter configuration卡片中对策略的参数进行必要的设置。根据策略的输入,在Channel configuration卡片中配置一个或多个Slot。

对于每一个Slot,您可以配置一个目标合约,您的策略在启动后会收到来自该Slot对应`行情源`的数据推送。同样,当您对该Slot进行交易操作,例如插入订单、撤销订单等,这些操作会通过对应的交易源发送到交易所。合约的名称必须全局唯一,例如CTP期货合约IF2501的名称为sfit.future.IF2501

Other configuration卡片中,您可以为策略配置自定义名称。当相关配置完成后,点击Submit即可完成Native策略部署。

同样,您可以在部署一个由python编写的策略。 thunder-engine-native-deploy-1.png

切换到Strategy/View strategies选项卡中,您可以查看当前系统中正在执行的策略,包括查看每个策略的部署时间、实时盈亏。

thunder-engine-strategy-view.png

同时,我们可以对策略的交易授权进行调整,独立控制每个策略的开仓平今以及平昨开关。您可以通过Operator菜单删除策略;或者下载当前策略的配置,这样下次您可以直接在Command选项卡中通过该配置文件实现策略快速部署。

点击Show Metrics可以打开单个策略的监控面板。其中包括自定义指标实时监控、系统/策略/交易日志、以及人工干预窗口。

thunder-engine-strategy-dashboard.png

可以通过Grafana组件查看策略运行的性能指标。 thunder-engine-strategy-dashboard.png

日志是监控策略运行是否符合预期的重要途径。Engine分别提供了系统日志策略日志以及交易日志的实施推送。 thunder-engine-strategy-logs.png