Exemplo n.º 1
0
def get_data(symbol):

    # Technical Indicators
    ti = TechIndicators(key='YOUR_API_KEY', output_format='pandas')
    sma, _ = ti.get_sma(symbol=symbol, interval='daily')
    wma, _ = ti.get_wma(symbol=symbol, interval='daily')
    ema, _ = ti.get_ema(symbol=symbol, interval='daily')
    macd, _ = ti.get_macd(symbol=symbol, interval='daily')
    stoch, _ = ti.get_stoch(symbol=symbol, interval='daily')
    rsi, _ = ti.get_rsi(symbol=symbol, interval='daily')
    adx, _ = ti.get_adx(symbol=symbol, interval='daily')
    cci, _ = ti.get_cci(symbol=symbol, interval='daily')
    aroon, _ = ti.get_aroon(symbol=symbol, interval='daily')
    bbands, _ = ti.get_bbands(symbol=symbol, interval='daily')
    ad, _ = ti.get_ad(symbol=symbol, interval='daily')
    obv, _ = ti.get_obv(symbol=symbol, interval='daily')
    mom, _ = ti.get_mom(symbol=symbol, interval='daily')
    willr, _ = ti.get_willr(symbol=symbol, interval='daily')
    tech_ind = pd.concat([sma, ema, macd, stoch, rsi, adx, cci, aroon, bbands, ad, obv, wma, mom, willr], axis=1)

    ts = TimeSeries(key='YOUR_API_KEY', output_format='pandas')
    close = ts.get_daily(symbol=symbol, outputsize='full')[0]['close']   # compact/full
    direction = (close > close.shift()).astype(int)
    target = direction.shift(-1).fillna(0).astype(int)
    target.name = 'target'

    data = pd.concat([tech_ind, close, target], axis=1)

    return data
Exemplo n.º 2
0
def get_data(symbol):
    print 'Getting data'
    # Technical Indicators
    ti = TechIndicators(key='4BTFICZGTPWZRRQS', output_format='pandas')
    sma, _ = ti.get_sma(symbol=symbol, interval='daily')
    wma, _ = ti.get_wma(symbol='SPX', interval='daily')
    ema, _ = ti.get_ema(symbol=symbol, interval='daily')
    macd, _ = ti.get_macd(symbol=symbol, interval='daily')
    stoch, _ = ti.get_stoch(symbol=symbol, interval='daily')
    rsi, _ = ti.get_rsi(symbol=symbol, interval='daily')
    adx, _ = ti.get_adx(symbol=symbol, interval='daily')
    cci, _ = ti.get_cci(symbol=symbol, interval='daily')
    aroon, _ = ti.get_aroon(symbol=symbol, interval='daily')
    bbands, _ = ti.get_bbands(symbol='SPX', interval='daily')
    ad, _ = ti.get_ad(symbol='SPX', interval='daily')
    obv, _ = ti.get_obv(symbol='SPX', interval='daily')
    mom, _ = ti.get_mom(symbol='SPX', interval='daily')
    willr, _ = ti.get_willr(symbol='SPX', interval='daily')
    tech_ind = pd.concat([sma, ema, macd, stoch, rsi, adx, cci, aroon, bbands, ad, obv, wma, mom, willr], axis=1)

    print 'Getting time series'
    ts = TimeSeries(key='4BTFICZGTPWZRRQS', output_format='pandas')
    close = ts.get_daily(symbol=symbol, outputsize='full')[0].rename(columns={'4. close': 'close'})['close']
    direction = (close > close.shift()).astype(int)
    target = direction.shift(-1).fillna(0).astype(int)
    target.name = 'target'

    data = pd.concat([tech_ind, close, target], axis=1)

    return data
Exemplo n.º 3
0
def get_daily_technical(stock, indicator, API_key, period=-1):
    ti = TechIndicators(key=API_key, output_format='pandas')
    if indicator == "bband":
        if (period <= 0):
            period = 20
        data, meta_data = ti.get_bbands(symbol=stock, interval='daily', time_period=period)
    elif indicator == "macd":
        data, meta_data = ti.get_macd(symbol=stock, interval='daily')
    elif indicator == "rsi":
        if (period <= 0):
            period = 14
        data, meta_data = ti.get_rsi(symbol=stock, interval='daily', time_period=period)
    elif indicator == "cci":
        if (period <= 0):
            period = 20
        data, meta_data = ti.get_cci(symbol=stock, interval='daily', time_period=period)
    elif indicator == "aroon":
        if (period <= 0):
            period = 14
        data, meta_data = ti.get_aroon(symbol=stock, interval='daily', time_period=period)
    elif indicator == "ad":
        data, meta_data = ti.get_ad(symbol=stock, interval='daily')
    elif indicator == "adx":
        if (period <= 0):
            period = 20
        data, meta_data = ti.get_adx(symbol=stock, interval='daily', time_period=period)
    elif indicator == "sma":
        if (period <= 0):
            period = 40
        data, meta_data = ti.get_sma(symbol=stock, interval='daily', time_period=period)
    else:
        sys.exit('Failed to input a valid indicator')

    return data, meta_data
def rsi_dataframe(stock):
    '''
    Use this function in the API calling, takes the data we want from Alpha Vantage and saves it into a CSV.
    Input:
    
    stock = Name of ticker (i.e. 'TSLA' for Tesla stock).
    
    Output:
    
    csv dataframe.
    
    '''
    stock = stock
    #api_key = '2KKOCMZP4P0O865A'
    api_key = 'YVGW80PFI6I0ZH6Z'
    period = 60

    ts = TimeSeries(key=api_key, output_format='pandas')
    data_ts = ts.get_daily_adjusted(stock.upper(), outputsize='full')

    #indicator
    ti = TechIndicators(key=api_key, output_format='pandas')
    data_rsi = ti.get_rsi(symbol=stock.upper(),
                          interval='daily',
                          time_period=period,
                          series_type='close')
    data_aroon = ti.get_aroon(symbol=stock.upper(),
                              interval='daily',
                              time_period=period)
    data_mfi = ti.get_mfi(symbol=stock.upper(),
                          interval='daily',
                          time_period=period)
    data_dx = ti.get_dx(symbol=stock.upper(),
                        interval='daily',
                        time_period=period)

    #Get dfs removing unwanted lines.
    df_adj_price = data_ts[0][period::]
    df_rsi = data_rsi[0][period::]
    df_aroon = data_aroon[0][period::]
    df_mfi = data_mfi[0][period::]
    df_dx = data_dx[0][period::]

    #Merge all dfs into one.
    df_adj_rsi = df_adj_price.merge(df_rsi, on='date')
    df_aroon_mfi = df_aroon.merge(df_mfi, on='date')

    df_1_2 = df_adj_rsi.merge(df_aroon_mfi, on='date')
    df = df_1_2.merge(df_dx, on='date')

    df.to_csv(str(stock))
def get_data(symbol):

    # API KEY: 51N1JMO66W56AYA3
    ti = TechIndicators(key='51N1JMO66W56AYA3', output_format='pandas')
    sma, _ = ti.get_sma(symbol=symbol, interval='daily')
    wma, _ = ti.get_wma(symbol=symbol, interval='daily')
    ema, _ = ti.get_ema(symbol=symbol, interval='daily')
    macd, _ = ti.get_macd(symbol=symbol, interval='daily')
    stoch, _ = ti.get_stoch(symbol=symbol, interval='daily')
    #  Alpha Vantage Times out for more than 5 request
    time.sleep(65)
    rsi, _ = ti.get_rsi(symbol=symbol, interval='daily')
    adx, _ = ti.get_adx(symbol=symbol, interval='daily')
    cci, _ = ti.get_cci(symbol=symbol, interval='daily')
    aroon, _ = ti.get_aroon(symbol=symbol, interval='daily')
    bbands, _ = ti.get_bbands(symbol=symbol, interval='daily')
    time.sleep(65)
    ad, _ = ti.get_ad(symbol=symbol, interval='daily')
    obv, _ = ti.get_obv(symbol=symbol, interval='daily')
    mom, _ = ti.get_mom(symbol=symbol, interval='daily')
    willr, _ = ti.get_willr(symbol=symbol, interval='daily')
    time.sleep(65)
    tech_ind = pd.concat([
        sma, ema, macd, rsi, adx, cci, aroon, bbands, ad, obv, wma, mom, willr,
        stoch
    ],
                         axis=1)

    ts = TimeSeries(key='51N1JMO66W56AYA3', output_format='pandas')
    close2 = ts.get_daily(symbol=symbol, outputsize='full')
    close = ts.get_daily(symbol=symbol, outputsize='full')[0]['4. close']
    direction = (close > close.shift()).astype(int)
    target = direction.shift(-1).fillna(0).astype(int)
    target.name = 'target'

    data = pd.concat([tech_ind, close, target], axis=1)

    return data
