Example #1
0
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
Example #2
0
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
Example #3
0
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