步骤 A:GenericBarFeed
在课堂上遵循 PyAlgoTrade 文档
在此链接上,请参阅v0.16 中课程addBarsFromCSV()
的CSV部分BarFeed
在此链接上,请参阅v0.17 中课程addBarsFromCSV()
的CSV部分BarFeed
Note
- CSV 文件的第一行必须有列名。
- 如果该Adj Close
列为空,则可以。
- 使用多个仪器时:
--- 如果加载的所有仪器都在同一时区,则可能未指定时区参数。
--- 如果加载的任何仪器在不同的时区,则应设置时区参数。
从 CSV 格式的文件中加载给定工具的条形图。仪器在棒料中注册。– 仪器标识符。– CSV 文件的路径。– 用于本地化条的时区。检查。
addBarsFromCSV(
instrument, path, timezone = None
)
Parameters:
(string) instrument
(string) path
(pytz) timezone
pyalgotrade.marketsession
下一步:
ABarFeed
从具有以下格式的 CSV 文件加载条形图:
Date Time, Open, High, Low, Close, Volume, Adj Close
2013-01-01 13:59:00,13.51001,13.56,13.51,13.56789,273.88014126,13.51001
步骤 B:实施记录在案的 CSV 文件预格式化
您的 CSV 数据需要一点理智(之前将能够用于PyAlgoTrade
方法),
但是它是可行的,您可以手动或使用强大的基础设施创建一个简单的转换器。numpy.genfromtxt()
lambda-
converters
此示例代码旨在用于说明目的,以便立即converters
了解您自己的转换的能力,因为 CSV 结构不同。
with open( getCsvFileNAME( ... ), "r" ) as aFH:
numpy.genfromtxt( aFH,
skip_header = 1, # Ref. pyalgotrade
delimiter = ",",
# v v v v v v
# 2011.08.30,12:00,1791.20,1792.60,1787.60,1789.60,835
# 2011.08.30,13:00,1789.70,1794.30,1788.70,1792.60,550
# 2011.08.30,14:00,1792.70,1816.70,1790.20,1812.10,1222
# 2011.08.30,15:00,1812.20,1831.50,1811.90,1824.70,2373
# 2011.08.30,16:00,1824.80,1828.10,1813.70,1817.90,2215
converters = { 0: lambda aString: mPlotDATEs.date2num( datetime.datetime.strptime( aString, "%Y.%m.%d" ) ), #_______________________________________asFloat ( 1.0, +++ )
1: lambda aString: ( ( int( aString[0:2] ) * 60 + int( aString[3:] ) ) / 60. / 24. ) # ( 15*60 + 00 ) / 60. / 24.__asFloat < 0.0, 1.0 )
# HH: :MM HH MM
}
)