Merge pull request #1582 from 1122455801/csv_loader

[Add] csv_loader.md
This commit is contained in:
vn.py 2019-04-11 16:59:15 +08:00 committed by GitHub
commit fa16ceb15f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,63 @@
# CSV载入模块
CSV载入模块在vnpy根目录下vnpy\app\csv_loader文件夹内engine.py里面的CsvLoaderEngine类负责载入功能实现。
## 1. 初始化
初始化数据载入相关信息可以分成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 = ''
```
 
## 2. 数据载入
从文件路径中读取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()
```