Dav*_*ock 5 csv algorithmic-trading quantitative-finance pyalgotrade back-testing
但是我不想使用来自yahoo!finance的数据,我想用我自己的但无法弄清楚如何解析CSV,它的格式如下:
Timestamp Low Open Close High BTC_vol USD_vol [8] [9]
2013-11-23 00 800 860 847.666666 886.876543 853.833333 6195.334452 5248330 0
2013-11-24 00 745 847.5 815.01 860 831.255 10785.94131 8680720 0
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
def main(plot):
instruments = ["AA", "AES", "AIG"]
feed = yahoofinance.build_feed(instruments, 2008, 2009, ".")
Run Code Online (Sandbox Code Playgroud)
然后yahoofinance.build_feed(instruments, 2008, 2009, ".")用我的替换CSV
我试过了:
import csv
with open( 'FinexBTCDaily.csv', 'rb' ) as csvfile:
data = csv.reader( csvfile )
def main( plot ):
feed = data
Run Code Online (Sandbox Code Playgroud)
但它会抛出属性错误.任何想法如何做到这一点?
GenericBarFeed按照课堂上的 PyAlgoTrade 文档进行操作在此链接上,请参阅v0.16 中addBarsFromCSV()该类的CSV部分BarFeed
在此链接上,请参阅v0.17中该课程的addBarsFromCSV()CSV部分BarFeed
\n\n\n\n
Note
\n - CSV 文件的第一行必须包含列名称。\n - 如果该列为空
也可以。\n - 当使用多个仪器时:\n --- 如果加载的所有仪器都位于同一时区,则可以不指定时区参数。\n --- 如果加载的任何仪器位于不同时区,则应设置时区参数。\n \n 从 CSV 格式的文件加载给定仪器的条形图。仪器在条形进给中注册。\n \n \xe2\x80\x93 仪器标识符。\n \xe2\x80\x93 CSV 文件的路径。\n \xe2\x80\x93 用于本地化柱的时区。查看。Adj CloseaddBarsFromCSV(instrument, path, timezone = None)Parameters:(string) instrument(string) path(pytz) timezonepyalgotrade.marketsession
下一步:
\nABarFeed从具有以下格式的 CSV 文件加载条形图:
Date Time, Open, High, Low, Close, Volume, Adj Close\n2013-01-01 13:59:00,13.51001,13.56,13.51,13.56789,273.88014126,13.51001\nRun Code Online (Sandbox Code Playgroud)\n\n您的 CSV 数据需要一点理智(之前可以在PyAlgoTrade方法中使用),
但是这是可行的,您可以手动或使用强大的基础工具创建一个简单的转换器。numpy.genfromtxt() lambda-converters
此示例代码旨在用于说明目的,以便立即了解您自己的转换的功能converters,因为 CSV 结构不同。
with open( getCsvFileNAME( ... ), "r" ) as aFH:\n numpy.genfromtxt( aFH,\n skip_header = 1, # Ref. pyalgotrade\n delimiter = ",",\n # v v v v v v \n # 2011.08.30,12:00,1791.20,1792.60,1787.60,1789.60,835\n # 2011.08.30,13:00,1789.70,1794.30,1788.70,1792.60,550\n # 2011.08.30,14:00,1792.70,1816.70,1790.20,1812.10,1222\n # 2011.08.30,15:00,1812.20,1831.50,1811.90,1824.70,2373\n # 2011.08.30,16:00,1824.80,1828.10,1813.70,1817.90,2215\n converters = { 0: lambda aString: mPlotDATEs.date2num( datetime.datetime.strptime( aString, "%Y.%m.%d" ) ), #_______________________________________asFloat ( 1.0, +++ )\n 1: lambda aString: ( ( int( aString[0:2] ) * 60 + int( aString[3:] ) ) / 60. / 24. ) # ( 15*60 + 00 ) / 60. / 24.__asFloat < 0.0, 1.0 )\n # HH: :MM HH MM\n }\n )\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |