
图片
# ==================================================# 📈 成交量 + 换手率 + 市场位置分析案例# ==================================================import akshare as akimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 中文字体plt.rcParams['axes.unicode_minus'] = False# ========== 1. 获取股票数据 ==========symbol = "sz002466" # 天齐锂业示例,可替换任意股票代码start_date = "20250101"end_date = "20251001"df = ak.stock_zh_a_daily(symbol=symbol, start_date=start_date, end_date=end_date, adjust="qfq")df = df.reset_index()# ========== 2. 计算换手率与价格分位 ==========df["turnover rate"] = df["volume"] / df["outstanding_share"].mean() * 100 # 简化估算df["price phase"] = df["close"].rank(pct=True) # 当前价格在区间中的分位df["phase"] = pd.cut(df["price phase"], bins=[0, 0.33, 0.66, 1],labels=["low", "medium", "high"])# ========== 3. 绘制图表 ==========fig, ax1 = plt.subplots(figsize=(8, 4))# 价格线ax1.plot(df["date"], df["close"], color="tab:red", label="close price")ax1.set_ylabel("price", color="tab:red")ax1.tick_params(axis="y", labelcolor="tab:red")# 成交量柱ax2 = ax1.twinx()ax2.bar(df["date"], df["volume"], alpha=0.3, color="tab:blue", label="volume")ax2.set_ylabel("volume", color="tab:blue")ax2.tick_params(axis="y", labelcolor="tab:blue")# 阶段标注for i, row in df.iterrows():if i % 30 == 0: # 间隔标记ax1.text(row["date"], row["close"], row["phase"], fontsize=9,color="green" if row["phase"] == "low" else"orange" if row["phase"] == "medium" else "red")ax1.set_title("volume + turnover rate + phase", fontsize=14)plt.tight_layout()plt.show()# ========== 4. 输出阶段统计 ==========stage_stats = df.groupby("phase")[["turnover rate", "volume", "close"]].mean()print("\n=== 市场阶段平均指标 ===")print(stage_stats.round(2))🧠 六、结语:市场的语言市场不会说话,但成交量会。成交量背后的换手率,正是市场情绪的温度计。当你能从量能变化中,看出市场位置的变化,就能提前感知趋势的转折。因为——所有价格的变化,都是成交量先动的结果。=========================================================用deepseek把代码转换为通达信:{--- 成交量+换手率+市场位置分析 ---}{ 参数设置 }分析周期:=250; { 分析周期,默认250日 }{ 基础数据 }收盘价:=CLOSE;成交量:=VOL;流通股本:=FINANCE(7); { 获取流通股本 }换手率:VOL/FINANCE(7)*100; { 计算换手率 }{ 价格分位计算 }最低价:=LLV(L,分析周期);最高价:=HHV(H,分析周期);价格分位:(收盘价-最低价)/(最高价-最低价)*100;{ 市场阶段划分 }低位阶段:=价格分位<33;中位阶段:=价格分位>=33 AND 价格分位<66;高位阶段:=价格分位>=66;{ 可视化显示 - 主图 }{ 价格线 }收盘价线:收盘价,COLORRED,LINETHICK2;{ 阶段标记颜色 }STICKLINE(低位阶段,收盘价,收盘价*1.01,2,0),COLORGREEN;STICKLINE(中位阶段,收盘价,收盘价*1.01,2,0),COLORYELLOW;STICKLINE(高位阶段,收盘价,收盘价*1.01,2,0),COLORRED;{ 阶段文字标注 }DRAWTEXT(低位阶段 AND COUNT(低位阶段,5)=1,收盘价*0.98,'低位'),COLORGREEN;DRAWTEXT(中位阶段 AND COUNT(中位阶段,5)=1,收盘价*0.98,'中位'),COLORYELLOW;DRAWTEXT(高位阶段 AND COUNT(高位阶段,5)=1,收盘价*0.98,'高位'),COLORRED;{ 价格分位显示 }DRAWNUMBER(ISLASTBAR,收盘价,价格分位),COLORWHITE;DRAWTEXT(ISLASTBAR,收盘价,' 价格分位%'),COLORWHITE;{ 可视化显示 - 副图1:成交量 }成交量柱:VOL,VOLSTICK;MA5:MA(VOL,5),COLORWHITE;MA20:MA(VOL,20),COLORYELLOW;{ 可视化显示 - 副图2:换手率 }换手率线:换手率,COLORCYAN,LINETHICK1;换手率均值:MA(换手率,20),COLORYELLOW,LINETHICK2;{ 阶段统计显示 - 在最后一天显示 }低位平均换手率:=IF(ISLASTBAR,SUM(换手率*低位阶段,BARSLAST(低位阶段=0))/MAX(1,SUM(低位阶段,BARSLAST(低位阶段=0))),DRAWNULL);中位平均换手率:=IF(ISLASTBAR,SUM(换手率*中位阶段,BARSLAST(中位阶段=0))/MAX(1,SUM(中位阶段,BARSLAST(中位阶段=0))),DRAWNULL);高位平均换手率:=IF(ISLASTBAR,SUM(换手率*高位阶段,BARSLAST(高位阶段=0))/MAX(1,SUM(高位阶段,BARSLAST(高位阶段=0))),DRAWNULL);{ 统计结果显示 - 修正STRCAT使用 }DRAWTEXT_FIX(ISLASTBAR,0.65,0.02,0,'=== 市场阶段平均指标 ==='),COLORWHITE;{ 分别显示各阶段指标,避免STRCAT嵌套过多 }DRAWTEXT_FIX(ISLASTBAR,0.65,0.05,0,'低位换手率:'),COLORGREEN;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.05,0,低位平均换手率),COLORGREEN;DRAWTEXT_FIX(ISLASTBAR,0.65,0.08,0,'中位换手率:'),COLORYELLOW;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.08,0,中位平均换手率),COLORYELLOW;DRAWTEXT_FIX(ISLASTBAR,0.65,0.11,0,'高位换手率:'),COLORRED;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.11,0,高位平均换手率),COLORRED;{ 阶段成交量统计 }低位平均成交量:=IF(ISLASTBAR,SUM(VOL*低位阶段,BARSLAST(低位阶段=0))/MAX(1,SUM(低位阶段,BARSLAST(低位阶段=0))),DRAWNULL);中位平均成交量:=IF(ISLASTBAR,SUM(VOL*中位阶段,BARSLAST(中位阶段=0))/MAX(1,SUM(中位阶段,BARSLAST(中位阶段=0))),DRAWNULL);高位平均成交量:=IF(ISLASTBAR,SUM(VOL*高位阶段,BARSLAST(高位阶段=0))/MAX(1,SUM(高位阶段,BARSLAST(高位阶段=0))),DRAWNULL);DRAWTEXT_FIX(ISLASTBAR,0.65,0.14,0,'低位成交量:'),COLORGREEN;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.14,0,低位平均成交量/10000),COLORGREEN;DRAWTEXT_FIX(ISLASTBAR,0.83,0.14,0,'万'),COLORGREEN;DRAWTEXT_FIX(ISLASTBAR,0.65,0.17,0,'中位成交量:'),COLORYELLOW;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.17,0,中位平均成交量/10000),COLORYELLOW;DRAWTEXT_FIX(ISLASTBAR,0.83,0.17,0,'万'),COLORYELLOW;DRAWTEXT_FIX(ISLASTBAR,0.65,0.20,0,'高位成交量:'),COLORRED;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.20,0,高位平均成交量/10000),COLORRED;DRAWTEXT_FIX(ISLASTBAR,0.83,0.20,0,'万'),COLORRED;{ 阶段价格统计 }低位平均价格:=IF(ISLASTBAR,SUM(收盘价*低位阶段,BARSLAST(低位阶段=0))/MAX(1,SUM(低位阶段,BARSLAST(低位阶段=0))),DRAWNULL);中位平均价格:=IF(ISLASTBAR,SUM(收盘价*中位阶段,BARSLAST(中位阶段=0))/MAX(1,SUM(中位阶段,BARSLAST(中位阶段=0))),DRAWNULL);高位平均价格:=IF(ISLASTBAR,SUM(收盘价*高位阶段,BARSLAST(高位阶段=0))/MAX(1,SUM(高位阶段,BARSLAST(高位阶段=0))),DRAWNULL);DRAWTEXT_FIX(ISLASTBAR,0.65,0.23,0,'低位平均价:'),COLORGREEN;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.23,0,低位平均价格),COLORGREEN;DRAWTEXT_FIX(ISLASTBAR,0.65,0.26,0,'中位平均价:'),COLORYELLOW;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.26,0,中位平均价格),COLORYELLOW;DRAWTEXT_FIX(ISLASTBAR,0.65,0.29,0,'高位平均价:'),COLORRED;DRAWNUMBER_FIX(ISLASTBAR,0.78,0.29,0,高位平均价格),COLORRED; 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。乐股配资提示:文章来自网络,不代表本站观点。