示例#1
0
    def test_DX(self):
        class MyDX(OperatorDX):
            def __init__(self, name, **kwargs):
                super(MyDX, self).__init__(100, name, **kwargs)

        self.env.add_operator('dx', {
            'operator': MyDX,
        })
        string = 'dx(14, high, low, close)'
        gene = self.env.parse_string(string)
        self.assertRaises(IndexError, gene.eval, self.env, self.dates[98],
                          self.dates[-1])
        df = gene.eval(self.env, self.dates[99], self.dates[100])
        ser0, ser1 = df.iloc[0], df.iloc[1]
        h = self.env.get_data_value('high').values
        l = self.env.get_data_value('low').values
        c = self.env.get_data_value('close').values
        res0, res1, res = [], [], []
        for i, val in ser0.iteritems():
            res0.append(
                talib.DX(h[:100, i], l[:100,
                                       i], c[:100,
                                             i], timeperiod=14)[-1] == val)
        for i, val in ser1.iteritems():
            res1.append(
                talib.DX(h[1:100 + 1, i],
                         l[1:100 + 1, i],
                         c[1:100 + 1, i],
                         timeperiod=14)[-1] == val)
            res.append(
                talib.DX(h[:100 + 1, i],
                         l[:100 + 1, i],
                         c[:100 + 1, i],
                         timeperiod=14)[-1] != val)
        self.assertTrue(all(res0) and all(res1) and any(res))
示例#2
0
 def DMI(single_stock_df, col_h='high', col_l='low', col_c='close', timeperiod=14):
     """
     计算DMI指标(DI、MINUS_DI 、ADX、ADXR),timeperiod=14
     重要参数:high最高价 low最低价 close收盘价,此处算出为负值需要取绝对值
     """
     single_stock_df['dmi_di'] = talib.DX(single_stock_df[col_h], single_stock_df[col_l],single_stock_df[col_c],timeperiod=timeperiod)
     single_stock_df['dmi_mdi'] = talib.MINUS_DI(single_stock_df[col_h], single_stock_df[col_l],
                                          single_stock_df[col_c], timeperiod=timeperiod)
     single_stock_df['dmi_adx'] = talib.ADX(single_stock_df[col_h], single_stock_df[col_l],
                                          single_stock_df[col_c], timeperiod=timeperiod)
     single_stock_df['dmi_adxr'] = talib.DX(single_stock_df[col_h], single_stock_df[col_l],
                                          single_stock_df[col_c], timeperiod=timeperiod)
     return single_stock_df
示例#3
0
    def AverageDirectionalIndex(self, timeperiod=14):
        '''
        Average Direction Movement Index (ADX)
        
        ADX is used to determine the stength of a trend.
        
        If -DI is above the +DX, down trend
        If -DI is below the +DX, up trend
        ADX below 20, price is trendless
        ADX above 20, price is trending

        Parameters
        ----------
        timeperiod : TYPE, optional
            DESCRIPTION. The default is 14.

        Returns
        -------
        TYPE
            DESCRIPTION.

        '''

        dmi = pd.DataFrame()

        # Need to figure out if it should be PLUS_DM, MINUS_DM, MINUS_DI, PLUS_DI, Directional Movement Index or Average Directional Movement Index

        dmi['+di'] = ta.PLUS_DM(self.data.high, self.data.low, timeperiod)
        dmi['-di'] = ta.MINUS_DM(self.data.high, self.data.low, timeperiod)
        dmi['dmi'] = ta.DX(self.data.high, self.data.low, self.data.close,
                           timeperiod)

        return dmi
示例#4
0
def generate_feature(data):
    high = data.High.values
    low = data.Low.values
    close = data.Close.values

    feature_df = pd.DataFrame(index=data.index)
    feature_df["ADX"] = ADX = talib.ADX(high, low, close, timeperiod=14)
    feature_df["ADXR"] = ADXR = talib.ADXR(high, low, close, timeperiod=14)
    feature_df["APO"] = APO = talib.APO(close, fastperiod=12, slowperiod=26, matype=0)
    feature_df["AROONOSC"] = AROONOSC = talib.AROONOSC(high, low, timeperiod=14)
    feature_df["CCI"] = CCI = talib.CCI(high, low, close, timeperiod=14)
    feature_df["CMO"] = CMO = talib.CMO(close, timeperiod=14)
    feature_df["DX"] = DX = talib.DX(high, low, close, timeperiod=14)
    feature_df["MINUS_DI"] = MINUS_DI = talib.MINUS_DI(high, low, close, timeperiod=14)
    feature_df["MINUS_DM"] = MINUS_DM = talib.MINUS_DM(high, low, timeperiod=14)
    feature_df["MOM"] = MOM = talib.MOM(close, timeperiod=10)
    feature_df["PLUS_DI"] = PLUS_DI = talib.PLUS_DI(high, low, close, timeperiod=14)
    feature_df["PLUS_DM"] = PLUS_DM = talib.PLUS_DM(high, low, timeperiod=14)
    feature_df["PPO"] = PPO = talib.PPO(close, fastperiod=12, slowperiod=26, matype=0)
    feature_df["ROC"] = ROC = talib.ROC(close, timeperiod=10)
    feature_df["ROCP"] = ROCP = talib.ROCP(close, timeperiod=10)
    feature_df["ROCR100"] = ROCR100 = talib.ROCR100(close, timeperiod=10)
    feature_df["RSI"] = RSI = talib.RSI(close, timeperiod=14)
    feature_df["ULTOSC"] = ULTOSC = talib.ULTOSC(high, low, close, timeperiod1=7, timeperiod2=14, timeperiod3=28)
    feature_df["WILLR"] = WILLR = talib.WILLR(high, low, close, timeperiod=14)
    feature_df = feature_df.fillna(0.0)

    matrix = np.stack((
        ADX, ADXR, APO, AROONOSC, CCI, CMO, DX, MINUS_DI, ROCR100, ROC,
        MINUS_DM, MOM, PLUS_DI, PLUS_DM, PPO, ROCP, WILLR, ULTOSC, RSI))
    matrix = np.nan_to_num(matrix)
    matrix = matrix.transpose()

    return feature_df, matrix
