股票k线图(股票k线图软件下载)

  • 2022-08-07
  • John Dowson

股票k线图(股票k线图软件下载)

 

股票投资小常识:回档是指股价上升过程中,因上涨过速而暂时回跌的现象。

准备工作

  1. 安装python环境(这个不必多说,能看到这篇文章的基本大家都有安装)
  2. 安装相应第三方依赖库
    1. matplotlibpython重要的绘图库。
    2. numpy支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
    3. Talib称Technical Analysis Library, 即技术分析库,是Python金融量化的高级库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MACD、RSI、KDJ、动量指标、布林带等等。
    4. pandas基于numpy的一种工具,是为了解决数据分析任务而创建的,纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
    5. mpl_financepython中可以用来画出蜡烛图、线图的分析工具,目前已经从matplotlib中独立出来,非常适合用来画K线
    6. psycopg2(选用)python中用以和postgres数据库交互的第三方库,作者个人的数据都存储在postgres数据库中,因此使用这个模块。
  3. 数据准备
  • 数据来源于Tushare,一个免费好用的财经数据包,自己每日更新处理并加载到阿里云的服务器上(这里会为大家准备好数据进行使用)
importtalibimportnumpyasnpimportpsycopg2aspgimportpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib.gridspecasgridspec分割子图importmpl_financeasmpf np.seterr(divide=ignore,invalid=ignore)  忽略warningplt.rcParams[font.sans-serif]=[SimHei] 用来正常显示中文标签 plt.rcParams[axes.unicode_minus]=False 用来正常显示负号 fig = plt.figure(figsize=(20,12), dpi=100,facecolor="white") 创建fig对象

以上导入相关依赖包,并设置了一些参数变量

加载数据(文末提供数据)

加载数据def query(sql):    conn = pg.connect(dbname="stocks", user="postgres", password="******", host="******", port="5432")data= pd.read_sql(sql,conn)    conn.close()returndatats_code =000001.SZ股票代码name =平安银行df_stockload = query("select trade_date,open,high,low,close,vol from pro_bar                       where ts_code = {} and trade_date>=20190801".format(ts_code))df_stockload[trade_date] = pd.to_datetime(df_stockload[trade_date])df_stockload=df_stockload.set_index(trade_date)

以上代码定义了一个query函数,使用pandas的readsql来加载数据库中数据,并将tarde_date设置为datetime格式,并设置为索引。

具体字段有

  • trade_date:交易日期
  • open:开盘价格
  • high:当日最高价
  • low:当日最低价
  • close:当日收盘价
  • vol:成交量

数据的结构形式

股票投资小常识:在股价阴跌过程中,时常会出现外盘大、内盘小的情况,此时并不一定表明股价会上涨。因为有时庄家会用几笔卖单将股价打压至较低位置,然后在卖1、卖2挂卖单,并且自己买自己的卖单,造成股价暂时横盘或小幅上升。

绘图

股票投资小常识:不管你是什么投资者,长线,短线,价值,波短,各种投资者你都需要重视股本。

设置四个绘图区域 包括 K线(均线),成交量,MACD,KDJ

gs= gridspec.GridSpec(4,1, left=0.08, bottom=0.15, right=0.99, top=0.96, wspace=None, hspace=0, height_ratios=[3.5,1,1,1])graph_KAV = fig.add_subplot(gs[0,:])graph_VOL = fig.add_subplot(gs[1,:])graph_MACD = fig.add_subplot(gs[2,:])graph_KDJ = fig.add_subplot(gs[3,:])
  • 绘制K线图(以及均线)
绘制K线图mpf.candlestick2_ochl(graph_KAV, df_stockload.open, df_stockload.close, df_stockload.high, df_stockload.low, width=0.5,                      colorup=r, colordown=g)   绘制K线走势绘制移动平均线图df_stockload[Ma5] = df_stockload.close.rolling(window=5).mean()pd.rolling_mean(df_stockload.close,window=20)df_stockload[Ma10] = df_stockload.close.rolling(window=10).mean()pd.rolling_mean(df_stockload.close,window=30)df_stockload[Ma20] = df_stockload.close.rolling(window=20).mean()pd.rolling_mean(df_stockload.close,window=60)df_stockload[Ma30] = df_stockload.close.rolling(window=30).mean()pd.rolling_mean(df_stockload.close,window=60)df_stockload[Ma60] = df_stockload.close.rolling(window=60).mean()pd.rolling_mean(df_stockload.close,window=60)graph_KAV.plot(np.arange(0,len(df_stockload.index)), df_stockload[Ma5],black, label=M5,lw=1.0)graph_KAV.plot(np.arange(0,len(df_stockload.index)), df_stockload[Ma10],green,label=M10, lw=1.0)graph_KAV.plot(np.arange(0,len(df_stockload.index)), df_stockload[Ma20],blue,label=M20, lw=1.0)graph_KAV.plot(np.arange(0,len(df_stockload.index)), df_stockload[Ma30],pink, label=M30,lw=1.0)graph_KAV.plot(np.arange(0,len(df_stockload.index)), df_stockload[Ma60],yellow,label=M60, lw=1.0) 添加网格graph_KAV.grid()graph_KAV.legend(loc=best)graph_KAV.set_title(ts_code ++ name)graph_KAV.set_ylabel(u"价格")graph_KAV.set_xlim(0,len(df_stockload.index))   设置一下x轴的范围
  • 绘制成交量图
