Esempio n. 1
0
def Math_Operators(dataframe):
	#Math Operator Functions
	#ADD - Vector Arithmetic Add
	df[f'{ratio}_ADD'] = talib.ADD(High, Low)
	#c - Vector Arithmetic Div
	df[f'{ratio}_ADD'] = talib.DIV(High, Low)
	#MAX - Highest value over a specified period
	df[f'{ratio}_MAX'] = talib.MAX(Close, timeperiod=30)
	#MAXINDEX - Index of Highest value over a specified period
	#integer = MAXINDEX(Close, timeperiod=30)
	#MIN - Lowest value over a specified period
	df[f'{ratio}_MIN'] = talib.MIN(Close, timeperiod=30)
	#MININDEX - Index of Lowest value over a specified period
	integer = talib.MININDEX(Close, timeperiod=30)
	#MINMAX - Lowest and Highest values over a specified period
	min, max = talib.MINMAX(Close, timeperiod=30)
	#MINMAXINDEX - Indexes of Lowest and Highest values over a specified period
	minidx, maxidx = talib.MINMAXINDEX(Close, timeperiod=30)
	#MULT - Vector Arithmetic Mult
	df[f'{ratio}_MULT'] = talib.MULT(High, Low)
	#SUB - Vector Arithmetic Substraction
	df[f'{ratio}_SUB'] = talib.SUB(High, Low)
	#SUM - Summation
	df[f'{ratio}_SUM'] = talib.SUM(Close, timeperiod=30)

	return
Esempio n. 2
0
 def RSV(self, stk_no, start='2008/01/01', end='2016/12/31', timeperiod=9):
     realstart = day_back(start, timeperiod)
     high = self.get_stock_data(stk_no, 'HighestPrice', realstart, end)
     low = self.get_stock_data(stk_no, 'LowestPrice', realstart, end)
     close = self.get_stock_data(stk_no, 'ClosePrice', realstart, end)
     Max = talib.MAX(high, timeperiod=timeperiod)
     Min = talib.MIN(low, timeperiod=timeperiod)
     return talib.DIV(close - Min, Max - Min)[timeperiod:]
 def calExitFilter(self, am, kind, period, threshold, cmiMAPeriod, gene4):
     if kind == 0:
         self.exitFilter = 1
     elif kind == 1:
         self.exitFilter = 1 if (ta.ADX(am.high, am.low, am.close,
                                        period)[-1] > threshold) else 0
     elif kind == 2:
         diff = np.insert(abs(am.close[period:] - am.close[:-period]), 0,
                          [0 for _ in range(period)])
         de = np.insert(ta.SUM(abs(am.close[1:] - am.close[:-1]), period),
                        0, 0)
         ER = ta.DIV(diff, de) * 100
         self.exitFilter = 1 if (ER[-1] > threshold) else 0
     elif kind == 3:
         diff = np.insert(abs(am.close[period:] - am.close[:-period]), 0,
                          [0 for _ in range(period)])
         de = ta.MAX(am.close, period) - ta.MIN(am.close, period)
         cmi = ta.MA(ta.DIV(diff, de) * 100, cmiMAPeriod)
         self.exitFilter = 1 if (cmi[-1] > threshold) else 0
Esempio n. 4
0
def DIV(high, low):
    ''' Vector Arithmetic Div 向量除法运算

    分组: Math Operator 数学运算符

    简介:

    real = DIV(high, low)
    '''
    return talib.DIV(high, low)
Esempio n. 5
0
def div(client, symbol, timeframe="6m", col1="open", col2="close"):
    """This will return a dataframe of
    Vector Arithmetic Div
    for the given symbol across the given timeframe

    Args:
        client (pyEX.Client); Client
        symbol (string); Ticker
        timeframe (string); timeframe to use, for pyEX.chart
        col1 (string); column to use to calculate
        col2 (string); column to use to calculate

    Returns:
        DataFrame: result
    """
    df = client.chartDF(symbol, timeframe)
    x = t.DIV(df[col1].values, df[col2].values)
    return pd.DataFrame({col1: df[col1].values, col2: df[col2].values, "div": x})
Esempio n. 6
0
def DIV(data, **kwargs):
    _check_talib_presence()
    popen, phigh, plow, pclose, pvolume = _extract_ohlc(data)
    return talib.DIV(phigh, plow, **kwargs)
