def process_ema_data_for(ticker, api_key, ema_period, interval, date=None): url = 'https://www.alphavantage.co/query?function=EMA&symbol={0}&interval={1}&time_period={2}&series_type=open&apikey={3}'.format( ticker, interval, ema_period, api_key) try: r = requests.get(url) except requests.exceptions.ConnectionError: time.sleep(60) r = requests.get(url) response_data = r.json() data = response_data['Technical Analysis: EMA'] print( str(datetime.datetime.now()) + ' : . EMA-' + str(ema_period) + ' data') if is_valid_date(date): ema_key = 'ema' + str(ema_period) try: try: ema_value = data[date]['EMA'] update_daily_technicals_ema(ticker, date, interval, ema_key, ema_value) except: new_date = date + " 16:00:01" ema_value = data[new_date]['EMA'] update_daily_technicals_ema(ticker, new_date, interval, ema_key, ema_value) except: print( str(datetime.datetime.now()) + " : WARNING --- Ticker: " + ticker + " Date: " + date + " " + ema_key + "(" + url + ") NOT FOUND!!!... Moving to the next one!!!") else: last_run = get_status(ticker, interval=interval) for date in data: try: new_date = datetime.datetime.strptime(date, '%Y-%m-%d').date() except: new_date = datetime.datetime.strptime( date, '%Y-%m-%d %H:%M:%S').date() if interval == 'daily': start_date = datetime.datetime.strptime( DAILY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() elif interval == 'weekly': start_date = datetime.datetime.strptime( WEEKLY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() if last_run == None: last_run = start_date if new_date > start_date and new_date > last_run: update_daily_technicals_ema(ticker, date, interval, 'ema' + str(ema_period), data[date]['EMA']) else: break
def process_stochastic_data_for(ticker, api_key, interval, date=None): url = 'https://www.alphavantage.co/query?function=STOCH&symbol={0}&interval={1}&apikey={2}'.format( ticker, interval, api_key) try: r = requests.get(url) except requests.exceptions.ConnectionError: time.sleep(60) r = requests.get(url) except requests.exceptions.ChunkedEncodingError: time.sleep(60) r = requests.get(url) response_data = r.json() data = response_data['Technical Analysis: STOCH'] print(str(datetime.datetime.now()) + ' : . Stochastic data') if is_valid_date(date): try: try: update_daily_technicals_stochs( ticker, date, interval, data[date]['SlowK'], data[date]['SlowD'], (float(data[date]['SlowK']) - float(data[date]['SlowD']))) except: new_date = date + " 16:00:01" update_daily_technicals_stochs( ticker, new_date, interval, data[new_date]['SlowK'], data[new_date]['SlowD'], (float(data[new_date]['SlowK']) - float(data[new_date]['SlowD']))) except: print( str(datetime.datetime.now()) + " : WARNING --- Ticker: " + ticker + " Date: " + date + " Stochastic data(" + url + ") NOT FOUND!!!... Moving to the next one!!!") else: last_run = get_status(ticker, interval=interval) for date in data: try: new_date = datetime.datetime.strptime(date, '%Y-%m-%d').date() except: new_date = datetime.datetime.strptime( date, '%Y-%m-%d %H:%M:%S').date() if interval == 'daily': start_date = datetime.datetime.strptime( DAILY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() elif interval == 'weekly': start_date = datetime.datetime.strptime( WEEKLY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() if last_run == None: last_run = start_date if new_date > start_date and new_date > last_run: update_daily_technicals_stochs( ticker, date, interval, data[date]['SlowK'], data[date]['SlowD'], (float(data[date]['SlowK']) - float(data[date]['SlowD']))) else: break
def update_price_volume_data_for(ticker, api_key, interval, date): if interval == 'daily': interval_enum = 'TIME_SERIES_DAILY' elif interval == 'weekly': interval_enum = 'TIME_SERIES_WEEKLY' url = 'https://www.alphavantage.co/query?function={0}&symbol={1}&outputsize=full&apikey={2}'.format( interval_enum, ticker, api_key) try: r = requests.get(url) except requests.exceptions.ConnectionError: time.sleep(60) r = requests.get(url) response_data = r.json() data = response_data['Time Series (Daily)'] print(str(datetime.datetime.now()) + ' : . Price/Volume data') if is_valid_date(date): try: try: update_daily_price_volume(ticker, date, interval, data[date]['1. open'], data[date]['2. high'], data[date]['3. low'], data[date]['4. close'], data[date]['5. volume']) except: new_date = date + " 16:00:01" insert_daily_price_volume(ticker, new_date, interval, data[new_date]['1. open'], data[new_date]['2. high'], data[new_date]['3. low'], data[new_date]['4. close'], data[new_date]['5. volume']) except: print( str(datetime.datetime.now()) + " : WARNING --- Ticker: " + ticker + " Date: " + date + " Price/Volume data(" + url + ") NOT FOUND!!!... Moving to the next one!!!") else: last_run = get_status(ticker, interval=interval) for date in data: try: new_date = datetime.datetime.strptime(date, '%Y-%m-%d').date() except: new_date = datetime.datetime.strptime( date, '%Y-%m-%d %H:%M:%S').date() if interval == 'daily': start_date = datetime.datetime.strptime( DAILY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() elif interval == 'weekly': start_date = datetime.datetime.strptime( WEEKLY_DATA_COLLECTION_START_DATE, '%Y-%m-%d').date() if last_run == None: last_run = start_date if new_date > start_date and new_date > last_run: update_daily_price_volume(ticker, date, interval, data[date]['1. open'], data[date]['2. high'], data[date]['3. low'], data[date]['4. close'], data[date]['5. volume']) else: break