绘制成交量图graph_VOL.bar(np.arange(0,len(df_stockload.index)), df_stockload.vol,color=[gifdf_stockload.open[x] > df_stockload.close[x]elserforx inrange(0,len(df_stockload.index))])graph_VOL.set_ylabel(u"成交量")graph_VOL.set_xlim(0,len(df_stockload.index)) 设置一下x轴的范围graph_VOL.set_xticks(range(0,len(df_stockload.index),15))X轴刻度设定 每15天标一个日期
  • 绘制MACD
绘制MACDmacd_dif, macd_dea, macd_bar = talib.MACD(df_stockload[close].values, fastperiod=12, slowperiod=26, signalperiod=9)graph_MACD.plot(np.arange(0,len(df_stockload.index)), macd_dif,red, label=macd dif)   difgraph_MACD.plot(np.arange(0,len(df_stockload.index)), macd_dea,blue, label=macd dea)   deabar_red = np.where(macd_bar >0,2* macd_bar,0) 绘制BAR>0柱状图bar_green = np.where(macd_bar <0,2* macd_bar,0) 绘制BAR<0柱状图graph_MACD.bar(np.arange(0,len(df_stockload.index)), bar_red, facecolor=red)graph_MACD.bar(np.arange(0,len(df_stockload.index)), bar_green, facecolor=green)graph_MACD.legend(loc=best,shadow=True, fontsize =10)graph_MACD.set_ylabel(u"MACD")graph_MACD.set_xlim(0,len(df_stockload.index)) 设置一下x轴的范围graph_MACD.set_xticks(range(0,len(df_stockload.index),15))X轴刻度设定 每15天标一个日期

这里要注意 talib中计算得到的macd并没有×2,需要在计算后的macd×2

  • 绘制KDJ
绘制KDJdf_stockload[K], df_stockload[D] = talib.STOCH(df_stockload.high.values, df_stockload.low.values, df_stockload.close.values,\                                       fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)df_stockload[J] =3* df_stockload[K] -2* df_stockload[D]graph_KDJ.plot(np.arange(0,len(df_stockload.index)), df_stockload[K],blue, label=K)   Kgraph_KDJ.plot(np.arange(0,len(df_stockload.index)), df_stockload[D],g--, label=D)   Dgraph_KDJ.plot(np.arange(0,len(df_stockload.index)), df_stockload[J],r-, label=J)   Jgraph_KDJ.legend(loc=best, shadow=True, fontsize=10)graph_KDJ.set_ylabel(u"KDJ")graph_KDJ.set_xlabel("日期")graph_KDJ.set_xlim(0,len(df_stockload.index))   设置一下x轴的范围graph_KDJ.set_xticks(range(0,len(df_stockload.index),15))   X轴刻度设定 每15天标一个日期graph_KDJ.set_xticklabels(    [df_stockload.index.strftime(%Y-%m-%d)[index]forindex in graph_KDJ.get_xticks()])   标签设置为日期
  • 修饰图片
X-轴每个ticker标签都向右倾斜45度forlabelingraph_KAV.xaxis.get_ticklabels():label.set_visible(False)forlabelingraph_VOL.xaxis.get_ticklabels():label.set_visible(False)forlabelingraph_MACD.xaxis.get_ticklabels():label.set_visible(False)forlabelingraph_KDJ.xaxis.get_ticklabels():label.set_rotation(45)label.set_fontsize(10)   设置标签字体
  • 保存图片
plt.savefig(Kline.jpg)

最终的成果图

股票投资小常识:你的仓位的50%决定了你的投资成绩。不要给风险找理由欺骗自己。

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186

评论留言

发表评论