Esempio n. 7
0
def add_ta_features(df, ta_settings):
    """Add technial analysis features from typical financial dataset that
    typically include columns such as "open", "high", "low", "price" and
    "volume".

    http://mrjbq7.github.io/ta-lib/

    Args:
        df(pandas.DataFrame): original DataFrame.
        ta_settings(dict): configuration.
    Returns:
        pandas.DataFrame: DataFrame with new features included.
    """

    open = df['open']
    high = df['high']
    low = df['low']
    close = df['price']
    volume = df['volume']

    if ta_settings['overlap']:

        df['ta_overlap_bbands_upper'], df['ta_overlap_bbands_middle'], df[
            'ta_overlap_bbands_lower'] = ta.BBANDS(close,
                                                   timeperiod=5,
                                                   nbdevup=2,
                                                   nbdevdn=2,
                                                   matype=0)
        df['ta_overlap_dema'] = ta.DEMA(
            close, timeperiod=15)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_overlap_ema'] = ta.EMA(close, timeperiod=30)
        df['ta_overlap_kama'] = ta.KAMA(close, timeperiod=30)
        df['ta_overlap_ma'] = ta.MA(close, timeperiod=30, matype=0)
        df['ta_overlap_mama_mama'], df['ta_overlap_mama_fama'] = ta.MAMA(close)
        period = np.random.randint(10, 20, size=len(close)).astype(float)
        df['ta_overlap_mavp'] = ta.MAVP(close,
                                        period,
                                        minperiod=2,
                                        maxperiod=30,
                                        matype=0)
        df['ta_overlap_midpoint'] = ta.MIDPOINT(close, timeperiod=14)
        df['ta_overlap_midprice'] = ta.MIDPRICE(high, low, timeperiod=14)
        df['ta_overlap_sar'] = ta.SAR(high, low, acceleration=0, maximum=0)
        df['ta_overlap_sarext'] = ta.SAREXT(high,
                                            low,
                                            startvalue=0,
                                            offsetonreverse=0,
                                            accelerationinitlong=0,
                                            accelerationlong=0,
                                            accelerationmaxlong=0,
                                            accelerationinitshort=0,
                                            accelerationshort=0,
                                            accelerationmaxshort=0)
        df['ta_overlap_sma'] = ta.SMA(close, timeperiod=30)
        df['ta_overlap_t3'] = ta.T3(close, timeperiod=5, vfactor=0)
        df['ta_overlap_tema'] = ta.TEMA(
            close, timeperiod=12)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_overlap_trima'] = ta.TRIMA(close, timeperiod=30)
        df['ta_overlap_wma'] = ta.WMA(close, timeperiod=30)

        # NOTE: Commented to avoid a lot of Nan values
        # df['ta_overlap_ht_trendline'] = ta.HT_TRENDLINE(close)

    if ta_settings['momentum']:

        df['ta_momentum_adx'] = ta.ADX(high, low, close, timeperiod=14)
        df['ta_momentum_adxr'] = ta.ADXR(high, low, close, timeperiod=14)
        df['ta_momentum_apo'] = ta.APO(close,
                                       fastperiod=12,
                                       slowperiod=26,
                                       matype=0)
        df['ta_momentum_aroondown'], df['ta_momentum_aroonup'] = ta.AROON(
            high, low, timeperiod=14)
        df['ta_momentum_aroonosc'] = ta.AROONOSC(high, low, timeperiod=14)
        df['ta_momentum_bop'] = ta.BOP(open, high, low, close)
        df['ta_momentum_cci'] = ta.CCI(high, low, close, timeperiod=14)
        df['ta_momentum_cmo'] = ta.CMO(close, timeperiod=14)
        df['ta_momentum_dx'] = ta.DX(high, low, close, timeperiod=14)
        df['ta_momentum_macd_macd'], df['ta_momentum_macd_signal'], df[
            'ta_momentum_macd_hist'] = ta.MACD(close,
                                               fastperiod=12,
                                               slowperiod=26,
                                               signalperiod=9)
        df['ta_momentum_macdext_macd'], df['ta_momentum_macdext_signal'], df[
            'ta_momentum_macdext_hist'] = ta.MACDEXT(close,
                                                     fastperiod=12,
                                                     fastmatype=0,
                                                     slowperiod=26,
                                                     slowmatype=0,
                                                     signalperiod=9,
                                                     signalmatype=0)
        df['ta_momentum_macdfix_macd'], df['ta_momentum_macdfix_signal'], df[
            'ta_momentum_macdfix_hist'] = ta.MACDFIX(close, signalperiod=9)
        df['ta_momentum_mfi'] = ta.MFI(high, low, close, volume, timeperiod=14)
        df['ta_momentum_minus_di'] = ta.MINUS_DI(high,
                                                 low,
                                                 close,
                                                 timeperiod=14)
        df['ta_momentum_minus_dm'] = ta.MINUS_DM(high, low, timeperiod=14)
        df['ta_momentum_mom'] = ta.MOM(close, timeperiod=10)
        df['ta_momentum_plus_di'] = ta.PLUS_DI(high, low, close, timeperiod=14)
        df['ta_momentum_plus_dm'] = ta.PLUS_DM(high, low, timeperiod=14)
        df['ta_momentum_ppo'] = ta.PPO(close,
                                       fastperiod=12,
                                       slowperiod=26,
                                       matype=0)
        df['ta_momentum_roc'] = ta.ROC(close, timeperiod=10)
        df['ta_momentum_rocp'] = ta.ROCP(close, timeperiod=10)
        df['ta_momentum_rocr'] = ta.ROCR(close, timeperiod=10)
        df['ta_momentum_rocr100'] = ta.ROCR100(close, timeperiod=10)
        df['ta_momentum_rsi'] = ta.RSI(close, timeperiod=14)
        df['ta_momentum_slowk'], df['ta_momentum_slowd'] = ta.STOCH(
            high,
            low,
            close,
            fastk_period=5,
            slowk_period=3,
            slowk_matype=0,
            slowd_period=3,
            slowd_matype=0)
        df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHF(
            high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)
        df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHRSI(
            close,
            timeperiod=14,
            fastk_period=5,
            fastd_period=3,
            fastd_matype=0)
        df['ta_momentum_trix'] = ta.TRIX(
            close, timeperiod=12)  # NOTE: Changed to avoid a lot of Nan values
        df['ta_momentum_ultosc'] = ta.ULTOSC(high,
                                             low,
                                             close,
                                             timeperiod1=7,
                                             timeperiod2=14,
                                             timeperiod3=28)
        df['ta_momentum_willr'] = ta.WILLR(high, low, close, timeperiod=14)

    if ta_settings['volume']:

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

    if ta_settings['volatility']:

        df['ta_volatility_atr'] = ta.ATR(high, low, close, timeperiod=14)
        df['ta_volatility_natr'] = ta.NATR(high, low, close, timeperiod=14)
        df['ta_volatility_trange'] = ta.TRANGE(high, low, close)

    if ta_settings['price']:

        df['ta_price_avgprice'] = ta.AVGPRICE(open, high, low, close)
        df['ta_price_medprice'] = ta.MEDPRICE(high, low)
        df['ta_price_typprice'] = ta.TYPPRICE(high, low, close)
        df['ta_price_wclprice'] = ta.WCLPRICE(high, low, close)

    if ta_settings['cycle']:

        df['ta_cycle_ht_dcperiod'] = ta.HT_DCPERIOD(close)
        df['ta_cycle_ht_phasor_inphase'], df[
            'ta_cycle_ht_phasor_quadrature'] = ta.HT_PHASOR(close)
        df['ta_cycle_ht_trendmode'] = ta.HT_TRENDMODE(close)

        # NOTE: Commented to avoid a lot of Nan values
        # df['ta_cycle_ht_dcphase'] = ta.HT_DCPHASE(close)
        # df['ta_cycle_ht_sine_sine'], df['ta_cycle_ht_sine_leadsine'] = ta.HT_SINE(close)

    if ta_settings['pattern']:

        df['ta_pattern_cdl2crows'] = ta.CDL2CROWS(open, high, low, close)
        df['ta_pattern_cdl3blackrows'] = ta.CDL3BLACKCROWS(
            open, high, low, close)
        df['ta_pattern_cdl3inside'] = ta.CDL3INSIDE(open, high, low, close)
        df['ta_pattern_cdl3linestrike'] = ta.CDL3LINESTRIKE(
            open, high, low, close)
        df['ta_pattern_cdl3outside'] = ta.CDL3OUTSIDE(open, high, low, close)
        df['ta_pattern_cdl3starsinsouth'] = ta.CDL3STARSINSOUTH(
            open, high, low, close)
        df['ta_pattern_cdl3whitesoldiers'] = ta.CDL3WHITESOLDIERS(
            open, high, low, close)
        df['ta_pattern_cdlabandonedbaby'] = ta.CDLABANDONEDBABY(open,
                                                                high,
                                                                low,
                                                                close,
                                                                penetration=0)
        df['ta_pattern_cdladvanceblock'] = ta.CDLADVANCEBLOCK(
            open, high, low, close)
        df['ta_pattern_cdlbelthold'] = ta.CDLBELTHOLD(open, high, low, close)
        df['ta_pattern_cdlbreakaway'] = ta.CDLBREAKAWAY(open, high, low, close)
        df['ta_pattern_cdlclosingmarubozu'] = ta.CDLCLOSINGMARUBOZU(
            open, high, low, close)
        df['ta_pattern_cdlconcealbabyswall'] = ta.CDLCONCEALBABYSWALL(
            open, high, low, close)
        df['ta_pattern_cdlcounterattack'] = ta.CDLCOUNTERATTACK(
            open, high, low, close)
        df['ta_pattern_cdldarkcloudcover'] = ta.CDLDARKCLOUDCOVER(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdldoji'] = ta.CDLDOJI(open, high, low, close)
        df['ta_pattern_cdldojistar'] = ta.CDLDOJISTAR(open, high, low, close)
        df['ta_pattern_cdldragonflydoji'] = ta.CDLDRAGONFLYDOJI(
            open, high, low, close)
        df['ta_pattern_cdlengulfing'] = ta.CDLENGULFING(open, high, low, close)
        df['ta_pattern_cdleveningdojistar'] = ta.CDLEVENINGDOJISTAR(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdleveningstar'] = ta.CDLEVENINGSTAR(open,
                                                            high,
                                                            low,
                                                            close,
                                                            penetration=0)
        df['ta_pattern_cdlgapsidesidewhite'] = ta.CDLGAPSIDESIDEWHITE(
            open, high, low, close)
        df['ta_pattern_cdlgravestonedoji'] = ta.CDLGRAVESTONEDOJI(
            open, high, low, close)
        df['ta_pattern_cdlhammer'] = ta.CDLHAMMER(open, high, low, close)
        df['ta_pattern_cdlhangingman'] = ta.CDLHANGINGMAN(
            open, high, low, close)
        df['ta_pattern_cdlharami'] = ta.CDLHARAMI(open, high, low, close)
        df['ta_pattern_cdlharamicross'] = ta.CDLHARAMICROSS(
            open, high, low, close)
        df['ta_pattern_cdlhighwave'] = ta.CDLHIGHWAVE(open, high, low, close)
        df['ta_pattern_cdlhikkake'] = ta.CDLHIKKAKE(open, high, low, close)
        df['ta_pattern_cdlhikkakemod'] = ta.CDLHIKKAKEMOD(
            open, high, low, close)
        df['ta_pattern_cdlhomingpigeon'] = ta.CDLHOMINGPIGEON(
            open, high, low, close)
        df['ta_pattern_cdlidentical3crows'] = ta.CDLIDENTICAL3CROWS(
            open, high, low, close)
        df['ta_pattern_cdlinneck'] = ta.CDLINNECK(open, high, low, close)
        df['ta_pattern_cdlinvertedhammer'] = ta.CDLINVERTEDHAMMER(
            open, high, low, close)
        df['ta_pattern_cdlkicking'] = ta.CDLKICKING(open, high, low, close)
        df['ta_pattern_cdlkickingbylength'] = ta.CDLKICKINGBYLENGTH(
            open, high, low, close)
        df['ta_pattern_cdlladderbottom'] = ta.CDLLADDERBOTTOM(
            open, high, low, close)
        df['ta_pattern_cdllongleggeddoji'] = ta.CDLLONGLEGGEDDOJI(
            open, high, low, close)
        df['ta_pattern_cdllongline'] = ta.CDLLONGLINE(open, high, low, close)
        df['ta_pattern_cdlmarubozu'] = ta.CDLMARUBOZU(open, high, low, close)
        df['ta_pattern_cdlmatchinglow'] = ta.CDLMATCHINGLOW(
            open, high, low, close)
        df['ta_pattern_cdlmathold'] = ta.CDLMATHOLD(open,
                                                    high,
                                                    low,
                                                    close,
                                                    penetration=0)
        df['ta_pattern_cdlmorningdojistar'] = ta.CDLMORNINGDOJISTAR(
            open, high, low, close, penetration=0)
        df['ta_pattern_cdlmorningstar'] = ta.CDLMORNINGSTAR(open,
                                                            high,
                                                            low,
                                                            close,
                                                            penetration=0)
        df['ta_pattern_cdllonneck'] = ta.CDLONNECK(open, high, low, close)
        df['ta_pattern_cdlpiercing'] = ta.CDLPIERCING(open, high, low, close)
        df['ta_pattern_cdlrickshawman'] = ta.CDLRICKSHAWMAN(
            open, high, low, close)
        df['ta_pattern_cdlrisefall3methods'] = ta.CDLRISEFALL3METHODS(
            open, high, low, close)
        df['ta_pattern_cdlseparatinglines'] = ta.CDLSEPARATINGLINES(
            open, high, low, close)
        df['ta_pattern_cdlshootingstar'] = ta.CDLSHOOTINGSTAR(
            open, high, low, close)
        df['ta_pattern_cdlshortline'] = ta.CDLSHORTLINE(open, high, low, close)
        df['ta_pattern_cdlspinningtop'] = ta.CDLSPINNINGTOP(
            open, high, low, close)
        df['ta_pattern_cdlstalledpattern'] = ta.CDLSTALLEDPATTERN(
            open, high, low, close)
        df['ta_pattern_cdlsticksandwich'] = ta.CDLSTICKSANDWICH(
            open, high, low, close)
        df['ta_pattern_cdltakuri'] = ta.CDLTAKURI(open, high, low, close)
        df['ta_pattern_cdltasukigap'] = ta.CDLTASUKIGAP(open, high, low, close)
        df['ta_pattern_cdlthrusting'] = ta.CDLTHRUSTING(open, high, low, close)
        df['ta_pattern_cdltristar'] = ta.CDLTRISTAR(open, high, low, close)
        df['ta_pattern_cdlunique3river'] = ta.CDLUNIQUE3RIVER(
            open, high, low, close)
        df['ta_pattern_cdlupsidegap2crows'] = ta.CDLUPSIDEGAP2CROWS(
            open, high, low, close)
        df['ta_pattern_cdlxsidegap3methods'] = ta.CDLXSIDEGAP3METHODS(
            open, high, low, close)

    if ta_settings['statistic']:

        df['ta_statistic_beta'] = ta.BETA(high, low, timeperiod=5)
        df['ta_statistic_correl'] = ta.CORREL(high, low, timeperiod=30)
        df['ta_statistic_linearreg'] = ta.LINEARREG(close, timeperiod=14)
        df['ta_statistic_linearreg_angle'] = ta.LINEARREG_ANGLE(close,
                                                                timeperiod=14)
        df['ta_statistic_linearreg_intercept'] = ta.LINEARREG_INTERCEPT(
            close, timeperiod=14)
        df['ta_statistic_linearreg_slope'] = ta.LINEARREG_SLOPE(close,
                                                                timeperiod=14)
        df['ta_statistic_stddev'] = ta.STDDEV(close, timeperiod=5, nbdev=1)
        df['ta_statistic_tsf'] = ta.TSF(close, timeperiod=14)
        df['ta_statistic_var'] = ta.VAR(close, timeperiod=5, nbdev=1)

    if ta_settings['math_transforms']:

        df['ta_math_transforms_atan'] = ta.ATAN(close)
        df['ta_math_transforms_ceil'] = ta.CEIL(close)
        df['ta_math_transforms_cos'] = ta.COS(close)
        df['ta_math_transforms_floor'] = ta.FLOOR(close)
        df['ta_math_transforms_ln'] = ta.LN(close)
        df['ta_math_transforms_log10'] = ta.LOG10(close)
        df['ta_math_transforms_sin'] = ta.SIN(close)
        df['ta_math_transforms_sqrt'] = ta.SQRT(close)
        df['ta_math_transforms_tan'] = ta.TAN(close)

    if ta_settings['math_operators']:

        df['ta_math_operators_add'] = ta.ADD(high, low)
        df['ta_math_operators_div'] = ta.DIV(high, low)
        df['ta_math_operators_min'], df['ta_math_operators_max'] = ta.MINMAX(
            close, timeperiod=30)
        df['ta_math_operators_minidx'], df[
            'ta_math_operators_maxidx'] = ta.MINMAXINDEX(close, timeperiod=30)
        df['ta_math_operators_mult'] = ta.MULT(high, low)
        df['ta_math_operators_sub'] = ta.SUB(high, low)
        df['ta_math_operators_sum'] = ta.SUM(close, timeperiod=30)

    return df
Esempio n. 8
0
 def DIV(High, Low):
     real = pd.DataFrame()
     for i in High.columns:
         real[i] = ta.DIV(High[i], Low[i])
     return real
Esempio n. 9
0
def indicator(filename):
    database = pd.read_csv(filename)
    close = np.array(database.close)
    high = np.array(database.high)
    low = np.array(database.low)
    volume = np.array(database.volume)
    o = np.array(database.open)
    #简单区分其到底处于什么区间内
    Add('OPEN', o)
    Add('HIGH', high)
    Add('LOW', low)
    Add('CLOSE', close)
    Add('VOLUME', volume)
    upperband, middleband, lowerband = talib.BBANDS(close,
                                                    timeperiod=20,
                                                    nbdevup=2,
                                                    nbdevdn=2,
                                                    matype=0)
    Length = len(upperband)
    increase = []
    for i in range(0, Length):
        if math.isnan(upperband[i]):
            increase.append(np.nan)
        else:
            increase.append(upperband[i] - middleband[i])
    Add('BBANDS', np.asarray(increase))

    real = talib.DEMA(close, timeperiod=10)
    real1 = talib.DEMA(close, timeperiod=20)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('DEMA', real0)

    real = talib.EMA(close, timeperiod=5)
    real1 = talib.EMA(close, timeperiod=10)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('EMA', real0)

    #暂时不会用这个指标
    real = talib.HT_TRENDLINE(close)
    Add('HT_TRENDLINE', real)

    real = talib.KAMA(close, timeperiod=30)
    real1 = talib.KAMA(close, timeperiod=60)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('KAMA', real0)

    real = talib.MA(close, timeperiod=7, matype=0)
    real1 = talib.MA(close, timeperiod=14, matype=0)
    real0 = []
    for i in range(Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('MA', real0)

    #暂时没找到怎么去用
    mama, fama = talib.MAMA(close, fastlimit=0.5, slowlimit=0.05)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(mama[i] - fama[i])
        else:
            real0.append(np.nan)
    Add('MAMA', np.asarray(real0))

    #没找到
    real = talib.MIDPOINT(close, timeperiod=14)
    Add('MIDPOINT', real)

    #没找到
    real = talib.MIDPRICE(high, low, timeperiod=14)
    Add('MIDPRICE', real)

    real = talib.SAR(high, low, acceleration=0, maximum=0)
    real0 = []
    for i in range(0, Length):
        if not math.isnan(real[i]):
            real0.append(close[i] - real[i])
        else:
            real0.append(np.nan)
    Add('SAR', real0)

    #暂时不会
    real = talib.SAREXT(high,
                        low,
                        startvalue=0,
                        offsetonreverse=0,
                        accelerationinitlong=0,
                        accelerationlong=0,
                        accelerationmaxlong=0,
                        accelerationinitshort=0,
                        accelerationshort=0,
                        accelerationmaxshort=0)
    Add('SAREXT', real)

    real = talib.SMA(close, timeperiod=3)
    real1 = talib.SMA(close, timeperiod=5)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('SMA', real0)

    #暂时不懂
    real = talib.T3(close, timeperiod=5, vfactor=0)
    Add('T3', real)

    real = talib.TEMA(close, timeperiod=7)
    real1 = talib.TEMA(close, timeperiod=14)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('TEMA', real0)

    real = talib.TRIMA(close, timeperiod=7)
    real1 = talib.TRIMA(close, timeperiod=14)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('TRIMA', real0)

    real = talib.WMA(close, timeperiod=7)
    real1 = talib.WMA(close, timeperiod=14)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('WMA', real0)

    #ADX与ADXR的关系需要注意一下
    real = talib.ADX(high, low, close, timeperiod=14)
    Add('ADX', real)

    real = talib.ADXR(high, low, close, timeperiod=14)
    Add('ADXR', real)

    #12个和26个简单移动平均线的差值
    real = talib.APO(close, fastperiod=12, slowperiod=26, matype=0)
    Add('APO', real)
    '''
    aroondown, aroonup = talib.AROON(high, low, timeperiod=14)
    real0 = []
    for i in range(0,Length):
        if not(math.isnan(aroondown) or math.isnan(aroonup)):
            real0.append(aroonup[i] - aroondown[i])
        else:
            real0.append(numpy.nan)
    Add('AROON',numpy.asarray(real0))
    '''
    #AROONOSC就是Aroonup-aroondown
    real = talib.AROONOSC(high, low, timeperiod=14)
    Add('AROONOSC', real)

    #不懂
    real = talib.BOP(o, high, low, close)
    Add('BOP', real)

    #
    real = talib.CCI(high, low, close, timeperiod=14)
    Add('CCI', real)

    real = talib.CMO(close, timeperiod=14)
    Add('CMO', real)

    #需要再考虑一下,因为DX代表的市场的活跃度
    real = talib.DX(high, low, close, timeperiod=14)
    Add('DX', real)

    macd, macdsignal, macdhist = talib.MACD(close,
                                            fastperiod=12,
                                            slowperiod=26,
                                            signalperiod=9)
    Add('MACD', macdhist)

    macd, macdsignal, macdhist = talib.MACDEXT(close,
                                               fastperiod=12,
                                               fastmatype=0,
                                               slowperiod=26,
                                               slowmatype=0,
                                               signalperiod=9,
                                               signalmatype=0)
    Add('MACDEXT', macdhist)

    macd, macdsignal, macdhist = talib.MACDFIX(close, signalperiod=9)
    Add('MACDFIX', macdhist)

    real = talib.MFI(high, low, close, volume, timeperiod=14)
    real1 = talib.MA(real, 7)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('MFI', np.asarray(real0))

    real = talib.MINUS_DI(high, low, close, timeperiod=14)
    real1 = talib.PLUS_DI(high, low, close, timeperiod=14)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real1[i] - real[i])
        else:
            real0.append(np.nan)
    Add('PLUS_DI', np.asarray(real0))

    real = talib.MINUS_DM(high, low, timeperiod=14)
    Add('MINUS_DM', real)

    #虽然大概了解了规则,但在标普500上怎么用还不是很清楚
    real = talib.MOM(close, timeperiod=14)
    Add('MOM', real)

    real = talib.PLUS_DM(high, low, timeperiod=14)
    Add('PLUS_DM', real)

    #暂时不用
    real = talib.PPO(close, fastperiod=12, slowperiod=26, matype=0)
    Add('PPO', real)

    real = talib.ROC(close, timeperiod=14)
    Add('ROC', real)

    real = talib.ROCP(close, timeperiod=14)
    Add('ROCP', real)

    real = talib.ROCR(close, timeperiod=14)
    Add('ROCR', real)

    real = talib.ROCR100(close, timeperiod=14)
    Add('ROCR100', real)

    real = talib.RSI(close, timeperiod=14)
    Add('RSI', real)

    slowk, slowd = talib.STOCH(high,
                               low,
                               close,
                               fastk_period=5,
                               slowk_period=3,
                               slowk_matype=0,
                               slowd_period=3,
                               slowd_matype=0)
    slowj = []
    for i in range(Length):
        if not (math.isnan(slowk[i]) or math.isnan(slowd[i])):
            slowj.append(3 * slowk[i] - 2 * slowd[i])
        else:
            slowj.append(np.nan)
    Add('STOCH', np.asarray(slowj))

    fastk, fastd = talib.STOCHF(high,
                                low,
                                close,
                                fastk_period=5,
                                fastd_period=3,
                                fastd_matype=0)
    fastj = []
    for i in range(Length):
        if not (math.isnan(fastk[i]) or math.isnan(fastd[i])):
            fastj.append(3 * fastk[i] - 2 * fastd[i])
        else:
            fastj.append(np.nan)
    Add('STOCHF', np.asarray(fastj))

    fastk, fastd = talib.STOCHRSI(close,
                                  timeperiod=14,
                                  fastk_period=5,
                                  fastd_period=3,
                                  fastd_matype=0)
    fastj = []
    for i in range(Length):
        if not (math.isnan(fastk[i]) or math.isnan(fastd[i])):
            fastj.append(3 * fastk[i] - 2 * fastd[i])
        else:
            fastj.append(np.nan)
    Add('STOCHRSI', np.asarray(fastj))

    real = talib.TRIX(close, timeperiod=30)
    real1 = talib.MA(real, 6)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i] or math.isnan(real1[i]))):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('TRIX', real)

    real = talib.ULTOSC(high,
                        low,
                        close,
                        timeperiod1=7,
                        timeperiod2=14,
                        timeperiod3=28)
    Add('ULTOSC', real)

    real = talib.WILLR(high, low, close, timeperiod=14)
    real0 = []
    for i in range(0, Length):
        if not math.isnan(real[i]):
            if real[i] > -20:
                real0.append(1.0)
            elif real[i] < -80:
                real0.append(-1.0)
            else:
                real0.append(0.0)
        else:
            real0.append(np.nan)
    Add('WILLR', np.asarray(real0))

    real = talib.AD(high, low, close, volume)
    real1 = talib.MA(real, 6)
    real0 = []
    for i in range(0, Length):
        if not (math.isnan(real[i]) or math.isnan(real1[i])):
            real0.append(real[i] - real1[i])
        else:
            real0.append(np.nan)
    Add('AD', np.asarray(real0))

    real = talib.ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)
    Add('ADOSC', real)

    #对于每个指标的处理还是很有问题的呀
    real = talib.OBV(close, volume)
    Add('OBV', real)

    real = talib.ATR(high, low, close, timeperiod=14)
    Add('ATR', real)

    real = talib.NATR(high, low, close, timeperiod=14)
    Add('NATR', real)

    real = talib.TRANGE(high, low, close)
    Add('TRANGE', real)

    integer = talib.HT_TRENDMODE(close)
    Add('HT_TRENDMODE', integer)

    real = talib.LINEARREG_SLOPE(close, timeperiod=14)
    Add('LINEARREG_SLOPE', real)

    real = talib.STDDEV(close, timeperiod=5, nbdev=1)
    Add('STDDEV', real)

    real = talib.TSF(close, timeperiod=14)
    Add('TSF', real)

    real = talib.VAR(close, timeperiod=5, nbdev=1)
    Add('VAR', real)

    real = talib.MEDPRICE(high, low)
    Add('MEDPRICE', real)

    real = talib.TYPPRICE(high, low, close)
    Add('TYPPRICE', real)

    real = talib.WCLPRICE(high, low, close)
    Add('WCLPRICE', real)

    real = talib.DIV(high, low)
    Add('DIV', real)

    real = talib.MAX(close, timeperiod=30)
    Add('MAX', real)

    real = talib.MIN(close, timeperiod=30)
    Add('MIN', real)

    real = talib.SUB(high, low)
    Add('SUB', real)

    real = talib.SUM(close, timeperiod=30)
    Add('SUM', real)

    return [dict1, dict2]