Exemplo n.º 6
0
def init_data(comp, interval):

    # Input all the technical indicators and the stock times series data

    # Initialize the AlphaVantage API call functions
    ts = TimeSeries(key='L2O2TYTG382ETN0N', output_format='pandas')
    ti = TechIndicators(key='L2O2TYTG382ETN0N', output_format='pandas')

    # Other keys: QB5APLD84E50TQAC, L2O2TYTG382ETN0N

    # Fetch the simple moving average (SMA) values
    main_data, meta_data = ti.get_sma(symbol=comp,
                                      interval='60min',
                                      time_period=20,
                                      series_type='close')

    time.sleep(3)

    # Fetch the exponential moving average (EMA) values
    ema_data, meta_data = ti.get_ema(symbol=comp,
                                     interval='60min',
                                     time_period=20,
                                     series_type='close')
    main_data['EMA'] = ema_data

    time.sleep(3)
    """
		# Fetch the weighted moving average (WMA) values
		wma_data, meta_data = ti.get_wma(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['WMA'] = wma_data
		
		# Fetch the double exponential moving agerage (DEMA) values
		dema_data, meta_data = ti.get_dema(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['DEMA'] = dema_data
		
		# Fetch the triple exponential moving average (TEMA) values
		tema_data, meta_data = ti.get_tema(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['TEMA'] = tema_data
		
		# Fetch the triangular moving average (TRIMA) values 
		trima_data, meta_data = ti.get_trima(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['TRIMA'] = trima_data

		# Fetch the Kaufman adaptive moving average (KAMA) values
		kama_data, meta_data = ti.get_kama(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['KAMA'] = kama_data		

		# Fetch the MESA adaptive moving average (MAMA) values
		mama_data, meta_data = ti.get_mama(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['MAMA'] = mama_data['MAMA']
		main_data['FAMA'] = mama_data['FAMA']

		# Fetch the triple exponential moving average (T3) values
		t3_data, meta_data = ti.get_t3(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['T3'] = t3_data	
		"""

    # Fetch the moving average convergence / divergence (MACD) values
    macd_data, meta_data = ti.get_macd(symbol=comp,
                                       interval='60min',
                                       series_type='close')
    main_data['MACD'] = macd_data['MACD']
    main_data['MACD_Hist'] = macd_data['MACD_Hist']
    main_data['MACD_Signal'] = macd_data['MACD_Signal']

    time.sleep(3)
    """		
		# Fetch the moving average convergence / divergence values with controllable moving average type
		macdext_data, meta_data = ti.get_macdext(symbol=comp,interval='60min', series_type='close')
		main_data['MACDEXT'] = macdext_data['MACD']
		main_data['MACDEXT_Hist'] = macdext_data['MACD_Hist']
		main_data['MACDEXT_Signal'] = macdext_data['MACD_Signal']
		"""

    # Fetch the stochastic oscillator (STOCH) values
    stoch_data, meta_data = ti.get_stoch(symbol=comp, interval='60min')
    main_data['SlowK'] = stoch_data['SlowK']
    main_data['SlowD'] = stoch_data['SlowD']

    time.sleep(3)
    """
		# Fetch the stochastic fast (STOCHF) values
		stochf_data, meta_data = ti.get_stochf(symbol=comp,interval='60min')
		main_data['FastK'] = stochf_data['FastK']
		main_data['FastD'] = stochf_data['FastD']
		"""

    # Fetch the relative strength index (RSI) values
    rsi_data, meta_data = ti.get_rsi(symbol=comp,
                                     interval='60min',
                                     time_period=10,
                                     series_type='close')
    main_data['RSI'] = rsi_data

    time.sleep(3)
    """
		# Fetch the stochastic relative strength index (STOCHRSI) values
		stochrsi_data, meta_data = ti.get_stochrsi(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['STOCHRSI_FastK'] = stochrsi_data['FastK']
		main_data['STOCHRSI_FastD'] = stochrsi_data['FastD']

		# Fetch the Williams' %R (WILLR) values
		willr_data, meta_data = ti.get_willr(symbol=comp,interval='60min', time_period=10)
		main_data['WILLR'] = willr_data
		"""

    # Fetch the average directional movement index (ADX) values
    adx_data, meta_data = ti.get_adx(symbol=comp,
                                     interval='60min',
                                     time_period=20)
    main_data['ADX'] = adx_data

    time.sleep(3)
    """
		# Fetch the average directional movement index rating (ADXR) values
		adxr_data, meta_data = ti.get_adxr(symbol=comp,interval='60min', time_period=10)
		main_data['ADXR'] = adxr_data

		# Fetch the absolute price oscillator (APO) values
		apo_data, meta_data = ti.get_apo(symbol=comp,interval='60min', series_type='close')
		main_data['APO'] = apo_data

		# Fetch the percentage price oscillator (PPO) values
		ppo_data, meta_data = ti.get_ppo(symbol=comp,interval='60min', series_type='close')
		main_data['PPO'] = ppo_data

		# Fetch the momentum (MOM) values
		mom_data, meta_data = ti.get_mom(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['MOM'] = mom_data

		# Fetch the balance of power (BOP) values
		bop_data, meta_data = ti.get_bop(symbol=comp,interval='60min')
		main_data['BOP'] = bop_data
		"""

    # Fetch the commodity channel index (CCI) values
    cci_data, meta_data = ti.get_cci(symbol=comp,
                                     interval='60min',
                                     time_period=20)
    main_data['CCI'] = cci_data

    time.sleep(3)
    """
		# Fetch the Chande momentum oscillator (CMO) values
		cmo_data, meta_data = ti.get_cmo(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['CMO'] = cmo_data

		# Fetch the rate of change (ROC) values
		roc_data, meta_data = ti.get_roc(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['ROC'] = roc_data


		# Fetch the rate of change ratio (ROCR) values
		rocr_data, meta_data = ti.get_rocr(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['ROCR'] = rocr_data

		time.sleep(5)
		"""
    # Fetch the Aroon (AROON) values
    aroon_data, meta_data = ti.get_aroon(symbol=comp,
                                         interval='60min',
                                         time_period=20)
    main_data['Aroon Down'] = aroon_data['Aroon Down']
    main_data['Aroon Up'] = aroon_data['Aroon Up']

    time.sleep(3)
    """
		# Fetch the Aroon oscillator (AROONOSC) values
		aroonosc_data, meta_data = ti.get_aroonosc(symbol=comp,interval='60min', time_period=10)
		main_data['AROONOSC'] = aroonosc_data

		# Fetch the money flow index (MFI) values
		mfi_data, meta_data = ti.get_mfi(symbol=comp,interval='60min', time_period=10)
		main_data['MFI'] = mfi_data

		# Fetch the 1-day rate of change of a triple smooth exponential moving average (TRIX) values
		triX_train_data['AAPL'], meta_data = ti.get_trix(symbol=comp,interval='60min', time_period=10, series_type='close')
		main_data['TRIX'] = triX_train_data['AAPL']

		# Fetch the ultimate oscillator (ULTOSC) values
		ultosc_data, meta_data = ti.get_ultsoc(symbol=comp,interval='60min', time_period=10)
		main_data['ULTOSC'] = ultosc_data

		# Fetch the directional movement index (DX) values
		dX_train_data['AAPL'], meta_data = ti.get_dx(symbol=comp,interval='60min', time_period=10)
		main_data['DX'] = dX_train_data['AAPL']
		"""
    """
		# Fetch the Chaikin A/D line (AD) value
		ad_data, meta_data = ti.get_ad(symbol=comp,interval='60min')
		main_data['AD'] = ad_data
		"""

    # Fetch the on balance volume (OBV) values
    obv_data, meta_data = ti.get_obv(symbol=comp, interval='60min')
    main_data['OBV'] = obv_data

    intraday_data, meta_data = ts.get_intraday(symbol=comp,
                                               interval='60min',
                                               outputsize='full')

    intraday_data.index = pd.Index(
        [index[:-3] for index in intraday_data.index], name='date')
    #intraday_data.set_index('date')

    main_data = pd.concat([main_data, intraday_data], axis=1)
    print(main_data.index)

    print(main_data.head())

    main_data = main_data.dropna()
    main_data.index.name = 'date'

    company = comp
    main_data.to_csv(f'./rsc/{company}_AV_data.csv', sep=',')

    time.sleep(1)

    print(comp)

    time.sleep(5)