示例#5
0
文件: momentum.py 项目: tmcmh/pyEX
def dx(
    client,
    symbol,
    timeframe="6m",
    highcol="high",
    lowcol="low",
    closecol="close",
    period=14,
):
    """This will return a dataframe of
    Directional Movement Index
    for the given symbol across the given timeframe

    Args:
        client (pyEX.Client): Client
        symbol (string): Ticker
        timeframe (string): timeframe to use, for pyEX.chart
        highcol (string): column to use to calculate
        lowcol (string): column to use to calculate
        closecol (string): column to use to calculate
        period (int): period to calculate across

    Returns:
        DataFrame: result
    """
    df = client.chartDF(symbol, timeframe)
    x = t.DX(df[highcol].values, df[lowcol].values, df[closecol].values, period)
    return pd.DataFrame(
        {
            highcol: df[highcol].values,
            lowcol: df[lowcol].values,
            closecol: df[closecol].values,
            "dx": x,
        }
    )
示例#6
0
 def compDX(self):
     dx = talib.DX(self.high,self.low,self.close,timeperiod=self.lookback)
     self.removeNullID(dx)
     self.rawFeatures['DX'] = dx
     
     FEATURE_SIZE_DICT['DX'] = 1
     return
示例#7
0
文件: tech.py 项目: le0l1/ML4T
def get_features(data):
    tech_data = pd.DataFrame(index=data.index);

    for t in periods_list:
        tech_data[f'SMA_{t}'] = talib.SMA(data.close,timeperiod=t)
        tech_data[f'MOM_{t}'] = talib.MOM(data.close, timeperiod=t)
        tech_data[f'RSI_{t}'] = talib.RSI(data.close, timeperiod=t)
        tech_data[f'MA_{t}'] = talib.MA(data.close, timeperiod=t)
        tech_data[f'DX_{t}'] = talib.DX(data.high, data.low, data.close, timeperiod=t)
        tech_data[f'volume_change_{t}'] = data.volume.pct_change(periods=t)
        tech_data[f'volatility_{t}'] = data.close.pct_change(periods=t).std()
        tech_data[f'ADX_{t}'] = talib.ADX(data.high, data.low, data.close, timeperiod=t)
        tech_data[f'ADXR_{t}'] = talib.ADXR(data.high, data.low, data.close, timeperiod=t)
        tech_data[f'AROONOSC_{t}'] = talib.AROONOSC(data.high, data.low, timeperiod=t)
        tech_data[f'ROC_{t}'] = talib.ROC(data.close, timeperiod=t)
        tech_data[f'BIAS_{t}'] = (data['close'] - data['close'].rolling(t, min_periods=1).mean())/ data['close'].rolling(t, min_periods=1).mean()*100
        tech_data[f'BOLL_upper_{t}'], tech_data[f'BOLL_middle_{t}'], tech_data[f'BOLL_lower_{t}'] = talib.BBANDS(
                data.close,
                timeperiod=t,
                nbdevup=2,
                nbdevdn=2,
                matype=0)

    tech_data['SAR'] = talib.SAR(data.high, data.low)
    tech_data['AD'] = talib.AD(data.high, data.low, data.close, data.volume)
    tech_data['OBV'] = talib.OBV(data.close, data.volume)
    tech_data['target'] = data.close.pct_change().shift(-1).apply(lambda x: 1 if x > 0 else -1).fillna(0)
    tech_data['time'] = data.time
    tech_data = tech_data.set_index('time')

    reduce(lambda x, y: cross_over(x, y, tech_data), periods_list)
    
    features = list(set(tech_data.columns) - set(data.columns) - set(['target'])) 
    return tech_data.dropna(), features
