installation
以docker容器运行¶
docker run -d --name bt -v /host/config:/config -v /var/log/backtest:/var/log/backtest -e PORT=3180 -p 3180:3180 backtest
上述命令中,将本地配置文件目录/host/config映射到容器中的/config目录,将本地的/var/log/backtest映射到容器的/var/log/backtest,并且指定环境变量PORT=3180,并且将容器的3180端口映射到本地的3180端口。这里本地配置文件目录映射是必须的,否则服务器无法启动。如果指定了/var/log/backtest的映射,则容器的日志将输出到宿主机的/var/log/backtest目录中。
如果不指定PORT,则默认为7080,此时端口映射也应该相应修改为 -p 7080:7080。
Info
这里-e PORT 3180的作用是,让容器内部的backtest服务器监听在3180端口,而-p 3180:3180则是让容器的3180端口映射到本地的3180端口,从而使得外部程序可以访问容器里的服务。
在/host/config目录(这是一个host主机上的目录),创建一个名为defaults.yaml的文件,其内容见配置文件
注意backtest并不支持https。如果https对您而言比较重要,请在backtest server之前增加nginx一类的服务来实现。
本地安装运行¶
To install zillionare-backtest, run this command in your terminal:
1 |
|
安装完成后,通过命令启动服务:
1 |
|
终止服务:
1 |
|
查看服务状态:
1 |
|
配置文件¶
运行backtest之前,必须要给其配置数据源等一些关键信息。该文件为yaml文件,其位置和解析请参考cfg4py的规范。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
|
Important
注意通过容器来使用backtest时,请确保日志文件使用默认位置,即/var/log/backtest,只有这样,您才能将其映射到宿主机上的某个文件夹,因为在容器里,我们为日志文件指定的卷(VOLUME)固定为/var/log/backtest.
Important
注意配置文件中的/backtest/api/trade/
,它用来指定backtest server监听端点的前缀,以便您在多组服务间进行区分。而最终的监听端点,则是prefix + version + command。比如,假设您的服务器地址为192.168.1.1,而端口设置为3180,当前版本为0.3,则您的traderclient应该指向http://192.168.1.1:3180/backtest/api/trade/v0.3/
。您也可以通过访问http://192.168.1.1:3180/
来得到这个监听端点地址。
Info
这里的bt_date
并非 Python 中 logging 模块支持的模式串关键字,它来自于omicron.core.backtestlog,该功能从omicron 2.0.0.a76版本之后提供。使用bt_date
,生成的日志将是回测时间,而非系统时间,这对调试非常有用。
第一部分是告诉backtest如何输出日志。注意这里除了配置一般日志外,还配置了entrust和trade两个事务日志,这两个日志是供数据校验使用的。
然后是关于计算metrics时的参数配置。risk_free_rate是无风险收益率,annual_days是一年的天数,这些都是在计算一些指标,比如sharpe率等时需要的。
auth
字段用于验证管理员身份。
feed
字段目前用于配置数据源。当前只支持一种数据源即zillionare数据源。它要求您的系统中安装有omega服务。
随后出现的redis
和influxdb
字段正是omega服务中,缓存和持久化数据所需要的数据库配置。