Что вызывает пустую последовательность в моем коде? - PullRequest
0 голосов
/ 29 апреля 2018

Я использую предварительно созданный код с именем trendy.py: https://github.com/dysonance/Trendy

Некоторая часть кода вычисляет Max1 и Max2 | Min1 и Min2

Для каждой выбранной мной компании я передаю код цены закрытия последних 100 дней.

Код работает, как и ожидалось, для некоторых компаний, но для более половины это дает мне ValueError.

min2 = min(x[(min1 + window):])

ValueError: min() arg is an empty sequence

Так что, мне кажется, проблема в min1. Он не может быть рассчитан и поэтому остается пустым. И тогда пустая последовательность подается на min2.

Может кто-нибудь взглянуть и сообщить, что, по вашему мнению, является причиной этой проблемы?

Вот пример файла, который я использовал в качестве входных данных (он дает мне описанную ошибку).

https://docs.google.com/spreadsheets/d/1xZdSGE05SfyoL9D4akSH0KlV8s2cR1CJLqLlVEzq_4k/edit?usp=sharing

Вот соответствующая часть кода:

def gentrends(x, window=1/3.0, charts=True):
    """
    Returns a Pandas dataframe with support and resistance lines.
    :param x: One-dimensional data set
    :param window: How long the trendlines should be. If window < 1, then it
                   will be taken as a percentage of the size of the data
    :param charts: Boolean value saying whether to print chart to screen
    """

    import numpy as np
    import pandas as pd
    from pandas_datareader import data, wb

    x = np.array(x)

    if window < 1:
        window = int(window * len(x))

    max1 = np.where(x == max(x))[0][0]  # find the index of the abs max
    min1 = np.where(x == min(x))[0][0]  # find the index of the abs min

    # First the max
    if max1 + window > len(x):
        max2 = max(x[0:(max1 - window)])
    else:
        max2 = max(x[(max1 + window):])

    # Now the min
    if min1 - window < 0:
        min2 = min(x[(min1 + window):])
    else:
        min2 = min(x[0:(min1 - window)])

    # Now find the indices of the secondary extrema
    max2 = np.where(x == max2)[0][0]  # find the index of the 2nd max
    min2 = np.where(x == min2)[0][0]  # find the index of the 2nd min

1 Ответ

0 голосов
/ 01 мая 2018

Я публикую это на тот случай, если кто-нибудь столкнется с этой проблемой.

Данные, которые я предоставлял, были ценами закрытия последних 100 дней. Однако, если вы увеличите количество точек данных, то эта ошибка будет намного меньше.

В Alphavantage API используйте «полный», а не «компактный» для ежедневных временных рядов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...