示例#8
0
def getMomentumIndicators(df):

    high = df['High']
    low = df['Low']
    close = df['Close']
    open = df['Open']
    volume = df['Volume']
    df['ADX'] = ta.ADX(high, low, close, timeperiod=14)
    df['SMA'] = ta.ADXR(high, low, close, timeperiod=14)
    df['APO'] = ta.APO(close, fastperiod=12, slowperiod=26, matype=0)
    df['AROONDOWN'], df['AROOONUP'] = ta.AROON(high, low, timeperiod=14)
    df['AROONOSC'] = ta.AROONOSC(high, low, timeperiod=14)
    df['BOP'] = ta.BOP(open, high, low, close)
    df['CCI'] = ta.CCI(high, low, close, timeperiod=14)
    df['CMO'] = ta.CMO(close, timeperiod=14)
    df['DX'] = ta.DX(high, low, close, timeperiod=14)
    df['MACD'], df['MACDSIGNAL'], df['MACDHIST'] = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
    df['MFI'] = ta.MFI(high, low, close, volume, timeperiod=14)
    df['MINUS_DI'] = ta.MINUS_DI(high, low, close, timeperiod=14)
    df['MINUS_DM']= ta.MINUS_DM(high, low, timeperiod=14)
    df['MOM'] = ta.MOM(close, timeperiod=10)
    df['PLUS_DM'] =ta.PLUS_DM(high, low, timeperiod=14)
    df['PPO'] = ta.PPO(close, fastperiod=12, slowperiod=26, matype=0)
    df['ROC'] = ta.ROC(close, timeperiod=10)
    df['ROCP'] = ta.ROCP(close, timeperiod=10)
    df['ROCR'] = ta.ROCR(close, timeperiod=10)
    df['ROCR100'] = ta.ROCR100(close, timeperiod=10)
    df['RSI'] = ta.RSI(close, timeperiod=14)
    df['SLOWK'], df['SLOWD'] = ta.STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
    df['FASTK'], df['FASTD'] = ta.STOCHF(high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)
    df['FASTK2'], df['FASTD2'] = ta.STOCHRSI(close, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0)
    df['TRIX'] = ta.TRIX(close, timeperiod=30)
    df['ULTOSC'] = ta.ULTOSC(high, low, close, timeperiod1=7, timeperiod2=14, timeperiod3=28)
    df['WILLR'] = ta.WILLR(high, low, close, timeperiod=14)
