如何在pandas中基于CLOSE、EMA50列计算上穿信号SIGNAL列
实现方法
上穿信号的判断只需要同时匹配两个条件:
- 当前行
CLOSE> 当前行EMA50 - 前一行
CLOSE< 前一行EMA50
借助pandas的shift()方法可以直接取前一行的列值,组合判断即可,完整代码如下:
# 计算当前行CLOSE是否在EMA50上方 current_above = source_data['CLOSE'] > source_data['EMA50'] # 计算前一行CLOSE是否在EMA50下方,shift(1)表示取上一行数据 prev_below = source_data['CLOSE'].shift(1) < source_data['EMA50'].shift(1) # 两个条件同时满足时SIGNAL为1,其余为0 source_data['SIGNAL'] = (current_above & prev_below).astype(int)
如果需要将非信号位置设为空值而非0,可以调整赋值逻辑:
source_data['SIGNAL'] = pd.NA source_data.loc[current_above & prev_below, 'SIGNAL'] = 1
内容的提问来源于stack exchange,提问作者Lapoco
相关产品推荐
相关产品推荐

