【发布时间】:2022-01-03 06:16:48
【问题描述】:
我正在尝试使用 RSI 进行技术分析,其中包含 2 个收益和损失列表,然后获取 2 个列表的平均值。出于某种原因,当使用 sum() 时,我收到了 2 个列表的相同值。当手动添加列表的总和时,我看到了不同的结果。这就是我所拥有的:
def calculate_avg_gain(in_list : list) -> tuple:
gain_list = []
loss_list = []
for i, close in enumerate(in_list):
try:
change = close - in_list[i-1]
except IndexError:
change = 0.0
if change >= 0.0:
gain_list.append(change)
loss_list.append(0.0)
else:
gain_list.append(0.0)
loss_list.append(abs(change))
avg_gain = sum(gain_list) / 14
avg_loss = sum(loss_list) / 14
return avg_gain, avg_loss
当每个条目有 14 个条目时,我就进入了代码:
gain_list = [1.1800000000000068, 0.0, 0.0, 0.10000000000002274, 0.0, 0.44999999999998863, 0.030000000000001137, 0.0, 0.160000000000025, 0.0, 0.0, 0.15000000000000568, 0.0, 0.05000000000001137]
loss_list = [0.0, 0.19999999999998863, 0.10999999999998522, 0.0, 0.0, 0.0, 0.5, 0.3299999999999841, 0.0, 0.47999999999998977, 0.0, 0.10000000000002274, 0.25, 0.0]
avg_gain = 0.15142857142857583
avg_loss = 0.1407142857142836
两者的总和为 2.12,这是我得到 loss_list 总和的结果,而我得到 2.1799 的 gain_list。我错过了什么吗?
【问题讨论】:
-
我计算了~1.969
-
它们的总和为 1.97。也许您的数据不是您所期望的。
-
我会将其更新为具有不同值的不同时间范围。这是一个不好的例子。
-
您计算错误列表。请注意,在 for 循环的第一次迭代中,您如何访问第一个项目和索引 -1 中的项目。
-
你用什么代码来求两者之和(结果为 2.12)?
标签: python list math technical-indicator