一个问题导致了GenericCSVData的实现,它可用于解析不同的 CSV 格式。
GitHub 中的问题,问题 #6清楚地表明需要有一些东西可以实际处理任何传入的 CSV数据馈送。
酱汁在参数声明中:
class GenericCSVData(feed.CSVDataBase): params = ( ('nullvalue', float('NaN')), ('dtformat', '%Y-%m-%d %H:%M:%S'), ('tmformat', '%H:%M:%S'), ('datetime', 0), ('time', -1), ('open', 1), ('high', 2), ('low', 3), ('close', 4), ('volume', 5), ('openinterest', 6), )
因为该类继承自 CSVDataBase,所以可以使用一些标准参数:
fromdate
(采用 datetime 对象来限制开始日期)todate
(采用 datetime 对象)来限制结束日期)headers
(默认值: True ,表示 CSV 数据是否有标题行)separator
(默认:“,”,分隔字段的字符)dataname
(具有 CSV 数据或类似文档对象的文档的名称)
除非您计划运行重采样,否则一些其他参数(例如name
、 compression
和timeframe
)只是提供信息。
当然更重要的是新定义的参数的含义:
包含
datetime
(或日期时间)字段的日期时间(默认值:0)列time
(默认值:-1)列,如果与日期时间字段分开,则包含时间字段(-1 表示它不存在)open
(默认:1),high
(默认:2),low
(默认:3),close
(默认:4),volume
(默认:5),openinterest
(默认:6)包含相应字段的列的索引
如果传递负值(例如:-1),则表示该字段不存在于 CSV 数据中
nullvalue
值(默认值:float('NaN'))如果缺少应该存在的值将使用的值(CSV 字段为空)
dtformat
(默认值:%Y-%m-%d %H:%M:%S)用于解析日期时间 CSV 字段的格式
tmformat
(默认值:%H:%M:%S)如果“存在”,则用于解析时间 CSV 字段的格式(“时间”CSV 字段的默认值不存在)
这可能足以涵盖许多不同的 CSV 格式和缺少值。
涵盖以下要求的示例用法:
将输入限制在 2000 年
HLOC 顺序而不是 OHLC
缺失值替换为零 (0.0)
提供每日条形图,日期时间只是日期,格式为 YYYY-MM-DD
不存在未
openinterest
栏
编码:
import datetime import backtrader as bt import backtrader.feeds as btfeed ... ... data = btfeed.GenericCSVData( dataname='mydata.csv', fromdate=datetime.datetime(2000, 1, 1), todate=datetime.datetime(2000, 12, 31), nullvalue=0.0, dtformat=('%Y-%m-%d'), datetime=0, high=1, low=2, open=3, close=4, volume=5, openinterest=-1 )
稍作修改的要求:
将输入限制在 2000 年
HLOC 顺序而不是 OHLC
缺失值替换为零 (0.0)
提供日内柱,带有单独的日期和时间列
- 日期格式为 YYYY-MM-DD
- 时间格式为 HH.MM.SS
不存在未
openinterest
栏
编码:
import datetime import backtrader as bt import backtrader.feeds as btfeed ... ... data = btfeed.GenericCSVData( dataname='mydata.csv', fromdate=datetime.datetime(2000, 1, 1), todate=datetime.datetime(2000, 12, 31), nullvalue=0.0, dtformat=('%Y-%m-%d'), tmformat=('%H.%M.%S'), datetime=0, time=1, high=2, low=3, open=4, close=5, volume=6, openinterest=-1 )