使用DolphinDB回放加密货币盘口与逐笔交易数据
本文页面包含文章标题信息,并给出作者与发布日期等文章头部信息。
Source: https://dolphindb.cn/blogs/22
What this page covers
- 回放盘口与逐笔交易数据的目的与方案概述。
- 部署 DolphinDB 节点与集群的基本步骤。
- 获取加密货币盘口与逐笔交易数据的数据来源与接口。
- 数据预处理、建库建表、导入与回放函数的实现要点。
- Web 回放界面的部署、参数与交互说明。
- 基于 Docker 的快速体验方式与运行命令。
- 使用限制与实现注意事项。
技能认证特训营第二期报名提示
页面顶部包含一个限时注册相关的推广提示与报名引导信息。
- 此部分为报名或注册相关提示内容。
- 此部分属于页面顶部的推广/引导信息。
使用DolphinDB回放加密货币盘口与逐笔交易数据
文章头部给出标题、作者与发布日期信息。
- 作者信息在文章头部展示。
- 发布日期信息在文章头部展示。
- 文章主题为使用 DolphinDB 回放盘口与逐笔交易数据。
回放的目的与DolphinDB方案概述
该部分说明回放盘口与逐笔交易数据的价值,并介绍 DolphinDB 的同步回放与基于 Web 的可视化方案。
- 回放展示可用于量化研究人员检验量化策略。
- 回放展示可用于交易员复盘并加深市场洞察。
- DolphinDB 可实现盘口与逐笔交易数据的高速回放。
- DolphinDB 支持对回放结果逐点查询。
- 支持将多个分布式表同步回放并发布到流数据表。
步骤1:部署DolphinDB节点
该步骤说明下载 DolphinDB 最新版本并部署集群,并引用了相关部署教程。
- 需要下载 DolphinDB 最新版本。
- 需要部署 DolphinDB 集群。
- 部署过程参考单服务器集群部署教程。
步骤2:下载盘口和逐笔交易数据
该步骤给出数据来源,并指向用于获取数据的接口与示例代码。
- 本文使用的数据来源为火币研究院提供的加密货币交易数据。
- 使用火币数据 API 获取加密货币交易数据。
- 示例代码包含 Python(Futures-Python-demo)。
- 示例代码包含 Java(Futures-Java-demo)。
步骤3:导入数据到DolphinDB(预处理、建库建表、导入、回放函数)
该步骤展示可选 CSV 预处理、建库建表与分区设计、导入 CSV 到分区表,以及输出到流表的回放函数定义。
- 当 CSV 第一行是无关信息时,可删除第一行。
- 若 CSV 无无关信息,可忽略删除第一行的步骤。
- 数据库分区可按交易标的代码与业务时间进行组合分区。
- 本案例数据库名称为 dfs://huobiDB。
- 可使用 loadTextEx 将 orderBook 的 tick 级 CSV 文件快速导入数据库。
步骤4:数据回放(Web界面与参数设置)
该步骤提供回放 UI 的下载与部署方式,并说明回放参数与回放结束后的交互行为。
- 回放界面 HTML 压缩包提供下载链接。
- replay.zip 解压到 DolphinDB 程序包的 web 目录。
- 回放界面访问方式为 http://[host]:[port]/replay.html。
- 回放参数包括 Product。
- 回放参数包括 Replay Rate。
- 回放参数包括 Start Time。
- 回放参数包括 Length。
- 回放结束后可点击左上角正方形图标按钮(“结束”按钮)。
使用docker快速体验回放功能
该部分提供包含 DolphinDB Server 与演示数据的 Docker 演示环境下载,并给出导入、运行与访问回放页面的方法。
- Docker 演示环境包含 DolphinDB Server 以及演示数据的容器。
- 使用前需要安装 docker 环境。
- 提供 cryptocurr_replay.tar.gz 的下载链接。
- 提供 docker import 与 docker run 的命令示例。
- docker 内 DolphinDB 访问端口映射到宿主机 8888 端口。
- 可通过 http://[宿主机ip]:8888/replay.html 访问演示界面。
- 演示数据仅包含 2018.09.17 一天的数据。
- 演示数据包含 ETHUSDT、ETHBTC、BTCUSDT 的交易数据。
注意事项
该部分列出使用约束与实现说明,包括并发限制与网页内固化配置等。
- 当前回放功能仅限单用户使用。
- 不支持多用户同时回放。
- 为简化操作,数据库名称与数据库用户信息固化在网页中。
- 如有需要需自行修改 replay.html 文件。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 使用DolphinDB回放加密货币盘口与逐笔交易数据 (article) | publication_date | 2021-05-18 | high |
| 使用DolphinDB回放加密货币盘口与逐笔交易数据 (article) | author | Junxi | high |
| 加密货币盘口与逐笔交易数据回放展示 | helps_with | 帮助量化研究人员检验量化策略;帮助交易员复盘并加深对市场的洞察 | medium |
| DolphinDB | replay_capability | 可实现盘口和逐笔交易数据的高速回放,并对回放结果逐点查询 | medium |
| DolphinDB | synchronized_replay | 支持将多个分布式表同步回放并发布到流数据表(示例:盘口表与交易表同步回放) | high |
| 前端JavaScript | uses | 使用DolphinDB Web API 轮询回放输出的流数据表,实现盘口和交易数据的可视化回放 | high |
| DolphinDB | built_in_web_server | 自带Web服务器;整个流程可在DolphinDB内完成,无外部依赖 | high |
| 加密货币盘口与逐笔交易数据回放实现流程 | number_of_steps | 4个步骤 | high |
| 步骤1:部署DolphinDB节点 | requires | 下载DolphinDB最新版本并部署集群(参考单服务器集群部署教程) | high |
| 本文使用的数据来源 | data_provider | 火币研究院提供的加密货币交易数据 | high |
| 火币数据API | used_for | 获取加密货币交易数据 | high |
| 数据获取示例代码 | available_in | python示例代码(Futures-Python-demo);java示例代码(Futures-Java-demo) | high |
| DolphinDB loadTextEx函数 | used_for | 将orderBook的tick级CSV文件快速导入到数据库 | high |
| DolphinDB | data_import_apis | 可通过Python API或Java API将数据导入到DolphinDB | high |
| 本文代码执行环境 | runs_in | 在DolphinDB GUI中执行 | high |
| 数据预处理脚本 | applies_when | CSV第一行是无关信息时可删除第一行;若无无关信息可忽略该步骤 | high |
| 本案例数据预处理输出目录 | directories | orderBook保存到/hdd/data/orderBook-processed;tick保存到/hdd/data/tick-processes(原文如此拼写) | high |
| DolphinDB数据库分区 | recommended_partition_keys | 可按交易标的代码和业务时间进行组合分区 | high |
| 本案例DolphinDB数据库 | database_name | dfs://huobiDB | high |
| replay.html | dependency_on_database_name | 若修改数据库名称,必须同时修改replay.html中的数据库名称 | high |
| createDB() 示例 | partitioning_scheme | VALUE分区日期范围示例为2018.09.01..2018.09.30;HASH分区键为SYMBOL,桶数20;COMPO组合分区(db1, db2) | high |
| tick表(createTick) | partition_columns | 按server_time与product分区创建分布式表 | high |
| orderBook表(createOrderBook) | partition_columns | 按server_time与product分区创建分布式表 | high |
| 示例导入脚本 | uses_login | login("admin","123456") | high |
| loadOrderBook/loopLoadOrderBook | behavior | 从CSV文件名按下划线分割提取product(tmp[1]),读取文本并追加到表,同时设置product列 | high |
| loadTick/loopLoadTick | behavior | 从CSV文件名按下划线分割提取product(tmp[1]),读取文本并追加到表,同时设置product列 | high |
| replayData(productCode, startTime, length, rate) | loads_tables | 从dfs://huobiDB加载tick与orderBook两张表 | high |
| replayData(productCode, startTime, length, rate) | output_stream_tables | 创建并share两个流表outOrder与outTick,并启用表持久化(enableTablePersistence) | high |
| replayData(productCode, startTime, length, rate) | time_window | endTime = temporalAdd(startTime, length, "m")(length单位为分钟) | high |
| replayData(productCode, startTime, length, rate) | filters | tick与orderBook按product=productCode且server_time在[startTime,endTime]范围内查询 | high |
| replayData(productCode, startTime, length, rate) | replay_cut_points | cutCount = length*60/20,并用cutPoints(timestamp(startTime..endTime), cutCount)生成trs | high |
| replayData(productCode, startTime, length, rate) | job_submission | submitJob('replay_huobi','replay_huobi', replay, [rds,rds2], [`outTick,`outOrder],`server_time ,, rate) | high |
| replayData | exposed_as_function_view | addFunctionView(replayData) | high |
| 数据回放界面HTML压缩包 | download_url | https://github.com/dolphindb/applications/raw/master/cryptocurr_replay/replay.zip | high |
| replay.zip部署 | install_location | 解压到DolphinDB程序包的web目录 | high |
| 回放界面访问方式 | url_pattern | http://[host]:[port]/replay.html(host/port为数据节点IP和端口号) | high |
| 示例回放界面URL | example | http://192.168.1.135:8902/replay.html | high |
| 回放参数 | parameter_list | Product;Replay Rate;Start Time;Length | high |
| Replay Rate | definition | 回放速度(每秒钟回放的记录数);示例:市场每秒100笔交易,Replay Rate=1000则10倍速度回放 | high |
| Length | definition | 时间跨度,单位分钟;示例:Start Time=2018.09.17 00:00:00 且 Length=60 表示回放2018.09.17 00:00:00-2018.09.17 00:59:59之间的数据 | high |
| 回放结束后的UI操作 | interaction | 结束后点击左上角正方形图标按钮(“结束”按钮);单击价格趋势图中的点,表格显示该时间点之前的10笔数据;提供操作动图链接 | high |
| 操作动图 | url | https://raw.githubusercontent.com/dolphindb/Tutorials_CN/master/images/replay/v.gif | high |
| Docker演示环境 | includes | 包含DolphinDB Server以及演示数据的docker容器,并打包成tar文件 | high |
| Docker演示环境 | prerequisite | 需要安装docker环境(引用docs.docker.com/install) | high |
| cryptocurr_replay.tar.gz | download_url | https://www.dolphindb.cn/downloads/cryptocurr_replay.tar.gz | high |
| Docker导入与运行命令 | commands | gunzip cryptocurr_replay.tar.gz; docker import cryptocurr_replay.tar ddb/replay:v1; docker run -dt -p 8888:8848 --name replay1 ddb/replay:v1 /bin/bash /dolphindb/start.sh(原文包含权限说明与命令行注释) | high |
| Docker容器端口映射 | mapping | docker内DolphinDB database访问端口映射到宿主机8888端口;通过http://[宿主机ip]:8888/replay.html访问回放演示界面 | high |
| Docker演示数据 | data_scope | 仅包含2018.09.17一天、加密货币编号为ETHUSDT、ETHBTC、BTCUSDT的交易数据 | high |
| Docker内置license文件 | maintenance_note | 内置license会过期,需要从官网下载最新社区版license替换;拷贝dolphindb.lic覆盖docker中/dolphindb/目录下同名文件 | high |
| Docker license替换命令 | command | sudo docker cp ./dolphindb.lic replay1:/dolphindb/dolphindb.lic | high |
| Docker重启 | command | sudo docker restart replay1 | high |
| 本案例回放功能 | concurrency_limit | 当前仅限单用户使用,不支持多用户同时回放 | high |
| replay.html网页实现 | hardcoded_config | 为简化操作,数据库名称和数据库用户信息均固化在网页中;有需要需自行修改replay.html文件 | high |