0

Pyalgotrade ライブラリの list 関数を使用して、Python で Ultimate Oscillator を作成しようとしています。

私のコードは以下の通りです:

from pyalgotrade.tools import yahoofinance
from pyalgotrade import strategy
from pyalgotrade.barfeed import yahoofeed
from pyalgotrade.technical import stoch
from pyalgotrade import dataseries
from pyalgotrade.technical import ma
from pyalgotrade import technical
from pyalgotrade.technical import highlow
from pyalgotrade import bar
from pyalgotrade import talibext
import numpy
import talib

class MyStrategy(strategy.BacktestingStrategy):
    def __init__(self, feed, instrument):
        strategy.BacktestingStrategy.__init__(self, feed)

        self.__instrument = instrument

    barDs = self.getFeed().getDataSeries("002389.SZ")

    self.__ultosc = indicator.ULTOSC(barDs, 36)

    bar = bars[self.__instrument]
    self.info("%0.2f, %0.2f" % (bar.getClose(), self.__ultosc[-1]))


# Downdload then Load the yahoo feed from the CSV file
yahoofinance.download_daily_bars('002389.SZ', 2013, '002389.csv')
feed = yahoofeed.Feed()
feed.addBarsFromCSV("002389.SZ", "002389.csv")

# Evaluate the strategy with the feed's bars.
myStrategy = MyStrategy(feed, "002389.SZ")
myStrategy.run()

そして、次のようなエラーが発生しました。

  File "/Users/johnhenry/Desktop/untitled.py", line 23, in onBars
    self.__ultosc = indicator.ULTOSC(barDs, 36)
NameError: global name 'indicator' is not defined

関数はhttp://gbeced.github.io/pyalgotrade/docs/v0.15/html/talib.htmlにあります。

アルティメットオシレーター:

pyalgotrade.talibext.indicator.ULTOSC(棒数、カウント、期間 1=-2147483648、期間 2=-2147483648、期間 3=-2147483648)

4

1 に答える 1

0

をインポートしていないかindicator、定義されているモジュールを介して参照していません。これを変更します。

self.__ultosc = indicator.ULTOSC(barDs, 36)

の中へ:

self.__ultosc = talibext.indicator.ULTOSC(barDs, 36)

そして、それはうまくいくはずです。

于 2014-04-10T06:19:55.683 に答える