vnpy/docs/csv_loader.md
2019-07-31 16:36:31 +08:00

65 lines
2.3 KiB
Markdown
Raw Permalink 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数据库为例把上期所的IF1909的历史数据插入到数据库中那么合约代码应该填写rb1909交易所中填写SHFE在本地数据库中会有symbol和exchange两个键值用于索引。
 
## 数据载入
从文件路径中读取CSV文件然后在每一次迭代中载入数据到数据库中。
```
with open(file_path, "rt") as f:
reader = csv.DictReader(f)
for item in reader:
```
 
载入数据的方法可以分成2类
- 直接插入合约代码、交易所、K线周期、成交量、开盘价、最高价、最低价、收盘价、接口名称
- 需要处理日期时间根据其相应的时间格式通过strptime()转化成时间元组、vt_symbol(合约代码.交易所格式如rb1909.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()
```