コード例 #1
0
ファイル: index_prediction.py プロジェクト: FayolChang/mlp
    def set_factors_labels(self, price=None, ta_list=None, lags=None):
        """
        根据价格数据及选定的指标计算特征
        :return: the factors array DataFrame
        """
        ta_fun_names = ta.get_functions()
        df_price = price if price else self.price_data
        ta_list = ta_list if ta_list else self.dic_factors
        lags = lags if lags else self.ta_lags
        ta_factors = df_price.copy()
        ii = 1
        for j in ta_list:
            if j[0] in ta_fun_names:
                ta_fun = Function(j[0])
                if j[1] == {}:
                    ta_fun = ta_fun
                else:
                    dic_param = dict(ta_fun.parameters)
                    for key1 in dic_param:
                        dic_param[key1] = j[1][key1]
                    ta_fun.parameters = dic_param
                ta_value = ta_fun(df_price)
                if ta_value.size > len(ta_value):
                    ta_factors["%s_%d" % (j[0], ii)] = ta_value.ix[:, 0]
                else:
                    ta_factors["%s_%d" % (j[0], ii)] = ta_value
            ii += 1

        ta_factors['ACC'] = TSSB_TA(df_price).ACC()
        ta_factors['ADOSC'] = TSSB_TA(df_price).ADOSC()

        # 计算lags指标

        if lags > 0:
            ret = pd.DataFrame(index=ta_factors.index)
            columns = ta_factors.columns
            for col in columns:
                for lag in xrange(0, lags):
                    ret[col + "_%s" % str(lag+1)] = ta_factors[col].shift(lag)
        else:
            ret = ta_factors

        # 定义标签: 上涨为1, 下跌为-1
        if self.predict_type == 1:
            labels = df_price['close'].pct_change().shift(-1)  # 预测明收盘与今收盘的涨跌
        else:
            labels = (df_price['close'] - df_price['open']).shift(-1)  # 预测明收盘与明开盘的涨跌

        labels[labels >= 0] = 1
        labels[labels < 0] = 0

        ret = ret.dropna()
        labels = labels[ret.index]
        self.ta_factors, self.labels = ret, labels
        return ret, labels
コード例 #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
ファイル: index_prediction.py プロジェクト: FayolChang/mlp
 def __ta_look_back(self):
     """
     获取所需回溯历史数据的长度,计算技术指标时需要n天前的数据,同时预测涨跌时又要windows_size的历史指标
     :return:
     """
     ta_fun_names = ta.get_functions()
     lk_list = []
     for j in self.dic_factors:
         if j[0] in ta_fun_names:
             ta_fun = Function(j[0])
             if j[1] == {}:
                 continue
             else:
                 dic_param = dict(ta_fun.parameters)
                 for key1 in dic_param:
                     dic_param[key1] = j[1][key1]
                     ta_fun.parameters = dic_param
             lk = ta_fun.lookback
             lk_list.append(lk)
         else:
             pass
     ret = max(lk_list)
     return ret