如何用Python计算股票及加密货币的close和high-low delta指标
解决方案
你当前的代码存在循环逻辑错误:每次迭代时你都对整个Closedelta列做覆盖赋值,最终整列的值会统一为最后一次循环的计算结果,因此所有行的输出都相同。
pandas内置的shift()方法可以直接实现取前一行值的需求,不需要手动写循环,正确实现代码如下:
# 计算Close Delta df['Closedelta'] = 1 - df['Close'] / df['Close'].shift(1) # 计算High/Low Delta df['HighLowDelta'] = (df['High'] - df['Low']) / df['Close'].shift(1)
补充说明:
- 计算结果的第一行因为不存在前一期收盘价,会返回NaN值,你可以根据需求用
df.dropna()删除空值行,或者用df.fillna(0)将空值替换为0 - 该方法是pandas的向量化运算,运行效率远高于手动写for循环,适合处理股票、加密货币这类量级的时间序列数据
内容的提问来源于stack exchange,提问作者nostalgia
相关产品推荐
相关产品推荐