Exemplo n.º 7
0
def technicalIndicators(API_key,ticker):
  from alpha_vantage.techindicators import TechIndicators
  import matplotlib.pyplot as plt
  import mplfinance as mpf

  ti=TechIndicators(key=API_key, output_format='pandas')
  option=input('1. SMA\n2. EMA\n3. VWAP\n4. MACD\n5. STOCH\n6. RSI\n7. ADX\n8. CCI\n9. AROON\n10. BBANDS\n11. AD\n12. OBV\n').lower()

  if option=='sma' or option=='1':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    ser=int(input('Enter the series:\n\t1. close\n\t2. open\n\t3. low\n\t4. high\n'))
    series=['','close','open','low','high']
    data=ti.get_sma(symbol=ticker, interval=intervalList[interval], time_period=timeperiod, series_type=series[ser])[0]
    data.columns = ['SMA']
    data.index.name ="Date"
    mpf.plot(data,
             type='candle', 
             title=f'SMA for the {ticker} stock',
             mav=(20), 
             volume=True, 
             tight_layout=True,
             style='yahoo')
    mpf.plot(data,type='line', volume=True)
    return data
    
  elif option=='ema' or option=='2':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    ser=int(input('Enter the series:\n\t1. close\n\t2. open\n\t3. low\n\t4. high\n'))
    series=['','close','open','low','high']
    data=ti.get_ema(symbol=ticker, interval=intervalList[interval], time_period=timeperiod, series_type=series[ser])[0]
    data.plot()
    plt.title(f'EMA for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='vwap' or option=='3':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n"))
    intervalList=['','1min','5min','15min','30min','60min']
    data=ti.get_vwap(symbol=ticker, interval=intervalList[interval])[0]
    data.plot()
    plt.title(f'VWAP for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='macd' or option=='4':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    ser=int(input('Enter the series:\n\t1. close\n\t2. open\n\t3. low\n\t4. high\n'))
    series=['','close','open','low','high']
    data=ti.get_macd(symbol=ticker, interval=intervalList[interval], series_type=series[ser])[0]
    data.plot()
    plt.title(f'MACD for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='stoch' or option=='5':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    data=ti.get_stoch(symbol=ticker, interval=intervalList[interval])[0]
    data.plot()
    plt.title(f'STOCH for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='rsi' or option=='6':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    ser=int(input('Enter the series:\n\t1. close\n\t2. open\n\t3. low\n\t4. high\n'))
    series=['','close','open','low','high']
    data=ti.get_rsi(symbol=ticker, interval=intervalList[interval], time_period=timeperiod, series_type=series[ser])[0]
    data.plot()
    plt.title(f'RSI for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='adx' or option=='7':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    data=ti.get_adx(symbol=ticker, interval=intervalList[interval], time_period=timeperiod)[0]
    data.plot()
    plt.title(f'ADX for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='cci' or option=='8':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    data=ti.get_cci(symbol=ticker, interval=intervalList[interval], time_period=timeperiod)[0]
    data.plot()
    plt.title(f'CCI for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='aroon' or option=='9':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period'))
    data=ti.get_aroon(symbol=ticker, interval=intervalList[interval], time_period=timeperiod)[0]
    data.plot()
    plt.title(f'AROON for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data
    
  elif option=='bbands' or option=='10':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    timeperiod=int(input('Enter Time Period\n'))
    ser=int(input('Enter the series:\n\t1. close\n\t2. open\n\t3. low\n\t4. high\n'))
    series=['','close','open','low','high']
    data=ti.get_bbands(symbol=ticker, interval=intervalList[interval], time_period=timeperiod, series_type=series[ser])[0]
    data.plot()
    plt.title(f'BBANDS for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='ad' or option=='11':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    data=ti.get_ad(symbol=ticker, interval=intervalList[interval])[0]
    data.plot()
    plt.title(f'AD for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  elif option=='obv' or option=='12':
    interval=int(input("Enter the interval:\n\t1. 1 minute\n\t2. 5 minutes\n\t3. 15 minutes\n\t4. 30 minutes\n\t5. 60 minutes\n\t6. daily \n\t7. weekly\n\t8. monthly\n"))
    intervalList=['','1min','5min','15min','30min','60min','daily','weekly','monthly']
    data=ti.get_obv(symbol=ticker, interval=intervalList[interval])[0]
    data.plot()
    plt.title(f'OBV for the {ticker} stock')
    plt.tight_layout()
    plt.grid()
    plt.show()
    return data

  else:
    print("CANNOT RECOGNIZE")
Exemplo n.º 8
0
def preds(api_key):
    df = pd.read_csv('GOOGL.csv', index_col='Date')
    preds = pd.DataFrame()
    for i in np.arange(start=1, stop=6):
        if preds.empty:
            preds = pd.DataFrame(data=df['close'].pct_change(1))
            preds.columns = ['today']
        else:
            lags = pd.DataFrame(df['close'].pct_change(i))
            lags.columns = ['lag{}'.format(i)]
            preds = preds.join(lags)

    preds = preds.join(df['volume'])
    preds = preds.join(df['close'])
    preds['dir'] = (preds['close'] > preds['close'].shift(1)).shift(-1)

    filename = 'GOOGL-lags.csv'
    try:
        preds.to_csv('{}'.format(filename))
        print('GOOGL lags saved successfully as "{}"'.format(filename))
    except:
        print('Unable to save "{}"'.format(filename))

    ti = TechIndicators(key=api_key, output_format='pandas')
    sma, _ = ti.get_sma(symbol='GOOGL', interval='daily', series_type='close')
    ema, _ = ti.get_ema(symbol='GOOGL', interval='daily', series_type='close')
    wma, _ = ti.get_wma(symbol='GOOGL', interval='daily', series_type='close')
    trima, _ = ti.get_trima(symbol='GOOGL',
                            interval='daily',
                            series_type='close')
    kama, _ = ti.get_kama(symbol='GOOGL',
                          interval='daily',
                          series_type='close')
    macd, _ = ti.get_macd(symbol='GOOGL',
                          interval='daily',
                          series_type='close')
    rsi, _ = ti.get_rsi(symbol='GOOGL', interval='daily', series_type='close')
    adx, _ = ti.get_adx(symbol='GOOGL', interval='daily')
    apo, _ = ti.get_apo(symbol='GOOGL', interval='daily', series_type='close')
    stoch, _ = ti.get_stoch(symbol='GOOGL', interval='daily')
    ppo, _ = ti.get_ppo(symbol='GOOGL', interval='daily')
    mom, _ = ti.get_mom(symbol='GOOGL', interval='daily', series_type='close')
    cci, _ = ti.get_cci(symbol='GOOGL', interval='daily')
    aroon, _ = ti.get_aroon(symbol='GOOGL',
                            interval='daily',
                            series_type='close')
    mfi, _ = ti.get_mfi(symbol='GOOGL', interval='daily', series_type='close')
    dx, _ = ti.get_dx(symbol='GOOGL', interval='daily', series_type='close')
    ad, _ = ti.get_ad(symbol='GOOGL', interval='daily')
    obv, _ = ti.get_obv(symbol='GOOGL', interval='daily')

    filename2 = 'GOOGL-techs.csv'
    try:
        preds_test = pd.concat([
            sma, ema, wma, trima, kama, macd, rsi, adx, apo, stoch, ppo, mom,
            cci, aroon, mfi, dx, ad, obv
        ],
                               axis=1)
        pd.DataFrame(preds_test).to_csv('{}'.format(filename2))
        print('Google techs saved as successfully as "{}"'.format(filename2))
    except:
        print('Unable to save "{}"'.format(filename2))
Exemplo n.º 9
0
def save_ti(ticker, interval='daily'):
    ti = TechIndicators(key='WS8K5VM8FZL52BTH', output_format='pandas')

    ti.get_sma(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_sma.csv')
    call_check()
    ti.get_ema(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_ema.csv')
    call_check()
    ti.get_wma(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_wma.csv')
    call_check()
    ti.get_dema(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_dema.csv')
    call_check()
    ti.get_tema(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_tema.csv')
    call_check()
    ti.get_trima(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_trima.csv')
    call_check()
    ti.get_kama(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_kama.csv')
    call_check()
    ti.get_mama(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_mama.csv')
    call_check()
    ti.get_t3(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_t3.csv')
    call_check()
    ti.get_macd(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_macd.csv')
    call_check()
    ti.get_macdext(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_macdext.csv')
    call_check()
    ti.get_stoch(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_stoch.csv')
    call_check()
    ti.get_stochf(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_stochf.csv')
    call_check()
    ti.get_rsi(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_rsi.csv')
    call_check()
    ti.get_stochrsi(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_stochris.csv')
    call_check()
    ti.get_willr(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_willr.csv')
    call_check()
    ti.get_adx(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_adx.csv')
    call_check()
    ti.get_adxr(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_adxr.csv')
    call_check()
    ti.get_apo(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_apo.csv')
    call_check()
    ti.get_ppo(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_ppo.csv')
    call_check()
    ti.get_mom(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_mom.csv')
    call_check()
    ti.get_bop(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_bop.csv')
    call_check()
    ti.get_cci(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_cci.csv')
    call_check()
    ti.get_cmo(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_cmo.csv')
    call_check()
    ti.get_roc(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_roc.csv')
    call_check()
    ti.get_rocr(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_rocr.csv')
    call_check()
    ti.get_aroon(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_aroon.csv')
    call_check()
    ti.get_aroonosc(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_aroonosc.csv')
    call_check()
    ti.get_mfi(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_mfi.csv')
    call_check()
    ti.get_trix(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_trix.csv')
    call_check()
    ti.get_ultosc(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_ultosc.csv')
    call_check()
    ti.get_dx(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_dx.csv')
    call_check()
    ti.get_minus_di(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_minus_di.csv')
    call_check()
    ti.get_plus_di(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_plus_di.csv')
    call_check()
    ti.get_minus_dm(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_minus_dm.csv')
    call_check()
    ti.get_plus_dm(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_plus_dm.csv')
    call_check()
    ti.get_bbands(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_bbands.csv')
    call_check()
    ti.get_midpoint(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_midpoint.csv')
    call_check()
    ti.get_midprice(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_midprice.csv')
    call_check()
    ti.get_sar(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_sar.csv')
    call_check()
    ti.get_trange(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_trange.csv')
    call_check()
    ti.get_atr(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_atr.csv')
    call_check()
    ti.get_natr(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_natr.csv')
    call_check()
    ti.get_ad(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_ad.csv')
    call_check()
    ti.get_adosc(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_adosc.csv')
    call_check()
    ti.get_obv(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_obv.csv')
    call_check()
    ti.get_ht_trendline(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_ht_trendline.csv')
    call_check()
    ti.get_ht_sine(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_ht_sine.csv')
    call_check()
    ti.get_ht_trendmode(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_ht_trendmode.csv')
    call_check()
    ti.get_ht_dcperiod(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_dcperiod.csv')
    call_check()
    ti.get_ht_dcphase(
        ticker,
        interval)[0].to_csv(f'./Stock Data/TI/{ticker}_{interval}_dcphase.csv')
    call_check()
    ti.get_ht_phasor(ticker, interval)[0].to_csv(
        f'./Stock Data/TI/{ticker}_{interval}_ht_phasor.csv')
Exemplo n.º 10
0
    def stockIndicators(self):
        ti = TechIndicators(key=self.apiKey, output_format='pandas')

        if (self.stockIndi == "sma"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_sma(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "ema"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_ema(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "vwap"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_vwap(symbol=self.stockName,
                                                  time_period=30)

        elif (self.stockIndi == "macd"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_macd(symbol=self.stockName,
                                                  time_period=30)

        elif (self.stockIndi == "obv"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_obv(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "ad"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_ad(symbol=self.stockName,
                                                time_period=30)

        elif (self.stockIndi == "bbands"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_bbands(symbol=self.stockName,
                                                    time_period=30)

        elif (self.stockIndi == "aroon"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_aroon(symbol=self.stockName,
                                                   time_period=30)

        elif (self.stockIndi == "cci"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_cci(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "adx"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_adx(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "rsi"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_rsi(symbol=self.stockName,
                                                 time_period=30)

        elif (self.stockIndi == "stoch"):
            ts = TimeSeries(key=self.apiKey, output_format='pandas')
            data, meta_data = ts.get_monthly(symbol=self.stockName)
            dataIndi, meta_dataIndi = ti.get_stoch(symbol=self.stockName,
                                                   time_period=30)

        return data, dataIndi
Exemplo n.º 11
0
def getData(tker,alg,time,tDF,tI,incP,typeClass,return_list):

	print("Getting Data")

	dataDict= []
	symb = tker
	#Do not use 60min since that does not work.
	#Cannot figure out how, but the keys for date and time are different.
	tInterval = time
	ourKey = '2ONP54KRQ2G73D3K'

	#Using the wrapper class to get the different data for the inputted ticker
	#In a try-catch because sometime the API fails
	try:
		#Making the retry number high so the API call should not fail
		ts = TimeSeries(key = ourKey, output_format = 'json',retries=10000)
		#tInterval has first letter capitalized when getting input for neatness, it is then lowered here for the API call
		#Here we are getting the price data for the requested time interval
		if tInterval == 'Daily':
			priceData, meta_priceData = ts.get_daily(symbol= symb, outputsize='full')
			tInterval = 'daily'
		elif tInterval == 'Weekly':
			priceData, meta_priceData = ts.get_weekly(symbol = symb)
			tInterval = 'weekly'
		elif tInterval =='Monthly':
			priceData, meta_priceData = ts.get_monthly(symbol = symb)
			tInterval = 'monthly'
		else:
			priceData, meta_priceData = ts.get_intraday(symbol = symb, interval = tInterval, outputsize='full')
			#Intraday date and time key includes seconds, while it does not for technicial indicators
			for day in priceData.copy():
				priceData[day[:-3]] = priceData.pop(day)


		ti = TechIndicators(key = ourKey, output_format ='json')
		#Here we get the technical indicators the user chose from the menu, unless they chose to do a tDF.
		if tDF == "No":
			if 0 in tI:
				macD, meta_macD = ti.get_macd(symbol = symb, interval = tInterval,  series_type = 'close')
				dataDict.append(macD)
			if 1 in tI:
				stoch, meta_stoch = ti.get_stoch(symbol = symb, interval = tInterval, fastkperiod = '5')
				dataDict.append(stoch)
			if 2 in tI:
				ema, meta_ema = ti.get_ema(symbol = symb, interval = tInterval, time_period = '8', series_type = 'close')
				dataDict.append(ema)
			if 3 in tI:
				rsi, meta_rsi = ti.get_rsi(symbol = symb, interval = tInterval, time_period = '14', series_type='close')
				dataDict.append(rsi)
			if 4 in tI:
				plusDI, meta_plusDI = ti.get_plus_di(symbol = symb, interval = tInterval, time_period = '14')
				minusDI, meta_minusDI = ti.get_minus_di(symbol = symb, interval = tInterval, time_period = '14')
				dataDict.append(plusDI)
				dataDict.append(minusDI)
			if 5 in tI:
				cci, meta_cci = ti.get_cci(symbol = symb, interval = tInterval, time_period = '14')
				dataDict.append(cci)
			if 6 in tI:
				willR, meta_willR = ti.get_willr(symbol = symb, interval = tInterval, time_period = '14')
				dataDict.append(willR)
			if 7 in tI:
				oBV, meta_OBV = ti.get_obv(symbol = symb, interval = tInterval)
				dataDict.append(oBV)
			if 8 in tI:
				aD, meta_AD = ti.get_ad(symbol = symb, interval = tInterval)
				dataDict.append(aD)
			if 9 in tI:
				bBands, meta_bBands = ti.get_bbands(symbol = symb, interval = tInterval, time_period = '14', series_type = 'close')
				dataDict.append(bBands)
			if 10 in tI:
				aroon, meta_aroon = ti.get_aroon(symbol = symb, interval = tInterval, time_period = '14')
				dataDict.append(aroon)
			if 11 in tI:
				adx, meta_adx = ti.get_adx(symbol = symb, interval = tInterval, time_period = '14')
				dataDict.append(adx)
			if(incP == "Yes"):
				dataDict.append(priceData)
		#Since a tDF requires a manual transformation, we choose the technical indicators for it, which are retrieved here
		else:
			macD, meta_macD = ti.get_macd(symbol = symb, interval = tInterval,  series_type = 'close')
			stoch, meta_stoch = ti.get_stoch(symbol = symb, interval = tInterval, fastkperiod = '5')
			ema, meta_ema = ti.get_ema(symbol = symb, interval = tInterval, time_period = '8', series_type = 'close')
			rsi, meta_rsi = ti.get_rsi(symbol = symb, interval = tInterval, time_period = '14', series_type='close')
			plusDI, meta_plusDI = ti.get_plus_di(symbol = symb, interval = tInterval, time_period = '14')
			minusDI, meta_minusDI = ti.get_minus_di(symbol = symb, interval = tInterval, time_period = '14')
			cci, meta_cci = ti.get_cci(symbol = symb, interval = tInterval, time_period = '14')
			willR, meta_willR = ti.get_willr(symbol = symb, interval = tInterval, time_period = '14')
			dataDict.append(macD)
			dataDict.append(stoch)
			dataDict.append(ema)
			dataDict.append(rsi)
			dataDict.append(plusDI)
			dataDict.append(minusDI)
			dataDict.append(cci)
			dataDict.append(willR)
	#Returning with nothing tells our main process that there was an error
	except ValueError:
		return

	#Sometimes the API may return a empty list which will cause an error for the training
	for list in dataDict:
		if not list:
			return

	#Need atleast one of the dictionaries to be ordered by date, so we can organize all our data.
	priceData = collections.OrderedDict(sorted(priceData.items()))

	#dates used for drawing graph afterwards
	dates = []
	for day in priceData:
		dates.append(day)

	#Parsing the data
	#All the data for each day is put into an array, which is put into trainingData, sorted by dates
	trainingData = []
	#Putting the ordered price data into priceList, instead of using a Dictionary
	#So if the user doesn't want to include price in training, we still have a list to train
	#for the actual outputs/
	priceList = []
	#If the user is using this in the middle of the day/week/month, the data will have a partial time interval up to the current time
	#Here we remove the last day if it is the same date as today, so we can get a guess for the timer interval asked.
	todaysDate = str(datetime.datetime.now())[:10]
	if todaysDate in priceData.keys():
		del priceData[todaysDate]

	for day in priceData:
		#Making sure the day is in the priceData and each of the technical indicator lists.
		#The API doesn't necessarily give the data for every data for the different requests
		if all(day in indic for indic in dataDict):
			vector = []
			priceData[day] = collections.OrderedDict(sorted(priceData[day].items()))
			for stat in priceData[day]:
				vector.append(float(priceData[day][stat]))
			priceList.append(vector)

			vector = []
			for x in range(0,len(dataDict)):
			#Order the different stats within a data, so the order is consistent across vectors
				dataDict[x][day] = collections.OrderedDict(sorted(dataDict[x][day].items()))
			#Combine all the different data into a vector
			for x in range(0,len(dataDict)):
				for stat in dataDict[x][day]:
					vector.append(float(dataDict[x][day][stat]))
			trainingData.append(vector)

	#If the user wanted to do a tDF, the training data is transformed, otherwise the trainingData goes straight to PredictAndTest
	trendDeter = False if tDF == "No" else True
	#delete first element of priceList because trendDeter, remove first element form training data
	if trendDeter:
		del priceList[0]
		predictAndTest(trendDeterTransform(trainingData), priceList, trendDeter, alg, tInterval, dates, typeClass, return_list)
	else:
		predictAndTest(trainingData, priceList, trendDeter, alg, tInterval, dates, typeClass, return_list)
Exemplo n.º 12
0
class DataLoader:
    """
    API limit: 5 API requests per minute and 500 requests per day
    Get your free API key from
    https://www.alphavantage.co/support/#support

    FOREX, while supported, is not implemented.
    
    API details here:
    https://github.com/RomelTorres/alpha_vantage
    """
    def __init__(self, api_key):
        self.API_KEY = api_key
        self.cc = CryptoCurrencies(key=self.API_KEY, output_format='pandas')
        self.ti = TechIndicators(key=self.API_KEY, output_format='pandas')
        self.ts = TimeSeries(key=self.API_KEY, output_format='pandas')

    def get_local_data(self, path):
        df = pd.read_csv(path)
        return df.sort_values('Timestamp')

    def get_crypto(self, crypto_symbol):

        data, _ = self.cc.get_digital_currency_daily(symbol=crypto_symbol,
                                                     market='CNY')

        return rename_data(data, crypto=True)

    def get_stock(self,
                  stock: str,
                  period=TimeFrame.TimeFrame.DAILY,
                  full: bool = False):
        """
        Returns stock data and meta data of the ticker for the specified time frame
        :param stock: [ENUM]: Stock ticker
        :param period: [ENUM] DAILY, WEEKLY, MONTHLY
        :param full: Returns only last 100 ticks if False, otherwise full tick data set if True. False by default.
        :return: stock data, meta_data
        """
        if period is TimeFrame.TimeFrame.DAILY:
            if full:
                data, _ = self.ts.get_daily(symbol=stock.upper(),
                                            outputsize='full')
                return rename_data(data)
            else:
                data, _ = self.ts.get_daily(symbol=stock.upper(),
                                            outputsize='compact')
                return rename_data(data)

        if period is TimeFrame.TimeFrame.WEEKLY:
            if full:
                data, _ = data = self.ts.get_weekly(symbol=stock.upper(),
                                                    outputsize='full')
                return rename_data(data)
            else:
                data, _ = self.ts.get_weekly(symbol=stock.upper(),
                                             outputsize='compact')
                return rename_data(data)

        if period is TimeFrame.TimeFrame.MONTHLY:
            if full:
                data, _ = self.ts.get_monthly(symbol=stock.upper(),
                                              outputsize='full')
                return rename_data(data)
            else:
                data, _ = self.ts.get_monthly(symbol=stock.upper(),
                                              outputsize='compact')
                return rename_data(data)

    def get_intraday_stock(self,
                           stock: str,
                           interval: INTERVAL = INTERVAL.INTERVAL.FIVE_MIN,
                           full: bool = False):
        """
        Returns intraday tick data for the given stock in the given time interval
        :param stock: [ENUM] ticker
        :param interval: [ENUM] 1min, 5min, 15min, 30min, 60min
        :param full: Returns only last 100 ticks if False, otherwise full tick data set if True. False by default.
        :return: stock data, meta_data
        """

        if full:
            data, _ = self.ts.get_intraday(symbol=stock.upper(),
                                           interval=interval.value,
                                           outputsize='full')
            return rename_data(data)
        else:
            data, _ = self.ts.get_intraday(symbol=stock.upper(),
                                           interval=interval.value,
                                           outputsize='compact')
            return rename_data(data)

    def get_tech_indicator(
        self,
        stock="MSFT",
        indicator=TECHIND.TECHIND.BBANDS,
        interval=TimeFrame.TimeFrame.DAILY,
        time_period: int = 20,
    ):
        """
        Returns the technical indicator for the given stock ticker on the given interval
        :param indicator [ENUM]: @See TECHIND
        :param stock [ENUM]: Ticker
        :param interval: Daily, Weekly, Monthly. Set to Daily by default
        :param time_period: Nr of time units between two calculating points. Set to 20 by default.
        :return: pandas dataframe containing the technical indicator for all recorded trading days of the stock.
        """
        if indicator is TECHIND.TECHIND.BBANDS:
            data, _ = self.ti.get_bbands(symbol=stock.upper(),
                                         interval=interval.name.lower(),
                                         time_period=time_period)

        if indicator is TECHIND.TECHIND.SMA:
            data, _ = self.ti.get_sma(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.EMA:
            data, _ = self.ti.get_ema(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.WMA:
            data, _ = self.ti.get_wma(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.MACD:
            data, _ = self.ti.get_macd(symbol=stock.upper(),
                                       interval=interval.name.lower())

        if indicator is TECHIND.TECHIND.STOCH:
            data, _ = self.ti.get_stoch(symbol=stock.upper(),
                                        interval=interval.name.lower())

        if indicator is TECHIND.TECHIND.RSI:
            data, _ = self.ti.get_rsi(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.ADX:
            data, _ = self.ti.get_adx(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.CCI:
            data, _ = self.ti.get_cci(symbol=stock.upper(),
                                      interval=interval.name.lower(),
                                      time_period=time_period)

        if indicator is TECHIND.TECHIND.AROON:
            data, _ = self.ti.get_aroon(symbol=stock.upper(),
                                        interval=interval.name.lower(),
                                        time_period=time_period)

        if indicator is TECHIND.TECHIND.MOM:
            data, _ = self.ti.get_mom(symbol=stock.upper(),
                                      interval=interval.name.lower())

        if indicator is TECHIND.TECHIND.OBV:
            data, _ = self.ti.get_obv(symbol=stock.upper(),
                                      interval=interval.name.lower())

        return data
symbol = "ORCL"
interval = "1min"


ti = TechIndicators(key='1HAYLUHGCB6E0VXC', output_format='pandas')

print("Progress: 0% complete...")


ad_data, meta_data = ti.get_ad(symbol=symbol, interval=interval)
adosc_data, meta_data = ti.get_adosc(symbol=symbol, interval=interval)
adx_data, meta_data = ti.get_adx(symbol=symbol, interval=interval)
adxr_data, meta_data = ti.get_adxr(symbol=symbol, interval=interval)
apo_data, meta_data = ti.get_apo(symbol=symbol, interval=interval)
aroon_data, meta_data = ti.get_aroon(symbol=symbol, interval=interval)
aroonosc_data, meta_data = ti.get_aroonosc(symbol=symbol, interval=interval)
atr_data, meta_data = ti.get_atr(symbol=symbol, interval=interval)
bop_data, meta_data = ti.get_bop(symbol=symbol, interval=interval)
cci_data, meta_data = ti.get_cci(symbol=symbol, interval=interval)

print("Progress: 20% complete...")

cmo_data, meta_data = ti.get_cmo(symbol=symbol, interval=interval)
dema_data, meta_data = ti.get_dema(symbol=symbol, interval=interval)
dx_data, meta_data = ti.get_dx(symbol=symbol, interval=interval)
ema_data, meta_data = ti.get_ema(symbol=symbol, interval=interval)
ht_dcperiod_data, meta_data = ti.get_ht_dcperiod(symbol=symbol, interval=interval)
ht_dcphase_data, meta_data = ti.get_ht_dcphase(symbol=symbol, interval=interval)
ht_phasor_data, meta_data = ti.get_ht_phasor(symbol=symbol, interval=interval)
ht_sine_data, meta_data = ti.get_ht_sine(symbol=symbol, interval=interval)
Exemplo n.º 14
0
    def drawPastData(self):
        try:
            curr_selection = self.search_symbol_combo.current()
            if (curr_selection >= 0):
                self.script = self.searchTuple[0].values[curr_selection][0]
                self.f.clear()
            else:
                msgbx.showerror('Get Quote', 'No script selected')
                self.focus_force()
                return

            if (self.bool_test == False):
                ts = TimeSeries(self.key, output_format='pandas')
                ti = TechIndicators(self.key, output_format='pandas')

            self.graphctr = 1
            self.f.clear()
            #daily
            if (self.bdaily.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath,
                                              argOutputSize='full')
                    dfdata = testobj.loadDaily(self.script)
                else:
                    dfdata, dfmetadata = ts.get_daily(symbol=self.script,
                                                      outputsize='full')
                #self.changeColNameTypeofDailyTS()
                #self.f.add_subplot(3, 3, graphctr, label='Daily closing price',
                #    xlabel='Date', ylabel='Closing price').plot(self.dfdailyts['Close'], label='Daily closing price')
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax1 = self.f.add_subplot(3,
                                         3,
                                         self.graphctr,
                                         label='Daily closing price')
                #ylabel='Close',
                ax1.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    '4. close'],
                         label='Daily close')
                self.setAxesCommonConfig(ax1, 'Daily closing price')
                self.graphctr += 1

            #intraday
            if (self.bintra.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath,
                                              argOutputSize='full')
                    dfdata = testobj.loadIntra(self.script)
                else:
                    dfdata, dfmetadata = ts.get_intraday(symbol=self.script,
                                                         outputsize='full')
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax2 = self.f.add_subplot(3,
                                         3,
                                         self.graphctr,
                                         label='Intra-day close')
                ax2.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    '4. close'],
                         label='Intra-day close')
                self.setAxesCommonConfig(ax2, 'Intra-day close')
                self.graphctr += 1
            #sma
            if (self.bsma.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadSMA(self.script)
                else:
                    dfdata, dfmetadata = ti.get_sma(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]

                ax3 = self.f.add_subplot(3,
                                         3,
                                         self.graphctr,
                                         label='Simple moving avg')
                ax3.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'SMA'],
                         label='SMA')
                self.setAxesCommonConfig(ax3, 'Simple moving avg')
                self.graphctr += 1

            #ema
            if (self.bema.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadEMA(self.script)
                else:
                    dfdata, dfmetadata = ti.get_ema(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax4 = self.f.add_subplot(3,
                                         3,
                                         self.graphctr,
                                         label='Exponential moving avg')
                ax4.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'EMA'],
                         label='EMA')
                self.setAxesCommonConfig(ax4, 'Exponential moving avg')
                self.graphctr += 1

            #vwap returns one col = VWAP
            if (self.bvwap.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadVWMP(self.script)
                else:
                    dfdata, dfmetadata = ti.get_vwap(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax5 = self.f.add_subplot(3,
                                         3,
                                         self.graphctr,
                                         label='Vol weighted avg price')
                ax5.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'VWAP'],
                         label='VWAP')
                self.setAxesCommonConfig(ax5, 'Volume weighted avg price')
                self.graphctr += 1

            #macd returns 3 cols. For ex, "MACD_Signal": "-4.7394", "MACD": "-7.7800", "MACD_Hist": "-3.0406"
            if (self.bmacd.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadMACD(self.script)
                else:
                    dfdata, dfmetadata = ti.get_macd(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax6 = self.f.add_subplot(3, 3, self.graphctr, label='MACD')
                ax6.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    'MACD_Signal'],
                         'b-',
                         label='MACD Signal')
                ax6.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'MACD'],
                         'y-',
                         label='MACD')
                ax6.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    'MACD_Hist'],
                         'r-',
                         label='MACD Hist')
                self.setAxesCommonConfig(ax6,
                                         'Moving avg convergence/divergence')
                self.graphctr += 1

            #rsi returns one col RSI
            if (self.brsi.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadRSI(self.script)
                else:
                    dfdata, dfmetadata = ti.get_rsi(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax7 = self.f.add_subplot(3, 3, self.graphctr, label='RSI')
                ax7.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'RSI'],
                         label='RSI')
                self.setAxesCommonConfig(ax7, 'Relative strength index')
                self.graphctr += 1

            #adx returns one col ADX
            if (self.badx.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadADX(self.script)
                else:
                    dfdata, dfmetadata = ti.get_adx(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax8 = self.f.add_subplot(3, 3, self.graphctr, label='ADX')
                ax8.plot(dfdata.loc[dfdata.index[:] >= self.pastdate, 'ADX'],
                         label='ADX')
                self.setAxesCommonConfig(ax8,
                                         'Average directional moving index')
                self.graphctr += 1

            #aroon returns two cols for ex "Aroon Up": "28.5714", "Aroon Down": "100.0000"
            if (self.baroon.get() == True):
                if (self.bool_test):
                    testobj = PrepareTestData(argFolder=self.datafolderpath)
                    dfdata = testobj.loadAROON(self.script)
                else:
                    dfdata, dfmetadata = ti.get_aroon(symbol=self.script)
                dfdata = dfdata.sort_index(axis=0, ascending=False)
                #dfdata=dfdata[dfdata.index[:] >= self.pastdate]
                ax9 = self.f.add_subplot(3, 3, self.graphctr, label='AROON')
                ax9.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    'Aroon Up'],
                         'b-',
                         label='Aroon Up')
                ax9.plot(dfdata.loc[dfdata.index[:] >= self.pastdate,
                                    'Aroon Down'],
                         'r-',
                         label='Aroon Down')
                self.setAxesCommonConfig(ax9, 'AROON')
                self.graphctr += 1

            #self.f.legend() #(loc='upper right')
            self.output_canvas.set_window_title(self.script)
            self.output_canvas.draw()
            self.toolbar.update()

        except Exception as e:
            msgbx.showerror("Graph error", str(e))

        self.btn_get_daily_close.focus_force()
Exemplo n.º 15
0
def init_data(companies):
    #     pd.DataFrame(),pd.DataFrame(), pd.DataFrame(),[],pd.DataFrame(),
    for comp in companies:
        # main_data[comp] = pd.read_csv(f'./rsc/{comp}_data.csv', sep = ',')
        # main_data[comp].dropna()

        # Input all the technical indicators and the stock times series data

        ti = TechIndicators(key='L2O2TYTG382ETN0N', output_format='pandas')

        # Fetch the simple moving average (SMA) values
        main_data[comp], meta_data = ti.get_sma(symbol=comp,
                                                interval='1min',
                                                time_period=100,
                                                series_type='close')

        # Fetch the exponential moving average (EMA) values
        ema_data, meta_data = ti.get_ema(symbol=comp,
                                         interval='1min',
                                         time_period=100,
                                         series_type='close')
        main_data[comp]['EMA'] = ema_data
        """
        # Fetch the weighted moving average (WMA) values
        wma_data, meta_data = ti.get_wma(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['WMA'] = wma_data
        
        # Fetch the double exponential moving agerage (DEMA) values
        dema_data, meta_data = ti.get_dema(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['DEMA'] = dema_data
        
        # Fetch the triple exponential moving average (TEMA) values
        tema_data, meta_data = ti.get_tema(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['TEMA'] = tema_data
        
        # Fetch the triangular moving average (TRIMA) values 
        trima_data, meta_data = ti.get_trima(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['TRIMA'] = trima_data

        # Fetch the Kaufman adaptive moving average (KAMA) values
        kama_data, meta_data = ti.get_kama(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['KAMA'] = kama_data		

        # Fetch the MESA adaptive moving average (MAMA) values
        mama_data, meta_data = ti.get_mama(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['MAMA'] = mama_data['MAMA']
        main_data[comp]['FAMA'] = mama_data['FAMA']

        # Fetch the triple exponential moving average (T3) values
        t3_data, meta_data = ti.get_t3(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['T3'] = t3_data	
        """

        # Fetch the moving average convergence / divergence (MACD) values
        macd_data, meta_data = ti.get_macd(symbol=comp,
                                           interval='1min',
                                           series_type='close')
        main_data[comp]['MACD'] = macd_data['MACD']
        main_data[comp]['MACD_Hist'] = macd_data['MACD_Hist']
        main_data[comp]['MACD_Signal'] = macd_data['MACD_Signal']
        """		
        # Fetch the moving average convergence / divergence values with controllable moving average type
        macdext_data, meta_data = ti.get_macdext(symbol=comp,interval='1min', series_type='close')
        main_data[comp]['MACDEXT'] = macdext_data['MACD']
        main_data[comp]['MACDEXT_Hist'] = macdext_data['MACD_Hist']
        main_data[comp]['MACDEXT_Signal'] = macdext_data['MACD_Signal']
        """

        # Fetch the stochastic oscillator (STOCH) values
        stoch_data, meta_data = ti.get_stoch(symbol=comp, interval='1min')
        main_data[comp]['SlowK'] = stoch_data['SlowK']
        main_data[comp]['SlowD'] = stoch_data['SlowD']
        """
        # Fetch the stochastic fast (STOCHF) values
        stochf_data, meta_data = ti.get_stochf(symbol=comp,interval='1min')
        main_data[comp]['FastK'] = stochf_data['FastK']
        main_data[comp]['FastD'] = stochf_data['FastD']
        """

        # Fetch the relative strength index (RSI) values
        rsi_data, meta_data = ti.get_rsi(symbol=comp,
                                         interval='1min',
                                         time_period=10,
                                         series_type='close')
        main_data[comp]['RSI'] = rsi_data
        """
        # Fetch the stochastic relative strength index (STOCHRSI) values
        stochrsi_data, meta_data = ti.get_stochrsi(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['STOCHRSI_FastK'] = stochrsi_data['FastK']
        main_data[comp]['STOCHRSI_FastD'] = stochrsi_data['FastD']

        # Fetch the Williams' %R (WILLR) values
        willr_data, meta_data = ti.get_willr(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['WILLR'] = willr_data
        """

        # Fetch the average directional movement index (ADX) values
        adx_data, meta_data = ti.get_adx(symbol=comp,
                                         interval='1min',
                                         time_period=100)
        main_data[comp]['ADX'] = adx_data
        """
        # Fetch the average directional movement index rating (ADXR) values
        adxr_data, meta_data = ti.get_adxr(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['ADXR'] = adxr_data

        # Fetch the absolute price oscillator (APO) values
        apo_data, meta_data = ti.get_apo(symbol=comp,interval='1min', series_type='close')
        main_data[comp]['APO'] = apo_data

        # Fetch the percentage price oscillator (PPO) values
        ppo_data, meta_data = ti.get_ppo(symbol=comp,interval='1min', series_type='close')
        main_data[comp]['PPO'] = ppo_data

        # Fetch the momentum (MOM) values
        mom_data, meta_data = ti.get_mom(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['MOM'] = mom_data

        # Fetch the balance of power (BOP) values
        bop_data, meta_data = ti.get_bop(symbol=comp,interval='1min')
        main_data[comp]['BOP'] = bop_data
        """
        time.sleep(5)

        # Fetch the commodity channel index (CCI) values
        cci_data, meta_data = ti.get_cci(symbol=comp,
                                         interval='1min',
                                         time_period=100)
        main_data[comp]['CCI'] = cci_data
        """
        # Fetch the Chande momentum oscillator (CMO) values
        cmo_data, meta_data = ti.get_cmo(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['CMO'] = cmo_data

        # Fetch the rate of change (ROC) values
        roc_data, meta_data = ti.get_roc(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['ROC'] = roc_data


        # Fetch the rate of change ratio (ROCR) values
        rocr_data, meta_data = ti.get_rocr(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['ROCR'] = rocr_data

        time.sleep(5)
        """
        # Fetch the Aroon (AROON) values
        aroon_data, meta_data = ti.get_aroon(symbol=comp,
                                             interval='1min',
                                             time_period=100)
        main_data[comp]['Aroon Down'] = aroon_data['Aroon Down']
        main_data[comp]['Aroon Up'] = aroon_data['Aroon Up']
        """
        # Fetch the Aroon oscillator (AROONOSC) values
        aroonosc_data, meta_data = ti.get_aroonosc(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['AROONOSC'] = aroonosc_data

        # Fetch the money flow index (MFI) values
        mfi_data, meta_data = ti.get_mfi(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['MFI'] = mfi_data

        # Fetch the 1-day rate of change of a triple smooth exponential moving average (TRIX) values
        triX_train_data['AAPL'], meta_data = ti.get_trix(symbol=comp,interval='1min', time_period=10, series_type='close')
        main_data[comp]['TRIX'] = triX_train_data['AAPL']

        # Fetch the ultimate oscillator (ULTOSC) values
        ultosc_data, meta_data = ti.get_ultsoc(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['ULTOSC'] = ultosc_data

        # Fetch the directional movement index (DX) values
        dX_train_data['AAPL'], meta_data = ti.get_dx(symbol=comp,interval='1min', time_period=10)
        main_data[comp]['DX'] = dX_train_data['AAPL']
        """

        # Fetch the Chaikin A/D line (AD) value
        ad_data, meta_data = ti.get_trix(symbol=comp, interval='1min')
        main_data[comp]['AD'] = ad_data

        # Fetch the on balance volume (OBV) values
        obv_data, meta_data = ti.get_obv(symbol=comp, interval='1min')
        main_data[comp]['OBV'] = obv_data

        # print(main_data[comp].head())

        ts = TimeSeries(key='L2O2TYTG382ETN0N', output_format='pandas')
        intraday_data, meta_data = ts.get_intraday(symbol=comp,
                                                   interval='1min',
                                                   outputsize='full')

        # intraday_data = intraday_data.iloc[9:]
        # intraday_data = intraday_data.reset_index(drop=True)
        # intraday_data.index = main_data[comp].index
        # intraday_data.set_index('date')
        intraday_data.index = pd.Index(
            [index[:-3] for index in intraday_data.index], name='date')
        # intraday_data.set_index('date')
        """
        for index in intraday_data.index:
            print(index)
        print(type(intraday_data.index))
        """

        main_data[comp] = pd.concat([main_data[comp], intraday_data], axis=1)
        print(main_data[comp].index)

        print(main_data[comp].head())

        main_data[comp] = main_data[comp].dropna()
        main_data[comp].index.name = 'date'

        y = np.where(
            main_data[comp]['4. close'].shift(-1) >
            main_data[comp]['4. close'], 1, -1)
        main_data[comp]['Open-Close'] = main_data[comp]['1. open'] - main_data[
            comp]['4. close']
        main_data[comp]['High-Low'] = main_data[comp]['2. high'] - main_data[
            comp]['3. low']
        X = main_data[comp][main_data[comp].columns[0:]]
        split = int(split_percentage * len(main_data[comp]['1. open']))
        X_split_data[comp] = main_data[comp][split:]
        X_train_data[comp] = X[:split]
        y_train_data[comp] = y[:split]
        X_test_data[comp] = X[split:]
        y_test_data[comp] = y[split:]

    return main_data
Exemplo n.º 16
0
def get_technical(symbol, is_save=False):
    """
    Esta función es para descargar todos los indicadores técnicos.
    Si usamos una API_KEY gratuita de ALPHA VANTAGE tenemos que
    descomentar los time.sleep() de la función para que no de un
    problema de peticiones; en el caso de una API_KEY premium no haría
    falta descomentarlo.

    Parámetros:
    ----------
        symbol str:
            Nombre de la acción en bolsa.
        is_save bool:
            Booleano para decidir si guardar o no los datos
            descargados. Por defecto False no guarda los
            datos descargados
    """
    try:
        # Comprueba si ya existe o no el archivo y en el caso de que
        # si exista guarda solo los días que no estén descargados
        if os.path.isfile(f"{c.PATH_SAVE_TECH}{symbol}.csv"):
            df = pd.read_csv(f"{c.PATH_SAVE_TECH}{symbol}.csv",
                             names=c.COLUMNS)
            df = df[df['symbol'] == symbol]
            df['date'] = pd.to_datetime(df['date'])
            ld = df['date'].tail(1)
            last = datetime(ld.dt.year, ld.dt.month, ld.dt.day)
        else:
            last = None

        techindc = list()

        # Descarga los datos de indicadores técnicos.
        ti = TechIndicators(key=c.ALPHA_VAN_KEY, output_format='pandas')
        init = time.time()
        macd = ti.get_macd(symbol, interval='daily')[0]
        techindc.append(macd)

        stoch = ti.get_stoch(symbol, interval='daily')[0]
        techindc.append(stoch)

        ad = ti.get_ad(symbol, interval='daily')[0]
        techindc.append(ad)

        obv = ti.get_obv(symbol, interval='daily')[0]
        techindc.append(obv)

        #    time.sleep(60)

        sma = ti.get_sma(symbol, interval='daily', time_period=50)[0]
        sma.columns = [f"{c}50" for c in sma.columns]
        techindc.append(sma)

        bbands = ti.get_bbands(symbol, interval='daily', time_period=28)[0]
        bbands.columns = [f"{c}28" for c in bbands.columns]
        techindc.append(bbands)

        for tp in c.TIME_PERIOD:

            rsi = ti.get_rsi(symbol, interval='daily', time_period=tp)[0]
            rsi.columns = [f"{c}{tp}" for c in rsi.columns]
            techindc.append(rsi)

            adx = ti.get_adx(symbol, interval='daily', time_period=tp)[0]
            adx.columns = [f"{c}{tp}" for c in adx.columns]
            techindc.append(adx)

            #        time.sleep(60)

            cci = ti.get_cci(symbol, interval='daily', time_period=tp)[0]
            cci.columns = [f"{c}{tp}" for c in cci.columns]
            techindc.append(cci)

            aroon = ti.get_aroon(symbol, interval='daily', time_period=tp)[0]
            aroon.columns = [f"{c}{tp}" for c in aroon.columns]
            techindc.append(aroon)

        df_techindc = pd.concat(techindc, axis=1, join='inner')
        df_techindc.reset_index(inplace=True)
        df_techindc['symbol'] = symbol

        if last is not None:
            df_techindc = df_techindc[df_techindc['date'] > last]

        # Guardar los datos
        if is_save:
            df_techindc[c.COLUMNS_TECH].to_csv(
                f"{c.PATH_SAVE_TECH}{symbol}.csv",
                mode='a',
                index=False,
                header=False)
    except:
        LOGGER.warning(f"Ticker {symbol} ha fallado.")
Exemplo n.º 17
0
rsi, meta_data_rsi = ti.get_rsi(symbol=stock, interval=t_period, series_type= series_type)
print rsi.shape
#6
macd, meta_data_macd = ti.get_macd(symbol=stock,interval=t_period, series_type= series_type)
print macd.shape
#7
stoch, meta_data_stoch = ti.get_stoch(symbol=stock, interval=t_period)
print stoch.shape
#8
adx, meta_data_adx = ti.get_adx(symbol=stock, interval=t_period)
print adx.shape
#9
cci, meta_data_cci = ti.get_cci(symbol=stock, interval=t_period)
print cci.shape
#10
aroon, meta_data_aroon = ti.get_aroon(symbol=stock, interval=t_period, series_type=series_type)
print aroon.shape
#11
ad, meta_data_ad = ti.get_ad(symbol=stock, interval=t_period)
print ad.shape
#12
obv, meta_data_obv = ti.get_obv(symbol=stock, interval=t_period)
print obv.shape
#13
mom, meta_data_mom = ti.get_mom(symbol=stock, interval=t_period, series_type= series_type)
#14
willr, meta_data_willr = ti.get_willr(symbol=stock, interval=t_period)


result = data.join(bbands, how='left').join(ema , how='left').join( wma, how='left').join(sma , how='left').join(rsi , how='left').join(macd , how='left').join(stoch , how='left').join( adx, how='left').join(cci , how='left').join(aroon , how='left').join(ad, how='left').join(obv,how='left').join(mom,how='left').join(willr,how='left')   # join at the end
result['label'] = np.where(result['trend']>= 0, 1, 0) # 1 price-up and 0 price-down
def techIndicatorPull(symbol):
    interval = "1min"
    print("Calculating Tech Indicators ...")

    ti = TechIndicators(key='1HAYLUHGCB6E0VXC', output_format='pandas')

    print("Progress: 0% complete...")

    ad_data, meta_data = ti.get_ad(symbol=symbol, interval=interval)
    adosc_data, meta_data = ti.get_adosc(symbol=symbol, interval=interval)
    adx_data, meta_data = ti.get_adx(symbol=symbol, interval=interval)
    adxr_data, meta_data = ti.get_adxr(symbol=symbol, interval=interval)
    apo_data, meta_data = ti.get_apo(symbol=symbol, interval=interval)
    aroon_data, meta_data = ti.get_aroon(symbol=symbol, interval=interval)
    aroonosc_data, meta_data = ti.get_aroonosc(symbol=symbol,
                                               interval=interval)
    atr_data, meta_data = ti.get_atr(symbol=symbol, interval=interval)
    bop_data, meta_data = ti.get_bop(symbol=symbol, interval=interval)
    cci_data, meta_data = ti.get_cci(symbol=symbol, interval=interval)

    print("Progress: 20% complete...")

    cmo_data, meta_data = ti.get_cmo(symbol=symbol, interval=interval)
    dema_data, meta_data = ti.get_dema(symbol=symbol, interval=interval)
    dx_data, meta_data = ti.get_dx(symbol=symbol, interval=interval)
    ema_data, meta_data = ti.get_ema(symbol=symbol, interval=interval)
    ht_dcperiod_data, meta_data = ti.get_ht_dcperiod(symbol=symbol,
                                                     interval=interval)
    ht_dcphase_data, meta_data = ti.get_ht_dcphase(symbol=symbol,
                                                   interval=interval)
    ht_phasor_data, meta_data = ti.get_ht_phasor(symbol=symbol,
                                                 interval=interval)
    ht_sine_data, meta_data = ti.get_ht_sine(symbol=symbol, interval=interval)
    ht_trendline_data, meta_data = ti.get_ht_trendline(symbol=symbol,
                                                       interval=interval)
    ht_trendmode_data, meta_data = ti.get_ht_trendmode(symbol=symbol,
                                                       interval=interval)

    print("Progress: 40% complete...")

    kama_data, meta_data = ti.get_kama(symbol=symbol, interval=interval)
    macd_data, meta_data = ti.get_macd(symbol=symbol, interval=interval)
    macdext_data, meta_data = ti.get_macdext(symbol=symbol, interval=interval)
    mama_data, meta_data = ti.get_mama(symbol=symbol, interval=interval)
    mfi_data, meta_data = ti.get_mfi(symbol=symbol, interval=interval)
    midpoint_data, meta_data = ti.get_midpoint(symbol=symbol,
                                               interval=interval)
    midprice_data, meta_data = ti.get_midprice(symbol=symbol,
                                               interval=interval)
    minus_di_data, meta_data = ti.get_minus_di(symbol=symbol,
                                               interval=interval)
    mom_data, meta_data = ti.get_mom(symbol=symbol, interval=interval)
    natr_data, meta_data = ti.get_natr(symbol=symbol, interval=interval)

    print("Progress: 60% complete...")

    obv_data, meta_data = ti.get_obv(symbol=symbol, interval=interval)
    plus_di_data, meta_data = ti.get_plus_di(symbol=symbol, interval=interval)
    plus_dm_data, meta_data = ti.get_plus_dm(symbol=symbol, interval=interval)
    ppo_data, meta_data = ti.get_ppo(symbol=symbol, interval=interval)
    roc_data, meta_data = ti.get_roc(symbol=symbol, interval=interval)
    rocr_data, meta_data = ti.get_rocr(symbol=symbol, interval=interval)
    rsi_data, meta_data = ti.get_rsi(symbol=symbol, interval=interval)
    sar_data, meta_data = ti.get_sar(symbol=symbol, interval=interval)
    sma_data, meta_data = ti.get_sma(symbol=symbol, interval=interval)
    stoch_data, meta_data = ti.get_stoch(symbol=symbol, interval=interval)

    print("Progress: 80% complete...")

    stochf_data, meta_data = ti.get_stochf(symbol=symbol, interval=interval)
    stochrsi_data, meta_data = ti.get_stochrsi(symbol=symbol,
                                               interval=interval)
    t3_data, meta_data = ti.get_t3(symbol=symbol, interval=interval)
    tema_data, meta_data = ti.get_tema(symbol=symbol, interval=interval)
    trange_data, meta_data = ti.get_trange(symbol=symbol, interval=interval)
    trima_data, meta_data = ti.get_trima(symbol=symbol, interval=interval)
    trix_data, meta_data = ti.get_trix(symbol=symbol, interval=interval)
    ultsoc_data, meta_data = ti.get_ultsoc(symbol=symbol, interval=interval)
    willr_data, meta_data = ti.get_willr(symbol=symbol, interval=interval)
    wma_data, meta_data = ti.get_wma(symbol=symbol, interval=interval)
    bbands_data, meta_data = ti.get_bbands(symbol=symbol, interval=interval)

    print("Progress: 90% complete...")

    result = pd.concat([
        ad_data, adosc_data, adx_data, adxr_data, apo_data, aroon_data,
        aroonosc_data, atr_data, bop_data, cci_data, cmo_data, dema_data,
        dx_data, ema_data, ht_dcperiod_data, ht_dcphase_data, ht_phasor_data,
        ht_sine_data, ht_trendline_data, ht_trendmode_data, kama_data,
        macd_data, macdext_data, mama_data, mfi_data, midpoint_data,
        midprice_data, minus_di_data, mom_data, natr_data, obv_data,
        plus_di_data, plus_dm_data, ppo_data, roc_data, rocr_data, rsi_data,
        sar_data, sma_data, stoch_data, stochf_data, stochrsi_data, t3_data,
        tema_data, trange_data, trima_data, trix_data, ultsoc_data, willr_data,
        wma_data, bbands_data
    ],
                       axis=1)

    result["stockticker"] = symbol

    result = result.reindex(result.index.rename('timestamp'))
    result = result.dropna(axis=0, how='any')
    result = result.round(2)
    result = result.rename(
        columns={
            'Chaikin A/D': 'ChaikinAD',
            'Aroon Up': 'AroonUp',
            'Aroon Down': 'AroonDown',
            'LEAD SINE': 'LeadSine',
            'Real Upper Band': 'RealUpperBand',
            'Real Middle Band': 'RealMiddleBand',
            'Real Lower Band': 'RealLowerBand'
        })

    fd = open('results/rawTechIndicatorData.csv', 'w')
    result.to_csv(fd, index=True, encoding='utf-8')
    fd.close()

    print("Progress: 99% complete...")

    df = pd.read_csv('results/rawTechIndicatorData.csv')

    insertToOracleDatabase(
        df,
        '''insert /*+ ignore_row_on_dupkey_index(stocktechindicator, stocktechindicator_pk) */
                                    into stocktechindicator 
                                    (timestamp,ChaikinAD,ADOSC,ADX,ADXR,
                                    APO,AroonUp,AroonDown,AROONOSC,ATR,
                                    BOP,CCI,CMO,DEMA,DX,
                                    EMA,DCPERIOD,HT_DCPHASE,QUADRATURE, PHASE,
                                    LEADSINE,SINE,HT_TRENDLINE,TRENDMODE,KAMA,
                                    MACD,MACD_Hist,MACD_Signal,MACD_Signal2,MACD2,
                                    MACD_Hist2,FAMA,MAMA,MFI,MIDPOINT,
                                    MIDPRICE,MINUS_DI,MOM,NATR,OBV,
                                    PLUS_DI,PLUS_DM,PPO,ROC,ROCR,
                                    RSI,SAR,SMA,SlowK,SlowD,
                                    FastK,FastD,FastK2,FastD2,T3,
                                    TEMA,TRANGE,TRIMA,TRIX,ULTOSC,
                                    WILLR,WMA,RealLowerBand,RealUpperBand,RealMiddleBand,
                                    stockticker) 
                                    values (:1, :2, :3, :4, :5, 
                                            :6, :7, :8, :9, :10,
                                            :11, :12, :13, :14, :15, 
                                            :16, :17, :18, :19, :20, 
                                            :21, :22, :23, :24, :25, 
                                            :26, :27, :28, :29, :30, 
                                            :31, :32, :33, :34, :35, 
                                            :36, :37, :38, :39, :40, 
                                            :41, :42, :43, :44, :45, 
                                            :46, :47, :48, :49, :50, 
                                            :51, :52, :53, :54, :55, 
                                            :56, :57, :58, :59, :60, 
                                            :61, :62, :63, :64, :65, 
                                            :66)''')
Exemplo n.º 19
0
def data_to_csv(ticker, dire):
    # Your key here - keep it - not an issue, free
    key = '6LGG0QGAGBROB2M6'

    # make the directory if it doesn't exist
    if os.path.isdir(dire) == False:
        os.mkdir(ticker)
        os.mkdir(dire)

    ts = TimeSeries(key=key, output_format='pandas')
    ti = TechIndicators(key=key, output_format='pandas')

    ### PRICE ###############################################################
    intra, meta = ts.get_intraday(symbol=ticker,
                                  interval='1min',
                                  outputsize='full')
    intra.to_csv(dire + ticker + "_prices.csv")

    ### SMA #################################################################
    sma8, meta = ti.get_sma(symbol=ticker, interval='1min', time_period=8)
    sma8.to_csv(dire + ticker + "_sma8.csv")

    ### EMA #################################################################
    ema8, meta = ti.get_ema(symbol=ticker, interval='1min', time_period=8)
    ema8.to_csv(dire + ticker + "_ema8.csv")

    ### VWAP ################################################################
    vwap, meta = ti.get_vwap(symbol=ticker, interval='1min')
    vwap.to_csv(dire + ticker + "_vwap.csv")

    ### MACD ################################################################
    macd, meta = ti.get_macd(symbol=ticker, interval='1min')
    macd.to_csv(dire + ticker + "_macd.csv")

    # they limit user to 5 calls per minute and 500 per day for free access #
    print("waiting so we don't overload API (60 seconds...)")
    time.sleep(60)

    ### STOCH ###############################################################
    stoch, meta = ti.get_stoch(symbol=ticker, interval='1min')
    stoch.to_csv(dire + ticker + "_stoch.csv")

    ### RSI #################################################################
    rsi, meta = ti.get_rsi(symbol=ticker, interval='1min', time_period=60)
    rsi.to_csv(dire + ticker + "_rsi.csv")

    ### ADX #################################################################
    adx, meta = ti.get_adx(symbol=ticker, interval='1min', time_period=60)
    adx.to_csv(dire + ticker + "_adx.csv")

    ### CCI #################################################################
    cci, meta = ti.get_cci(symbol=ticker, interval='1min', time_period=60)
    cci.to_csv(dire + ticker + "_cci.csv")

    # TODO: These are tricky, several lines, parse differently, separate indices really
    ### AROON ###############################################################
    aroon, meta = ti.get_aroon(symbol=ticker, interval='1min', time_period=60)
    aroon.to_csv(dire + ticker + "_aroon.csv")

    # they limit user to 5 calls per minute and 500 per day for free access #
    print("waiting so we don't overload API (60 seconds...)")
    time.sleep(60)

    ### BBANDS ###############################################################
    bbands, meta = ti.get_bbands(symbol=ticker,
                                 interval='1min',
                                 time_period=60)
    bbands.to_csv(dire + ticker + "_bbands.csv")
    '''
Exemplo n.º 20
0
df['sma'], _ = ti.get_sma(symbol=symbol, time_period=sma_time_period)
df['ema'], _ = ti.get_ema(symbol=symbol, time_period=ema_time_period)
df['rsi'], _ = ti.get_rsi(symbol=symbol, time_period=rsi_time_period)
df['obv'], _ = ti.get_obv(symbol=symbol)
macd = ti.get_macd(symbol=symbol)[0].sort_index(axis=0, ascending=True)
for column in macd.columns:
    df[column] = macd[column]

stoch = ti.get_stoch(symbol=symbol)[0].sort_index(axis=0, ascending=True)
for column in stoch.columns:
    df[column] = stoch[column]

df['adx'], _ = ti.get_adx(symbol=symbol, time_period=adx_time_period)
df['cci'], _ = ti.get_cci(symbol=symbol, time_period=cci_time_period)
aroon = ti.get_aroon(
    symbol=symbol, time_period=aroon_time_period)[0].sort_index(axis=0,
                                                                ascending=True)
for column in aroon.columns:
    df[column] = aroon[column]

bbands = ti.get_bbands(symbol=symbol,
                       time_period=bbands_time_period)[0].sort_index(
                           axis=0, ascending=True)
for column in bbands.columns:
    df[column] = bbands[column]

df['ad'], _ = ti.get_ad(symbol=symbol)

df['shifted_ROC_BOOL'] = (df['roc'].shift(-1) >= 0).astype(int)

df.to_csv(filename)