示例#9
0
	def momentum(self):
		adx = talib.ADX(self.high,self.low,self.close,self.period)
		adxr = talib.ADXR(self.high,self.low,self.close,self.period)
		apo = talib.APO(self.high,self.low,self.close,self.period)
		aroondown, aroonup = talib.AROON(self.high, self.low, period)
		aroonosc = talib.AROONOSC(self.high,self.low,self.period)
		bop  = talib.BOP(self.opens,self.high,self.low,self.close)
		cci = talib.CCI(self.high,self.low,self.close,self.period)
		cmo = talib.CMO(self.close,self.period)
		dx = talib.DX(self.high,self.low,self.close,self.period)
		macd, macdsignal, macdhist = talib.MACD(self.close, fastperiod=period, slowperiod=period*5, signalperiod=period*2)
		macd1, macdsignal1, macdhist1 = talib.MACDEXT(self.close, fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0)
		macd2, macdsignal2, macdhist2 = talib.MACDFIX(self.close, signalperiod=9)
		mfi = talib.MFI(self.high, self.low, self.close, self.volume, timeperiod=14)
		minus_di = talib.MINUS_DI(self.high, self.low, self.close, timeperiod=14)
		minus_dm = talib.MINUS_DM(self.high, self.low, timeperiod=14)
		mom = talib.MOM(self.close, timeperiod=10)
		plus_di = talib.PLUS_DI(self.high, self.low, self.close, timeperiod=14)
		plus_dm = talib.PLUS_DM(self.high, self.low, timeperiod=14)
		ppo  = talib.PPO(self.close, fastperiod=12, slowperiod=26, matype=0)
		roc  = talib.ROC(self.close, timeperiod=10)
		rocp = talib.ROCP(self.close, timeperiod=10)
		rocr = talib.ROCR(self.close, timeperiod=10)
		rocr100 = talib.ROCR100(self.close, timeperiod=10)
		rsi =  talib.RSI(self.close, timeperiod=14)
		slowk, slowd = talib.STOCH(self.high, self.low, self.close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
		fastk, fastd = talib.STOCHF(self.high, self.low, self.close, fastk_period=5, fastd_period=3, fastd_matype=0)
		fastk1, fastd1 = talib.STOCHRSI(self.close, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0)
		trix = talib.TRIX(self.close, timeperiod=30)
		ultosc = talib.ULTOSC(self.high, self.low, self.close, timeperiod1=7, timeperiod2=14, timeperiod3=28)
		willr = talib.WILLR(self.high, self.low, self.close, timeperiod=14)
示例#10
0
def add_indicators(df):
    high = df["HA_High"].values
    close = df["HA_Close"].values
    low = df["HA_Low"].values
    _open = df["HA_Open"].values
    volume = df["volume"].values.astype('uint32')

    df["APO"] = talib.APO(close, fastperiod=9, slowperiod=21, matype=0)
    df["APO"] = talib.APO(close, fastperiod=9, slowperiod=21, matype=0)
    df["aroondown"], df["aroonup"] = talib.AROON(high, low, timeperiod=14)
    df["BOP"] = talib.BOP(_open, high, low, close)
    df["CCI"] = talib.CCI(high, low, close, timeperiod=10)
    df["DX"] = talib.DX(high, low, close, timeperiod=10)
    df["MOM"] = talib.MOM(close, timeperiod=10)
    df["slowk"], df["slowd"] = talib.STOCH(high,
                                           low,
                                           close,
                                           fastk_period=5,
                                           slowk_period=3,
                                           slowk_matype=0,
                                           slowd_period=3,
                                           slowd_matype=0)
    df["OBV"] = talib.OBV(close, np.asarray(volume, dtype='float'))
    df["ADOSC"] = talib.ADOSC(high,
                              low,
                              close,
                              np.asarray(volume, dtype='float'),
                              fastperiod=3,
                              slowperiod=10)
    df["upperband"], df["middleband"], df["lowerband"] = talib.BBANDS(
        close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

    return df
示例#11
0
 def dx(self, n, array=False):
     """
     DX.
     """
     result = talib.DX(self.high, self.low, self.close, n)
     if array:
         return result
     return result[-1]
示例#12
0
 def dx(self, n: int, array: bool = False) -> Union[float, np.ndarray]:
     """
     DX.
     """
     result = talib.DX(self.high, self.low, self.close, n)
     if array:
         return result
     return result[-1]
示例#13
0
 def add_dx_ft(df, daily_count, count):
     for idx in range(1, count + 1):
         col_name = 'DX_' + str(idx)
         df[col_name] = talib.DX(df.high,
                                 df.low,
                                 df.close,
                                 timeperiod=daily_count * idx)
     return df
 def DX(self, timeperiod=14):
     real_data = np.array([self.df.high, self.df.low, self.df.close], dtype='f8')
     dx = talib.DX(real_data[0], real_data[1], real_data[2], timeperiod=timeperiod)
     # return go.Scatter(
     #     x=self.df.index,
     #     y=dx,
     #     name='DX'
     # )
     return dx
示例#15
0
 def results(self, data_frame):
     try:
         directional_index = talib.DX(
             data_frame['%s_High' % self.symbol].values,
             data_frame['%s_Low' % self.symbol].values,
             data_frame['%s_Close' % self.symbol].values,
             timeperiod=self.period)
         data_frame[self.value] = directional_index
     except KeyError:
         data_frame[self.value] = np.nan
def generate_feature(data):
    high = data.High.values
    low = data.Low.values
    close = data.Close.values

    # feature_df = pd.DataFrame(index=data.index)
    feature_df = data.copy()
    feature_df["ADX"] = ADX = talib.ADX(high, low, close, timeperiod=14)
    feature_df["ADXR"] = ADXR = talib.ADXR(high, low, close, timeperiod=14)
    feature_df["APO"] = APO = talib.APO(close,
                                        fastperiod=12,
                                        slowperiod=26,
                                        matype=0)
    feature_df["AROONOSC"] = AROONOSC = talib.AROONOSC(high,
                                                       low,
                                                       timeperiod=14)
    feature_df["CCI"] = CCI = talib.CCI(high, low, close, timeperiod=14)
    feature_df["CMO"] = CMO = talib.CMO(close, timeperiod=14)
    feature_df["DX"] = DX = talib.DX(high, low, close, timeperiod=14)
    feature_df["MINUS_DI"] = MINUS_DI = talib.MINUS_DI(high,
                                                       low,
                                                       close,
                                                       timeperiod=14)
    feature_df["MINUS_DM"] = MINUS_DM = talib.MINUS_DM(high,
                                                       low,
                                                       timeperiod=14)
    feature_df["MOM"] = MOM = talib.MOM(close, timeperiod=10)
    feature_df["PLUS_DI"] = PLUS_DI = talib.PLUS_DI(high,
                                                    low,
                                                    close,
                                                    timeperiod=14)
    feature_df["PLUS_DM"] = PLUS_DM = talib.PLUS_DM(high, low, timeperiod=14)
    feature_df["PPO"] = PPO = talib.PPO(close,
                                        fastperiod=12,
                                        slowperiod=26,
                                        matype=0)
    feature_df["ROC"] = ROC = talib.ROC(close, timeperiod=10)
    feature_df["ROCP"] = ROCP = talib.ROCP(close, timeperiod=10)
    feature_df["ROCR100"] = ROCR100 = talib.ROCR100(close, timeperiod=10)
    feature_df["RSI"] = RSI = talib.RSI(close, timeperiod=14)
    feature_df["ULTOSC"] = ULTOSC = talib.ULTOSC(high,
                                                 low,
                                                 close,
                                                 timeperiod1=7,
                                                 timeperiod2=14,
                                                 timeperiod3=28)
    feature_df["WILLR"] = WILLR = talib.WILLR(high, low, close, timeperiod=14)
    feature_df = feature_df.fillna(0.0)

    # Exclude columns you don't want
    feature_df = feature_df[feature_df.columns[
        ~feature_df.columns.isin(['Open', 'High', 'Low', 'Close'])]]
    matrix = feature_df.values

    return feature_df, matrix
示例#17
0
    def dx(self, sym, frequency, *args, **kwargs):
        if not self.kbars_ready(sym, frequency):
            return []

        highs = self.high(sym, frequency)
        lows = self.low(sym, frequency)
        closes = self.close(sym, frequency)

        v = ta.DX(highs, lows, closes, *args, **kwargs)

        return v
示例#18
0
def ADX(DF,N=14):
    H = DF['high']
    L = DF['low']
    C = DF['close']

    PDI = ta.PLUS_DI(H.values,L.values,C.values,N)

    MDI = ta.MINUS_DI(H.values,L.values,C.values,N)
    DX = ta.DX(H.values,L.values,C.values,N)
    ADX = ta.ADX(H.values,L.values,C.values,N)
    VAR = pd.DataFrame({'PDI':PDI,'MDI':MDI,'DX':DX,'ADX':ADX},index=H.index.values)
    return VAR
示例#19
0
def DX(high, low, close, timeperiod=14):
    ''' Directional Movement Index DMI指标又叫动向指标或趋向指标

    分组: Momentum Indicator 动量指标

    简介: 通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,
    即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,
    从而提供对趋势判断依据的一种技术指标。

    real = DX(high, low, close, timeperiod=14)
    '''
    return talib.DX(high, low, close, timeperiod)
示例#20
0
 def get_momentum_studies(open, low, high, close, volume, df):
     # Momentum studies
     # https://mrjbq7.github.io/ta-lib/func_groups/momentum_indicators.html
     df['MACD'], df['MACD_SIGN'], df['MACD_HIST'] = talib.MACD(
         close, fastperiod=12, slowperiod=26, signalperiod=9)
     df['STOCH-SLOW-K'], df['STOCH-SLOW-D'] = talib.STOCH(high,
                                                          low,
                                                          close,
                                                          fastk_period=5,
                                                          slowk_period=3,
                                                          slowk_matype=0,
                                                          slowd_period=3,
                                                          slowd_matype=0)
     df['STOCH-FAST-K'], df['STOCH-FAST-D'] = talib.STOCHF(high,
                                                           low,
                                                           close,
                                                           fastk_period=5,
                                                           fastd_period=3,
                                                           fastd_matype=0)
     df['STOCH-RSI-K'], df['STOCH-RSI-D'] = talib.STOCHRSI(close,
                                                           timeperiod=14,
                                                           fastk_period=5,
                                                           fastd_period=3,
                                                           fastd_matype=0)
     df['AROON-DOWN'], df['AROON-UP'] = talib.AROON(high,
                                                    low,
                                                    timeperiod=14)
     df["MINUS_DI"] = talib.MINUS_DI(high, low, close, timeperiod=14)
     df["MINUS_DM"] = talib.MINUS_DM(high, low, timeperiod=14)
     df["PLUS_DI"] = talib.PLUS_DI(high, low, close, timeperiod=14)
     df["PLUS_DM"] = talib.PLUS_DM(high, low, timeperiod=14)
     df["MOM"] = talib.MOM(close, timeperiod=10)
     df["MFI"] = talib.MFI(high, low, close, volume, timeperiod=14)
     df["ADX"] = talib.ADX(high, low, close, timeperiod=14)
     df["ADXR"] = talib.ADXR(high, low, close, timeperiod=14)
     df["APO"] = talib.APO(close, fastperiod=12, slowperiod=26, matype=0)
     df["AROONOSC"] = talib.AROONOSC(high, low, timeperiod=14)
     df["BOP"] = talib.BOP(open, high, low, close)
     df["CCI"] = talib.CCI(high, low, close, timeperiod=14)
     df["CMO"] = talib.CMO(close, timeperiod=14)
     df["DX"] = talib.DX(high, low, close, timeperiod=14)
     df["PPO"] = talib.PPO(close, fastperiod=12, slowperiod=26, matype=0)
     df["ROC"] = talib.ROC(close, timeperiod=10)
     df["RSI"] = talib.RSI(close, timeperiod=14)
     df["TRIX"] = talib.TRIX(close, timeperiod=30)
     df["ULT"] = talib.ULTOSC(high,
                              low,
                              close,
                              timeperiod1=7,
                              timeperiod2=14,
                              timeperiod3=28)
     df["WILLR"] = talib.WILLR(high, low, close, timeperiod=14)
示例#21
0
def add_DX(self, timeperiod=14, type='line', color='secondary', **kwargs):
    """Directional Movement Index."""

    if not (self.has_high and self.has_low and self.has_close):
        raise Exception()

    utils.kwargs_check(kwargs, VALID_TA_KWARGS)
    if 'kind' in kwargs:
        type = kwargs['kind']

    name = 'DX({})'.format(str(timeperiod))
    self.sec[name] = dict(type=type, color=color)
    self.ind[name] = talib.DX(self.df[self.hi].values, self.df[self.lo].values,
                              self.df[self.cl].values, timeperiod)
示例#22
0
def dx(candles: np.ndarray, period: int = 14, sequential: bool = False) -> Union[float, np.ndarray]:
    """
    DX - Directional Movement Index

    :param candles: np.ndarray
    :param period: int - default: 14
    :param sequential: bool - default: False

    :return: float | np.ndarray
    """
    candles = slice_candles(candles, sequential)

    res = talib.DX(candles[:, 3], candles[:, 4], candles[:, 2], timeperiod=period)

    return res if sequential else res[-1]
示例#23
0
    def strategy_adx_di(self) -> list:
        adx = talib.DX(self.high, self.low, self.close)
        plus_di = talib.PLUS_DI(self.high, self.low, self.close)
        minus_di = talib.MINUS_DI(self.high, self.low, self.close)
        signal = []
        for i in range(len(adx)):
            if adx[i] < 25:
                signal.append(0)
            else:
                if plus_di[i] > minus_di[i]:
                    signal.append(100)
                else:
                    signal.append(-100)

        return signal
示例#24
0
文件: dx.py 项目: Deanzou/jesse
def dx(candles: np.ndarray, period=14, sequential=False) -> Union[float, np.ndarray]:
    """
    DX - Directional Movement Index

    :param candles: np.ndarray
    :param period: int - default: 14
    :param sequential: bool - default=False

    :return: float | np.ndarray
    """
    if not sequential and len(candles) > 240:
        candles = candles[-240:]

    res = talib.DX(candles[:, 3], candles[:, 4], candles[:, 2], timeperiod=period)

    return res if sequential else res[-1]
示例#25
0
    def GetTi(self):

        C = np.array(self.df['收盤'], dtype=float, ndmin=1)
        H = np.array(self.df['最高'], dtype=float, ndmin=1)
        L = np.array(self.df['最低'], dtype=float, ndmin=1)

        # -------- Average Directional Movement Index Begin . --------
        self.df['PLUS_DI'] = talib.PLUS_DI(H, L, C, timeperiod=14)
        self.df['MINUS_DI'] = talib.MINUS_DI(H, L, C, timeperiod=14)
        self.df['DX'] = talib.DX(H, L, C, timeperiod=14)
        self.df['ADX'] = talib.ADX(H, L, C, timeperiod=14)
        # ------- Average Directional Movement Index End . --------

        # -------- Bollinger Bands Begin. --------
        # 布林 是 OK,但倒過來

        self.df['tmpMA20'] = talib.SMA(C, 20)
        self.df['tmpMA60'] = talib.SMA(C, 60)

        self.df['Upperband'], self.df['Middleband'], self.df[
            'Dnperband'] = talib.BBANDS(C,
                                        timeperiod=20,
                                        nbdevup=2,
                                        nbdevdn=2,
                                        matype=0)
        self.df['%BB'] = (C - self.df['Dnperband']) / (self.df['Upperband'] -
                                                       self.df['Dnperband'])
        self.df['W20'] = (self.df['Upperband'] -
                          self.df['Dnperband']) / self.df['tmpMA20']
        # -------- Bollinger Bands Begin. --------

        # ---------------- 乖離 指標 Begin. ------------------------
        # 乖離 OK, 但比較是倒過來
        # 20 Bias=(C-SMA20)/SMA20
        # 60 Bias=(C-SMA60)/SMA60
        self.df['20 Bias'] = (C - self.df['tmpMA20']) / self.df['tmpMA20']
        self.df['60 Bias'] = (C - self.df['tmpMA60']) / self.df['tmpMA60']

        self.df.drop('tmpMA60', axis=1, level=None, inplace=True)
        self.df.drop('tmpMA20', axis=1, level=None, inplace=True)
        # ---------------- 乖離 指標 End. ------------------------

        self.df = self.df.iloc[::-1]
示例#26
0
def dx(candles: np.ndarray,
       period: int = 14,
       sequential: bool = False) -> Union[float, np.ndarray]:
    """
    DX - Directional Movement Index

    :param candles: np.ndarray
    :param period: int - default: 14
    :param sequential: bool - default=False

    :return: float | np.ndarray
    """
    warmup_candles_num = get_config('env.data.warmup_candles_num', 240)
    if not sequential and len(candles) > warmup_candles_num:
        candles = candles[-warmup_candles_num:]

    res = talib.DX(candles[:, 3],
                   candles[:, 4],
                   candles[:, 2],
                   timeperiod=period)

    return res if sequential else res[-1]
        def columnizer(dft):
            dft['MA60'] = tb.MA(dft.close.values, timeperiod=60)
            dft['MA200'] = tb.MA(dft.close.values, timeperiod=200)
            dft['MA400'] = tb.MA(dft.close.values, timeperiod=400)
            dft['MA800'] = tb.MA(dft.close.values, timeperiod=800)
            dft['HTL'] = tb.HT_TRENDLINE(dft.close.values)
            dft['UBB'], dft['BB'], dft['LBB'] = tb.BBANDS(dft.close.values,
                                                          timeperiod=60,
                                                          nbdevup=2,
                                                          nbdevdn=2)

            dft['RSI'] = tb.MA(tb.RSI(dft.close.values, timeperiod=800),
                               basema)
            dft['MOM'] = tb.MA(tb.MOM(dft.close.values, timeperiod=800),
                               basema)
            dft['DX'] = tb.MA(
                tb.DX(dft.high, dft.low, dft.close, timeperiod=800), basema)
            dft['ATR'] = tb.ATR(dft.high, dft.low, dft.close)
            dft['AD'] = tb.AD(dft.high, dft.low, dft.close, dft.volume)
            for i in range(5):
                dft['ichi' + str(i)] = ichimoku(dft.close)[i]

            dft['HTBB'] = dft.HTL - dft.BB
            dft['HTBB_v'] = dft.HTBB.diff()
            dft['BBv'] = dft.BB.diff()
            dft['dBB'] = dft.UBB - dft.LBB
            dft['brLBB'] = dft.close - dft.LBB
            dft['ichspan'] = dft.ichi2 - dft.ichi3

            dft['UBBv'] = dft.UBB.diff()
            dft['LBBv'] = dft.LBB.diff()

            dft['deltma'] = dft.MA200 - dft.MA60
            dft['deltma_v'] = dft.deltma.diff()
            dft['RSI_v'] = dft.RSI.diff()
            dft['volume_v'] = dft.volume.diff()
            dft['close_v'] = dft.close.diff()
            return dft
示例#28
0
def create_Indicators(data):
    dfs = data

    df = dfs.copy()

    df['ADX'] = talib.ADX(df.high, df.low, df.close, timeperiod=14)
    df['ADXR'] = talib.ADXR(df.high, df.low, df.close, timeperiod=14)
    df['APO'] = talib.APO(df.close, fastperiod=12, slowperiod=26, matype=0)
    df['AROONOSC'] = talib.AROONOSC(df.high, df.low, timeperiod=14)
    df['BOP'] = talib.BOP(
        df.open, df.high, df.low,
        df.close)  #  (Close price – Open price) / (High price – Low price)
    df["CCI"] = talib.CCI(df.high, df.low, df.close, timeperiod=14)
    df["CMO"] = talib.CMO(df.close, timeperiod=14)
    df["DX"] = talib.DX(df.high, df.low, df.close, timeperiod=14)
    #df["MFI"] = talib.MFI(df.high, df.low, df.close, df.volume, timeperiod=14).pct_change()
    df["MINUS_DI"] = talib.MINUS_DI(df.high, df.low, df.close, timeperiod=14)
    df["MINUS_DM"] = talib.MINUS_DM(df.high, df.low, timeperiod=14)
    df["MOM"] = talib.MOM(df.close, timeperiod=10)
    df["PLUS_DI"] = talib.PLUS_DI(df.high, df.low, df.close, timeperiod=14)
    df["PLUS_DM"] = talib.PLUS_DM(df.high, df.low, timeperiod=14)
    #X_corr["PPO"] = PPO(df.close, fastperiod=12, sdf.lowperiod=26, matype=0)
    df["ROC"] = talib.ROC(df.close, timeperiod=10)
    df["ROCP"] = talib.ROCP(df.close, timeperiod=10)
    df["ROCR"] = talib.ROCR(df.close, timeperiod=10)
    df["ROCR100"] = talib.ROCR100(df.close, timeperiod=10)
    df["RSI"] = talib.RSI(df.close, timeperiod=14)
    #sdf.lowk, sdf.lowd = STOCH(df.high, df.low, df.close, fastk_period=5, sdf.lowk_period=3, sdf.lowk_matype=0, sdf.lowd_period=3, sdf.lowd_matype=0)
    df["TRIX"] = talib.TRIX(df.close, timeperiod=30)
    df["ULTOSC"] = talib.ULTOSC(df.high,
                                df.low,
                                df.close,
                                timeperiod1=7,
                                timeperiod2=14,
                                timeperiod3=28)
    df["WILLR"] = talib.WILLR(df.high, df.low, df.close, timeperiod=14)

    return df
def DX(DataFrame, N=14):
    res = talib.DX(DataFrame.high.values, DataFrame.low.values,
                   DataFrame.close.values, N)
    return pd.DataFrame({'DX': res}, index=DataFrame.index)
示例#30
0
def calc_features(df):
    open = df['op']
    high = df['hi']
    low = df['lo']
    close = df['cl']
    volume = df['volume']

    orig_columns = df.columns

    hilo = (df['hi'] + df['lo']) / 2
    df['BBANDS_upperband'], df['BBANDS_middleband'], df[
        'BBANDS_lowerband'] = talib.BBANDS(close,
                                           timeperiod=5,
                                           nbdevup=2,
                                           nbdevdn=2,
                                           matype=0)
    df['BBANDS_upperband'] -= hilo
    df['BBANDS_middleband'] -= hilo
    df['BBANDS_lowerband'] -= hilo
    df['DEMA'] = talib.DEMA(close, timeperiod=30) - hilo
    df['EMA'] = talib.EMA(close, timeperiod=30) - hilo
    df['HT_TRENDLINE'] = talib.HT_TRENDLINE(close) - hilo
    df['KAMA'] = talib.KAMA(close, timeperiod=30) - hilo
    df['MA'] = talib.MA(close, timeperiod=30, matype=0) - hilo
    df['MIDPOINT'] = talib.MIDPOINT(close, timeperiod=14) - hilo
    df['SMA'] = talib.SMA(close, timeperiod=30) - hilo
    df['T3'] = talib.T3(close, timeperiod=5, vfactor=0) - hilo
    df['TEMA'] = talib.TEMA(close, timeperiod=30) - hilo
    df['TRIMA'] = talib.TRIMA(close, timeperiod=30) - hilo
    df['WMA'] = talib.WMA(close, timeperiod=30) - hilo

    df['ADX'] = talib.ADX(high, low, close, timeperiod=14)
    df['ADXR'] = talib.ADXR(high, low, close, timeperiod=14)
    df['APO'] = talib.APO(close, fastperiod=12, slowperiod=26, matype=0)
    df['AROON_aroondown'], df['AROON_aroonup'] = talib.AROON(high,
                                                             low,
                                                             timeperiod=14)
    df['AROONOSC'] = talib.AROONOSC(high, low, timeperiod=14)
    df['BOP'] = talib.BOP(open, high, low, close)
    df['CCI'] = talib.CCI(high, low, close, timeperiod=14)
    df['DX'] = talib.DX(high, low, close, timeperiod=14)
    df['MACD_macd'], df['MACD_macdsignal'], df['MACD_macdhist'] = talib.MACD(
        close, fastperiod=12, slowperiod=26, signalperiod=9)
    # skip MACDEXT MACDFIX たぶん同じなので
    df['MFI'] = talib.MFI(high, low, close, volume, timeperiod=14)
    df['MINUS_DI'] = talib.MINUS_DI(high, low, close, timeperiod=14)
    df['MINUS_DM'] = talib.MINUS_DM(high, low, timeperiod=14)
    df['MOM'] = talib.MOM(close, timeperiod=10)
    df['PLUS_DI'] = talib.PLUS_DI(high, low, close, timeperiod=14)
    df['PLUS_DM'] = talib.PLUS_DM(high, low, timeperiod=14)
    df['RSI'] = talib.RSI(close, timeperiod=14)
    df['STOCH_slowk'], df['STOCH_slowd'] = talib.STOCH(high,
                                                       low,
                                                       close,
                                                       fastk_period=5,
                                                       slowk_period=3,
                                                       slowk_matype=0,
                                                       slowd_period=3,
                                                       slowd_matype=0)
    df['STOCHF_fastk'], df['STOCHF_fastd'] = talib.STOCHF(high,
                                                          low,
                                                          close,
                                                          fastk_period=5,
                                                          fastd_period=3,
                                                          fastd_matype=0)
    df['STOCHRSI_fastk'], df['STOCHRSI_fastd'] = talib.STOCHRSI(close,
                                                                timeperiod=14,
                                                                fastk_period=5,
                                                                fastd_period=3,
                                                                fastd_matype=0)
    df['TRIX'] = talib.TRIX(close, timeperiod=30)
    df['ULTOSC'] = talib.ULTOSC(high,
                                low,
                                close,
                                timeperiod1=7,
                                timeperiod2=14,
                                timeperiod3=28)
    df['WILLR'] = talib.WILLR(high, low, close, timeperiod=14)

    df['AD'] = talib.AD(high, low, close, volume)
    df['ADOSC'] = talib.ADOSC(high,
                              low,
                              close,
                              volume,
                              fastperiod=3,
                              slowperiod=10)
    df['OBV'] = talib.OBV(close, volume)

    df['ATR'] = talib.ATR(high, low, close, timeperiod=14)
    df['NATR'] = talib.NATR(high, low, close, timeperiod=14)
    df['TRANGE'] = talib.TRANGE(high, low, close)

    df['HT_DCPERIOD'] = talib.HT_DCPERIOD(close)
    df['HT_DCPHASE'] = talib.HT_DCPHASE(close)
    df['HT_PHASOR_inphase'], df['HT_PHASOR_quadrature'] = talib.HT_PHASOR(
        close)
    df['HT_SINE_sine'], df['HT_SINE_leadsine'] = talib.HT_SINE(close)
    df['HT_TRENDMODE'] = talib.HT_TRENDMODE(close)

    df['BETA'] = talib.BETA(high, low, timeperiod=5)
    df['CORREL'] = talib.CORREL(high, low, timeperiod=30)
    df['LINEARREG'] = talib.LINEARREG(close, timeperiod=14) - close
    df['LINEARREG_ANGLE'] = talib.LINEARREG_ANGLE(close, timeperiod=14)
    df['LINEARREG_INTERCEPT'] = talib.LINEARREG_INTERCEPT(
        close, timeperiod=14) - close
    df['LINEARREG_SLOPE'] = talib.LINEARREG_SLOPE(close, timeperiod=14)
    df['STDDEV'] = talib.STDDEV(close, timeperiod=5, nbdev=1)

    return df