是什么导致我的代码中出现空序列?
What is causing the empty sequence in my code?
我正在使用名为 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
我发布这篇文章是为了防止有人遇到这个问题。
我输入的数据是最近 100 天的收盘价。但是,如果你增加数据点的数量,那么你遇到的给定错误就会少得多。
来自 Alphavantage API,在每日时间序列上使用 "full" 而不是 "compact"。
我正在使用名为 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
我发布这篇文章是为了防止有人遇到这个问题。
我输入的数据是最近 100 天的收盘价。但是,如果你增加数据点的数量,那么你遇到的给定错误就会少得多。
来自 Alphavantage API,在每日时间序列上使用 "full" 而不是 "compact"。