You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python Pandas统计股票价格有效周期数的技术问询

用Pandas统计股票价格的有效周期次数

核心思路

通过标记入场信号和出场信号,结合累计求和跟踪周期状态,最终统计完整周期的数量。

具体实现步骤

假设你的股票数据存储在df中,包含price列(对应股票价格):

  1. 生成突破信号
    先判断价格是否从下方突破入场价或出场价:

    # 入场信号:前一日价格低于136.3,当日价格站上136.3
    df['entry_signal'] = (df['price'].shift(1) < 136.3) & (df['price'] >= 136.3)
    # 出场信号:前一日价格低于136.6,当日价格站上136.6
    df['exit_signal'] = (df['price'].shift(1) < 136.6) & (df['price'] >= 136.6)
    
  2. 跟踪周期状态
    用cumsum()计算当前是否处于周期内:入场信号加1,出场信号减1,状态大于0时表示处于周期中:

    df['cycle_state'] = df['entry_signal'].astype(int) - df['exit_signal'].astype(int)
    df['in_cycle'] = df['cycle_state'].cumsum() > 0
    
  3. 修正信号有效性
    确保入场信号只在非周期状态下触发,出场信号只在周期状态下触发:

    # 入场信号仅当之前不在周期中时生效
    df['entry_signal'] = df['entry_signal'] & ~df['in_cycle'].shift(1).fillna(False)
    # 出场信号仅当之前在周期中时生效
    df['exit_signal'] = df['exit_signal'] & df['in_cycle'].shift(1).fillna(False)
    
  4. 重新计算状态并统计周期数
    修正信号后重新计算周期状态,出场信号的总和就是完整周期的数量:

    df['cycle_state'] = df['entry_signal'].astype(int) - df['exit_signal'].astype(int)
    df['in_cycle'] = df['cycle_state'].cumsum() > 0
    
    # 统计有效周期次数
    cycle_count = df['exit_signal'].sum()
    print(f"有效周期次数:{cycle_count}")
    

示例验证

用模拟数据测试(对应你提到的2个周期场景):

import pandas as pd

data = {'price': [136.2, 136.4, 136.5, 136.7, 136.5, 136.2, 136.4, 136.5, 136.8]}
df = pd.DataFrame(data)

运行代码后,cycle_count会输出2,符合预期结果。

内容的提问来源于stack exchange,提问作者tichy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:16:21