使用python 画全换手后筹码分布图

#参考:

#https://www.cnblogs.com/JuliaZhao/p/12034202.html
#简单示例(筹码分布图)

#%% 筹码分布图
#import mpl_finance as mpf
#import matplotlib.finance as mpf
import matplotlib.pyplot as plt
from matplotlib.finance import candlestick2_ohlc


cdata=DataAPI.MktEqudAdjGet(ticker=u"301037" , beginDate="20220101",endDate="20220602",tradeDate=u"",\
                                 isOpen="1",field=u"ticker,secShortName,tradeDate,highestPrice,lowestPrice,openPrice,closePrice,turnoverRate,preClosePrice,turnoverVol,turnoverValue",pandas="1")
#按日期倒排序(最近在前),为了计算到今天endDate总的换手率大致到1(全部换手)开始那天
#均价
cdata['mean']=cdata.apply(lambda x:x.turnoverValue/x.turnoverVol, axis = 1)
cdata=cdata.sort(["tradeDate"],ascending=False)
print cdata.head()
#对换手率累计求和
cdata['turnoverRate_cumsum'] = cdata.turnoverRate.cumsum()
#只取近似全换手(<=1)前的数据,多的不要
cdata=cdata[cdata.turnoverRate_cumsum<=1.0]                  
#再按日期正排序
cdata=cdata.sort(["tradeDate"],ascending=True)
#再对换手率累计求和
cdata['turnoverRate_cumsum'] = cdata.turnoverRate.cumsum()
#必须重新排序,为了画K线图看到横坐标刻度
cdata=cdata.reset_index(drop=True)
print cdata.tail()
cdata=cdata.rename(columns={'tradeDate':'datetime','openPrice':'open','closePrice':'close','highestPrice':'high', 'lowestPrice':'low', 'turnoverVol':'volume','turnoverValue':'money'})
#print cdata.head(10)
cdata=cdata[['datetime','open','high','low','close','mean','volume','money']]
pricelst = sorted(set(list(cdata['mean'])))
volumelst = []
moneylst = []
#简单筹码分布
for i in pricelst:
    volumelst.append(cdata[cdata['mean'] == i]['volume'].sum())
    moneylst.append(cdata[cdata['mean'] == i]['money'].sum())
# 绘制
fig = plt.figure(figsize=(30, 10),dpi=100)
ax1 = plt.subplot2grid((1, 4), (0, 0))
ax2 = plt.subplot2grid((1, 4), (0, 1), colspan=3,sharey=ax1)
xlabel = pricelst
#print len(pricelst),pricelst
#print moneylst
ax1.barh(xlabel,moneylst,height=0.05,alpha=0.16) # 直方图
#mpf.candlestick2_ochl(ax2,cdata['open'],cdata['close'],cdata['high'],cdata['low'],
  #                width=0.8, colorup='red', colordown='blue',alpha=1.0) # K线图 z 这不对样

ax2.axes.get_yaxis().set_visible(False)#y轴不可见
candlestick2_ohlc(ax2,
                      cdata['open'].values,
                      cdata['high'].values,
                      cdata['low'].values,
                      cdata['close'].values,
                      width=0.4,
                      colorup='r',
                      colordown='b',
                      alpha=1)
ax2.set_xticks(range(0,len(cdata), 5)) #X轴刻度设定 每5天标一个日期
    #修饰图片
    # X-轴每个ticker标签都向右倾斜45度
print "ax2.get_xticks:",ax2.get_xticks()
for label in ax2.xaxis.get_ticklabels():
        label.set_rotation(45)
        label.set_fontsize(10)  # 设置标签字体
ax2.set_xticklabels([cdata.ix[index, 'datetime'] for index in ax2.get_xticks()])

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值