如何将自己的数据输入PyAlgoTrade?

Dav*_*ock 5 csv algorithmic-trading quantitative-finance pyalgotrade back-testing

我正在尝试使用PyAlogoTrade事件分析器

但是我不想使用来自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)

完整CSV在这里

我想做的事情如下:

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)

但它会抛出属性错误.任何想法如何做到这一点?

use*_*197 3

步骤 A:GenericBarFeed按照课堂上的 PyAlgoTrade 文档进行操作

\n\n

在此链接上,请参阅v0.16 中addBarsFromCSV()该类的CSV部分BarFeed

\n\n

在此链接上,请参阅v0.17中该课程的addBarsFromCSV()CSV部分BarFeed

\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 Close




addBarsFromCSV( instrument, path, timezone = None )


Parameters:
(string) instrument
(string) path
(pytz) timezone
pyalgotrade.marketsession

\n
\n\n
\n\n

下一步:
\nABarFeed从具有以下格式的 CSV 文件加载条形图:

\n\n
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\n
Run Code Online (Sandbox Code Playgroud)\n\n

步骤 B:实施记录的 CSV 文件预格式化

\n\n

您的 CSV 数据需要一点理智(之前可以在PyAlgoTrade方法中使用),
但是这是可行的,您可以手动或使用强大的基础工具创建一个简单的转换器。numpy.genfromtxt() lambda-converters

\n\n

此示例代码旨在用于说明目的,以便立即了解您自己的转换的功能converters,因为 CSV 结构不同。

\n\n
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                                            )\n
Run Code Online (Sandbox Code Playgroud)\n