Esempio n. 10
0
        date = df_numpy['date']
        openp = df_numpy['open']
        high = df_numpy['high']
        low = df_numpy['low']
        close = df_numpy['close']
        volume = df_numpy['volume']

        #########################################
        #####  Math Operator Functions ######
        #########################################

        #ADD - Vector Arithmetic Add
        add = ta.ADD(high, low)

        #DIV - Vector Arithmetic Div
        div = ta.DIV(high, low)

        #MAX - Highest value over a specified period
        maxv = ta.MAX(close, timeperiod=30)

        #MAXINDEX - Index of highest value over a specified period
        maxindex = ta.MAXINDEX(close, timeperiod=30)

        #MIN - Lowest value over a specified period
        minv = ta.MIN(close, timeperiod=30)

        #MININDEX - Index of lowest value over a specified period
        minindex = ta.MININDEX(close, timeperiod=30)

        #MINMAX - Lowest and highest values over a specified period
        minsp, maxsp = ta.MINMAX(close, timeperiod=30)
    df=ts.get_k_data(code,start)
    df.index=pd.to_datetime(df.date)
    df=df.sort_index()
    return df

#获取上证指数收盘价、最高、最低价格
df=get_data('sh')[['open','close','high','low']]

#最高价与最低价之和
df['add']=ta.ADD(df.high,df.low)
#最高价与最低价之差
df['sub']=ta.SUB(df.high,df.low)
#最高价与最低价之乘
df['mult']=ta.MULT(df.high,df.low)
#最高价与最低价之除
df['div']=ta.DIV(df.high,df.low)
#收盘价的每30日移动求和
df['sum']=ta.SUM(df.close, timeperiod=30)
#收盘价的每30日内的最大最小值
df['min'], df['max'] = ta.MINMAX(df.close, timeperiod=30)
#收盘价的每30日内的最大最小值对应的索引值(第N行)
df['minidx'], df['maxidx'] = ta.MINMAXINDEX(df.close, timeperiod=30)
df.tail()

