社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python技术】抓取解析短线复盘连板率、封板率、断板率等情绪量化指标

子晓聊技术 • 2 月前 • 176 次点击  

背景:之前写了一篇通过抓取同花顺wencai计算连板率、封板率、断板率的例子, 有朋友和我说,  wencai本身短线复盘有这个数据。 这句话提醒了我, 要不抓取这个数据来试一下。


这里附上核心代码:



df = pywencai.get(query="短线复盘")
    try:
        # ================== 核心指标看板 ==================
        st.header("📊 核心指标看板")
        cols = st.columns(7)

        zt_data = df.get('涨停梳理', {}).get('newCard', pd.DataFrame())
        if not zt_data.empty:
            metrics = {
                "涨跌停比": (zt_data.iloc[0, 4], "涨停家数与跌停家数比例"),
                "昨日涨停表现": (f"{float(zt_data.iloc[1, 0]):.2f}%""昨日涨停股票的市场表现"),
                "连板率": (f"{zt_data.iloc[2, 0]}%""连续涨停板占比"),
                "封板率": (f"{zt_data.iloc[3, 0]}%""成功封住涨停的比例"),
                "连板收益率": (zt_data.iloc[4, 0], "连板收益率"),
                "连板溢价率": (zt_data.iloc[5, 0], "连板溢价率"),
                "情绪温度": (f"{df['情绪温度']['line3'].iloc[-1]['情绪温度走势']:.1f}℃""市场情绪综合指标")
            }

            for col, (name, (value, help_text)) in zip(cols, metrics.items()):
                with col:
                    st.metric(name, value, help=help_text)

        # ================== 市场动向分析 ==================
        st.header("🌐 市场动向分析")
        market_trend = df.get('市场动向''')
        if market_trend and len(market_trend) > 10:
            st.markdown(market_trend, unsafe_allow_html=True)
        else:
            st.info("📅 市场动向数据将于交易日15:30更新,请稍后查看")

        # ================== 情绪温度走势 ==================
        st.header("🌡️ 情绪温度趋势")
        emotion_data = df.get('情绪温度', {}).get('line3', pd.DataFrame())
         if not emotion_data.empty:
            try:
                emotion_data['日期'] = pd.to_datetime(
                    emotion_data['时间区间'].astype(str).str[:8],
                    format='%Y%m%d',
                    errors='coerce'
                )
                valid_data = emotion_data.dropna(subset=['日期'])
                if not valid_data.empty:
                    st.line_chart(
                        valid_data.set_index('日期')['情绪温度走势'].rename("情绪温度"),
                        use_container_width=True
                    )
                else:
                    st.warning("有效日期数据缺失")
            except Exception as e:
                st.error(f"图表渲染失败: {str(e)}")
        else:
            st.warning("情绪温度数据暂不可用")

        # ================== 详细数据解析 ==================
        st.header("📚 详细数据解析")
        tabs = st.tabs(["连板天梯""焦点个股""市场事件"])

        with tabs[0]:
            st.subheader("🏆 连板天梯榜")
            lb_data = df.get('连板天梯', {})
            if lb_data:
                st.write("### 高位连板")
                if'高位板'in lb_data and 'tableV1'in lb_data['高位板']:
                    st.dataframe(lb_data['高位板']['tableV1'], height=400)
                else:
                    st.info("暂无高位连板数据")


                st.write("### 两连板")
                if'两连板'in lb_data and 'tableV1'in lb_data['两连板']:
                    st.dataframe(lb_data['两连板']['tableV1'], height=400)
                else:
                    st.info("暂无两连板数据")
            else:
                st.warning("连板数据加载失败")

        with tabs[1]:
            st.subheader("🔥 焦点个股分析")
            focus_stocks = df.get('焦点股', pd.DataFrame())
            if not focus_stocks.empty:
                st.dataframe(
                    focus_stocks,
                    column_config={
                        "股票简称""名称",
                        "连涨天数": st.column_config.NumberColumn(
                            "连涨",
                            help="连续上涨天数",
                            format="%d 天"
                        ),
                        "涨跌幅:前属同花顺行业": st.column_config.ProgressColumn(
                            "行业涨幅",
                            format="%.2f%%",
                            min_value=-10,
                            max_value=10
                        )
                    },
                    hide_index=True,
                    use_container_width=True
                )
            else:
                st.info("今日无重点监控个股")

        with tabs[2]:
            st.subheader("📅 市场事件追踪")
            event_data = df.get('自选股近15天重要事件', {})
            if event_data:
                col1, col2 = st.columns([3, 2])
                with col1:
                    st.write("### 自选股事件")
                    if'tableV1'in event_data:
                        st.dataframe(event_data['tableV1'], use_container_width=True)
                    else:
                        st.info("近期无自选股相关事件")

                with col2:
                    st.write("### 实时要闻")
                    if'txt1'in event_data:
                        st.markdown(event_data['txt1'], unsafe_allow_html=True)
            else:
                st.warning("事件数据加载失败")

    except Exception as e:
        st.error(f"系统错误: {str(e)}")
        st.button("🔄 重新加载数据"type="primary")


上面是解析数据的代码, 有点python、pandas基础应该就能看懂了,  可以把这些数据存储入库,根据时间序列就可以分析出 情绪变化(比如连板率、封板率、 破板率等)了。 

是不是很简单,为什么我没列出完整代码。 因为每个人的需求不一样,  我自己做了下简单处理, 每天16点定时抓取数据, 然后保存成json文件, 通过历史数据,查询选择日期就可以看到 当天的历史复盘了。 A股我喜欢量化情绪来指导操作,所谓物极必反嘛。


相关文章推荐:

【Python技术】获取同花顺概念指数对应股

【Python技术】问DeepSeek处理日历库获取交易日几种实现方式
【Python技术】同花顺wencai涨停分析基础上增加连板分析
【Python技术】利用同花顺wencai进行竞价数据分析
【Python技术】A股涨停最高板多个情况展示并附上表格明细
【Python技术】提取新闻联播热点内容分析并让大模型给出投资建议
[Python技术]利用akshare获取股票基本信息、K线图、最新新闻 以及大模型投资建议

【Python技术】利用akshare获取A股公告,并通过关键字获取自己想要的内容

【Python技术】利用tushare、wencai分析某天涨停股票次日涨跌幅情况

[Python技术]利用streamlit构建多页面应用功能


另外,从0搭建量化分析交易系统系列得慢慢写了, 主要是因为自己学习、编码进度没跟上。特别是今天,大盘涨得有点凶,有点没心思写代码,就把前2天写的代码分享给大家。 有些时候,涨得猛没心思,跌得猛也没心思, 什么时候才可以做到 宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒


最后,最近几乎每天有同学问我,怎么加我微信,怎么入群, 貌似我在多个公众号入口放了名片。 这里再放一下, 加我微信,备注下就可以入群交流  编程、 投资、 AI等。   如果需要新开户,需要申请qmt或ptrade量化交易软件,  费率优惠, 万0.854 , 也可以找我。 







Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179268
 
176 次点击