7

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

コンプリートCSVはこちら

私は次のようなことをしたい:

def main(plot):
    instruments = ["AA", "AES", "AIG"]
    feed = yahoofinance.build_feed(instruments, 2008, 2009, ".")

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

しかし、それは属性エラーをスローします。これを行う方法はありますか?

4

3 に答える 3

3

独自の Rowparser と Feed を作成することをお勧めします。これは思ったよりもはるかに簡単です。こちらをご覧ください。yahoofeed

これにより、タイムスタンプなど、必要に応じて日中のデータを処理し、データをクリーンアップすることもできます。

もちろん、別の可能性として、ファイルを解析して保存することもできます。これにより、yahoo フィードのように見えます。あなたの場合、列とタイムスタンプを調整する必要があります。

于 2016-05-25T10:52:01.860 に答える
3

ステップ A:GenericBarFeedクラスで PyAlgoTrade のドキュメントに従います

このリンクで、v0.16 のクラスのCSVセクションを参照addBarsFromCSV()してください。BarFeed

このリンクで、v0.17 のクラスのCSVセクションを参照addBarsFromCSV()してください。BarFeed

Note

- CSV ファイルには、最初の行に列名が含まれている必要があります。・空欄
でもOKです。 - 複数の計測器を操作する 場合: --- ロードされたすべての計測器が同じタイムゾーンにある場合、タイムゾーン パラメータが指定されていない可能性があります。 --- ロードされた計測器のいずれかが異なるタイムゾーンにある場合、タイムゾーン パラメータを設定する必要があります。 CSV 形式のファイルから特定の商品のバーを読み込みます。計器がバーフィードに登録されます。– 機器識別子。– CSV ファイルへのパス。– バーのローカライズに使用するタイムゾーン。確認してください。Adj Close




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
                                                                }
                                            )
于 2016-05-04T11:45:04.720 に答える