コード例 #1
0
ファイル: example.py プロジェクト: titanjer/ta-lib
def abstract_example():
    sma = Function('sma')
    input_arrays = sma.get_input_arrays()
    for key in input_arrays.keys():
        input_arrays[key] = idata
    sma.set_input_arrays(input_arrays)
    odata = sma(30) # timePeriod=30, specified as an arg

    bbands = Function('bbands', input_arrays)
    bbands.set_function_parameters(timePeriod=20, nbDevUp=2, nbDevDown=2)
    upper, middle, lower = bbands() # multiple output values unpacked (these will always have the correct order)

    kama = Function('kama').run(input_arrays) # alternative run() calling method.
    plot(odata, upper, middle, lower, kama)
コード例 #2
0
ファイル: example.py プロジェクト: mysl/ta-lib
def abstract_example():
    sma = Function("sma")
    input_arrays = sma.get_input_arrays()
    for key in input_arrays.keys():
        input_arrays[key] = idata
    sma.set_input_arrays(input_arrays)
    odata = sma(30)  # timePeriod=30, specified as an arg

    bbands = Function("bbands", input_arrays)
    bbands.parameters = {"timeperiod": 20, "nbdevup": 2, "nbdevdn": 2}
    upper, middle, lower = bbands()  # multiple output values unpacked (these will always have the correct order)

    kama = Function("kama").run(input_arrays)  # alternative run() calling method.
    plot(odata, upper, middle, lower, kama)
コード例 #3
0
def abstract_example():
    sma = Function('sma')
    input_arrays = sma.get_input_arrays()
    for key in input_arrays.keys():
        input_arrays[key] = idata
    sma.set_input_arrays(input_arrays)
    odata = sma(30)  # timePeriod=30, specified as an arg

    bbands = Function('bbands', input_arrays)
    bbands.parameters = {'timeperiod': 20, 'nbdevup': 2, 'nbdevdn': 2}
    upper, middle, lower = bbands(
    )  # multiple output values unpacked (these will always have the correct order)

    kama = Function('kama').run(
        input_arrays)  # alternative run() calling method.
    plot(odata, upper, middle, lower, kama)
コード例 #4
0
ファイル: cleaner_talib.py プロジェクト: ajmal017/augustus
class Talib(CleanerBase):
    def __init__(self,
                 ind: str,
                 params: dict,
                 frequency: str = None,
                 buffer_day: int = 5) -> None:
        super().__init__(None, buffer_day, frequency)
        self.indicator = Function(ind)
        self.indicator.set_parameters(params)
        self.rolling_window = self.indicator.lookback + 1
        self.data = defaultdict(dict)  # type:dict[str,dict[str,deque]]

    @staticmethod
    def _check_nan(value: float):
        if isnan(value):
            raise Exception(
                'rolling_window should be longer. Because nan is generated!')

    def _data_proxy(self, ticker: str) -> dict:
        key = f'{ticker}_{self.frequency}'

        return {
            'open': array(self.data[key]['open']),
            'high': array(self.data[key]['high']),
            'low': array(self.data[key]['low']),
            'close': array(self.data[key]['close']),
            'volume': array(self.data[key]['volume'])
        }

    def calculate(self, ticker: str) -> dict:
        self.indicator.set_input_arrays(self._data_proxy(ticker))
        value = list(self.indicator.outputs)

        if len(self.indicator.output_names) > 1:
            [self._check_nan(i[-1]) for i in value]

            return {
                k: v[-1]
                for k, v in zip(self.indicator.output_names, value)
            }
        self._check_nan(value[-1])

        return value[-1]
コード例 #5
0
ファイル: Talib.py プロジェクト: yutiansut/OnePyPlus
class Talib(op.CleanerBase):
    counter = count(1)

    def __init__(self, ind: str, params: dict,
                 buffer_day: int, frequency: str) -> None:
        name = f"{ind}_{next(self.counter)}"
        self.indicator = Function(ind)
        self.indicator.set_parameters(params)
        rolling_window = self.indicator.lookback+1
        super().__init__(name, rolling_window, buffer_day, frequency)
        self.save_to_env(self)

        self.data = self.get_data()

    @staticmethod
    def _check_nan(value: float):
        if isnan(value):
            raise Exception(
                'rolling_window should be longer. Because nan is generated!')

    def _data_proxy(self, ticker: str) -> dict:
        key = f'{ticker}_{self.frequency}'

        return {'open': array(self.data[key].open),
                'high': array(self.data[key].high),
                'low': array(self.data[key].low),
                'close': array(self.data[key].close),
                'volume': array(self.data[key].volume)}

    def calculate(self, ticker: str) -> dict:
        self.indicator.set_input_arrays(self._data_proxy(ticker))
        value = list(self.indicator.outputs)

        if len(self.indicator.output_names) > 1:
            [self._check_nan(i[-1]) for i in value]

            return {k: v[-1]
                    for k, v in zip(self.indicator.output_names, value)}
        self._check_nan(value[-1])

        return value[-1]