vnpy/docs/csv_loader.md
2019-06-28 13:01:37 +08:00

66 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CSV载入模块
CSV载入模块在vnpy根目录下vnpy\app\csv_loader文件夹内engine.py里面的CsvLoaderEngine类负责载入功能实现。
## 初始化配置
初始化数据载入相关信息可以分成3类
- CSV文件路径
- 合约信息合约代码、交易所、K线周期
- CSV表头信息日期时间、开盘价、最高价、最低价、收盘价、成交量
```
self.file_path: str = ''
self.symbol: str = ""
self.exchange: Exchange = Exchange.SSE
self.interval: Interval = Interval.MINUTE
self.datetime_head: str = ''
self.open_head: str = ''
self.close_head: str = ''
self.low_head: str = ''
self.high_head: str = ''
self.volume_head: str = ''
```
以sql数据库为例
合约信息中合约代码是将csv中数据存入至何种品种数据库中。例如在合约代码中填写rb1909在交易所中填写SHFE在本地数据库中会有symbol和exchange两个键值用于索引。
在csv中日期时间一列格式需要为str格式。
 
## 数据载入
从文件路径中读取CSV文件然后在每一次迭代中载入数据到数据库中。
```
with open(file_path, 'rt') as f:
reader = csv.DictReader(f)
for item in reader:
```
 
载入数据的方法可以分成2类
- 直接插入合约代码、交易所、K线周期、成交量、开盘价、最高价、最低价、收盘价、接口名称
- 需要处理日期时间根据其相应的时间格式通过strptime()转化成时间元祖、vt_symbol(合约代码.交易所格式如rb1905.SHFE)
注意db_bar.replace()用于数据更新,即把旧的数据替换成新的。
```
db_bar.symbol = symbol
db_bar.exchange = exchange.value
db_bar.datetime = datetime.strptime(
item[datetime_head], datetime_format
)
db_bar.interval = interval.value
db_bar.volume = item[volume_head]
db_bar.open_price = item[open_head]
db_bar.high_price = item[high_head]
db_bar.low_price = item[low_head]
db_bar.close_price = item[close_head]
db_bar.vt_symbol = vt_symbol
db_bar.gateway_name = "DB"
db_bar.replace()
```