0

stackoverflow を少し検索しましたが、解決策が見つかりませんでした。これは、データフレームがまだあまり明確ではないという事実が原因である可能性があります。ボリンジャーバンドを計算する練習をしています。単一の在庫に対して実行しましたが、任意の数のアイテムに対して機能させたいと考えています。現在、私はこれを持っています:

def movingAverage(symbols, dt_start, dt_end, lookback):
    // Symbols = ['AAPL', 'GOOG']

    ldt_timestamps = du.getNYSEdays(dt_start, dt_end, DT_TIME_OF_DAY)

    c_dataobj = da.DataAccess('Yahoo')
    ls_keys = ['close']

    ldf_data = c_dataobj.get_data(ldt_timestamps, symbols, ls_keys)
    d_data = dict(zip(ls_keys, ldf_data))

    closeData = d_data['close']

    d_data['ma'] = d_data['close'].copy() // calculates the Moving Average for ALL stocks
    d_data['std'] = d_data['close'].copy()
    d_data['bollinger'] = d_data['close'].copy()

    d_data['ma'] = pandas.rolling_mean(d_data['close'], lookback, min_periods=lookback)
    d_data['std'] = pandas.rolling_std(d_data['close'], lookback, min_periods=lookback)

maシンボルをループするのではなく、フレーム全体の(移動平均) と(ローリング標準偏差)を計算することに誇りを持っstdていたので、知りたいのは (疑似コード) です。

for all the symbols
    fill in d_data['bollinger'] with
      (d_data['close'] - d_data['ma']) / d_data['std']

close各シンボルに for ループを実行せずに、インデックス付けとシンボル インデックスによってこれを計算することなく、これを実行できると思いdataます。

質問を改善できるかどうか教えてください。

前もって感謝します。

4

1 に答える 1

0

疑似コードで説明したのと同じくらい簡単でした。

d_data['bollinger'] = (d_data['close'] - d_data['ma']) / d_data['std']

このトピックを見てくださった皆様、ありがとうございました。次回はもう少し時間をかけて調査します。

于 2013-10-13T14:54:51.493 に答える