## 目录结构
```
.
├── assets
│ └── ddb_dump_journal.csv
├── dolphindb
│ └── project
│ ├── modules
│ └── scripts
├── ipynb
│ ├── ddb.ipynb
│ ├── ddb_pe.ipynb
│ ├── ddb_pit.ipynb
│ ├── dos.ipynb
│ └── mssql.ipynb
├── README.md
└── src
├── DDBBase.py
├── expr
│ └── DDBExpression.py
├── factor
│ └── DDBFactor.py
├── __init__ .py
├── loader
│ ├── DDBBasicInfoLoader.py
│ ├── DDBDailyLoader.py
│ ├── DDBHFTLoader.py
│ ├── DDBLoader.py
│ ├── DDBPITLoader.py
│ ├── make_hft.py
│ └── ProtoBuffEntitys
├── ReadTickFromDB.py
├── run.py
└── script.py
```
## 目录说明
- `assets`
- 程序运行过程中产生、或者依赖的配置数据
- `ddb_dump_jounral.csv` 记录海通高频数据写入DolphinDB的日志( 类似log)
- `dolphindb`
- DolphinDB的客户端Workspace, 主要用来放置dos文件
- 目录结构是DolphinDB的官方Java客户端设定的, 因此略显臃肿
- `ipynb`
- jupyter notebook的存放目录
- 包含开发DolphinDB相关功能的草稿和SQL-Server相关功能的草稿
- `src`
- Python源代码目录, 是工作的主要目录
- 大部分源码文件以`DDB`开头, 表示与DolphinDB相关, 继承和代码复用关系可以进一步优化
- `DDBBase.py` :
- `DDB*` 的基类,包含了一些常用常量
- `run.py` :
- 用于执行具体操作任务的入口脚本
- TODO: 需要支持命令行参数来选择执行功能和配套参数
- `loader` 目录: 代码专门用于向DolphinDB写入数据( 似乎称为Dumper更合适) , 目前包括:
- `DDBLoader.py` : 其他Loader类的基础类
- `DDBHFTLoader.py` :用以导入高频数据(海通高频数据)
- `DDBDailyLoader.py` : 用以导入日频数据( 市场日K线数据)
- `DDBPITLoader.py` : 用以导入低频PIT数据, 主要是财报数据
- `loader/ProtoBuffEntitys` 目录:
- 用以解析海通高频数据中, protobuf字节流的Python辅助代码
- `factor` 目录:用于生成因子
- `DDBFactor.py` :目前只有生成日频因子
- `expr` 目录: 用于支持基于DDB的各种表达式操作
- `DDBExpression.py` :提供了基本的操作表达式,目前包括:
- 通过Function View, 读取DolphinDB的分布式存储表:
- 在任意时间点上,获取所有公司某张财报、指定财报期的最新可见快照
- 在任意时间点上,获取所有公司某张财报中某科目、指定财报期的最新可见快照
- 通过一般Function, 对内存表进行操作:
- 流量表累计数值转单季值
- 跨年同比指标计算(分母为去年基数取绝对值,函数会同时返回当年值和去年基数,以便进一步调整)
## 海通高频数据录入说明
- Python语言从数据库中读取字节流程序并解码还原示例程序在ReadTickFromDB.py中。
- 该函数需要pymssql、gzip、google.protobuf( 可用pip install protobuf安装) 三个外部依赖库需要在运行程序。
- 成功读取后,每个标的会读出并解析成一个结构体数组的数据结构,可以对于该数据进行进一步操作。