#将上述函数计算得到的结果进行可视化
df[['close','add','sub','mult','div','sum','min','max']].plot(figsize=(12,10),
       subplots = True,
       layout=(4, 2))
plt.subplots_adjust(wspace=0,hspace=0.2)
plt.show()
Esempio n. 12
0
 def DIV(self, name, **parameters):
     data = self.__data[name]
     return talib.DIV(data, **parameters)
Esempio n. 13
0
def main():
    # read csv file and transform it to datafeed (df):
    df = pd.read_csv(current_dir + "/" + base_dir + "/" + in_dir + "/" +
                     in_dir + '_' + stock_symbol + '.csv')

    # set numpy datafeed from df:
    df_numpy = {
        'date': np.array(df['date']),
        'open': np.array(df['open'], dtype='float'),
        'high': np.array(df['high'], dtype='float'),
        'low': np.array(df['low'], dtype='float'),
        'close': np.array(df['close'], dtype='float'),
        'volume': np.array(df['volume'], dtype='float')
    }

    date = df_numpy['date']
    openp = df_numpy['open']
    high = df_numpy['high']
    low = df_numpy['low']
    close = df_numpy['close']
    volume = df_numpy['volume']

    #########################################
    #####  Math Operator Functions ######
    #########################################

    #ADD - Vector Arithmetic Add
    add = ta.ADD(high, low)

    #DIV - Vector Arithmetic Div
    div = ta.DIV(high, low)

    #MAX - Highest value over a specified period
    maxv = ta.MAX(close, timeperiod=30)

    #MAXINDEX - Index of highest value over a specified period
    maxindex = ta.MAXINDEX(close, timeperiod=30)

    #MIN - Lowest value over a specified period
    minv = ta.MIN(close, timeperiod=30)

    #MININDEX - Index of lowest value over a specified period
    minindex = ta.MININDEX(close, timeperiod=30)

    #MINMAX - Lowest and highest values over a specified period
    minsp, maxsp = ta.MINMAX(close, timeperiod=30)

    #MINMAXINDEX - Indexes of lowest and highest values over a specified period
    minidx, maxidx = ta.MINMAXINDEX(close, timeperiod=30)

    #MULT - Vector Arithmetic Mult
    mult = ta.MULT(high, low)

    #SUB - Vector Arithmetic Substraction
    sub = ta.SUB(high, low)

    #SUM - Summation
    sum = ta.SUM(close, timeperiod=30)

    df_save = pd.DataFrame(
        data={
            'date': np.array(df['date']),
            'add': add,
            'div': div,
            'max': maxv,
            'maxindex': maxindex,
            'min': minv,
            'minindex': minindex,
            'min_spec_period': minsp,
            'max_spec_period': maxsp,
            'minidx': minidx,
            'maxidx': maxidx,
            'mult': mult,
            'sub': sub,
            'sum': sum
        })

    df_save.to_csv(current_dir + "/" + base_dir + "/" + out_dir + '/' +
                   stock_symbol + "/" + out_dir + '_ta_math_operator_' +
                   stock_symbol + '.csv',
                   index=False)