我试着在下面编写代码:
from pyalgotrade.feed import csvfeed
feed=csvfeed.Feed("Date","%Y.%M.%d %H:%m:%S")
feed.addValuesFromCSV('/Users/emacsen/Duka_Data/EURUSD_UTC_1 Min_Bid_2005.01.01_2015.10.05.csv')
错误结果是:
dateTime = datetime.datetime.strptime(csvRowDict [自.__ dateTimeColumn] self .__ dateTimeFormat)KeyError:' Date'
如果我使用格式化样式"日期","%Y。%m。%d%H:%M:%S" ,同样的错误:
feed=csvfeed.Feed("Date","%Y.%m.%d %H:%M:%S")
feed.addValuesFromCSV('/Users/emacsen/Duka_Data/EURUSD_UTC_1 Min_Bid_2005.01.01_2015.10.05.csv')
追踪(最近一次呼叫最后一次):
文件"",第1行,
File" /Users/emacsen/anaconda/envs/py2.7/lib/python2.7/site-packages/pyalgotrade/feed/csvfeed.py" ;,第171行,在addValuesFromCSV中 返回BaseFeed.addValuesFromCSV(自我,路径)
文件" /Users/emacsen/anaconda/envs/py2.7/lib/python2.7/site-packages/pyalgotrade/feed/csvfeed.py",第90行,在addValuesFromCSV中 dateTime,rowValues = self .__ rowParser.parseRow(row)
文件" /Users/emacsen/anaconda/envs/py2.7/lib/python2.7/site-packages/pyalgotrade/feed/csvfeed.py",第108行,在parseRow中 dateTime = datetime.datetime.strptime(csvRowDict [self .__ dateTimeColumn],self .__ dateTimeFormat) KeyError:'日期'
如果我使用pandas.read_csv()代替,它可以很好地阅读,那么我的日期格式有什么问题?
csv文件已格式化
Time,Open,High,Low,Close,Volume
2005.01.02 22:00:00,1.35464,1.3548,1.35464,1.3548,152.2
2005.01.02 22:01:00,1.35485,1.35489,1.35464,1.35479,409.1
2005.01.02 22:02:00,1.35492,1.35492,1.3547,1.3547,687.5
2005.01.02 22:03:00,1.35493,1.35501,1.35469,1.35486,604
2005.01.02 22:04:00,1.35485,1.35507,1.35478,1.3548,541.5
最后一栏的交易量为EUR / USD
顺便说一下,pyalgotrade和熊猫一起怎么样?我可以使用pandas读取csv文件并将其传输到pyalgotrade吗?答案 0 :(得分:1)
您有几个错误,KeyError
是因为您试图引用一个不存在的列,它是Time
而不是Date
,第二个是您的格式字符串,您的月份和分钟说明符应该交换:
feed=csvfeed.Feed("Time","%Y.%m.%d %H:%M:%S")
是正确的表单,请参阅文档:http://strftime.org/
关于性能缓慢和与熊猫的兼容性,我不知道,pyalgotrade需要支持numpy
数组才能使用pandas df。