matplotlib畫k線圖


畫k線需要的包和環境:

 python36

  import tushare as ts
  import re
  import matplotlib.pyplot as plt
  import mpl_finance as mpf
  import numpy as np
  import talib as tl

  tushare是python的一個第三方庫,通過它可以獲取股票的當日數據和歷史數據,可以通過這里進行詳細了解;matplotlib用於數據的可視化;mpl_finance是python中可以用來畫出蠟燭圖、線圖的分析工具,目前已經從matplotlib中獨立出來;talib是一個Python 金融指數處理庫.

股票數據准備:

 獲取股票歷史數據可通過tushare庫調用get_hist_data或者pro_bar來完成,這里我們通過第二種方法進行采集:

 api = ts.pro_api()

 首先要實例化api,需要在tushare平台注冊賬號,並獲取token(免費);

 df = ts.pro_bar('600073.SH', start_date='2019-12-30 00:00:00', end_date='2019-12-30 15:00:00', freq='1min')[::-1] 

    該方法會以dataframe的格式返回數據,其參數分別表示股票代碼,起始時間,終止時間,要查詢的頻率,具體可參考下邊參數,由於返回的數據時間上是從后往前的,所以我們通過[::-1]進行調換.

 ts_code

 證券代碼,支持股票,ETF/LOF,期貨/期權,港股,數字貨幣

start_date

開始日期 YYYYMMDD

end_date

結束日期 YYYYMMDD

freq

支持1/5/15/30/60分鍾,周/月/季/年

asset

證券類型 E:股票和交易所基金,I:滬深指數,C:數字貨幣,FT:期貨 FD:基金/O期權/H港股/CB可轉債

exchange

市場代碼,用戶數字貨幣行情

adj

復權類型,None不復權,qfq:前復權,hfq:后復權

ma

均線,支持自定義均線頻度,如:ma5/ma10/ma20/ma60/maN

offset 

 開始行數(分頁功能,從第幾行開始取數據)

limit

本次提取數據行數

factors

因子數據,目前支持以下兩種:vr:量比,默認不返回,返回需指定:factor=['vr'],tor:換手率,默認不返回,返回需指定:factor=['tor'],
以上兩種都需要:factor=['vr', 'tor']

retry_count

網絡重試次數

 

 

 

 

 

 

 

 

   

   

 

 

 

 

 

 

 

 

 

 

 

 

index = list(map(lambda i: re.findall(r'\d{2}:\d{2}', i)[0], df.trade_time))

   我們以時間為x軸,所以要提取df中的trade_time數據,因為我們的時間比較長,如果都顯示看起來比較冗余,所以我們通過正則提取其中的時分秒即可.

下邊我們就開始畫k線圖:

   sma_10 = tl.SMA(np.array(df['close']), 10)
   sma_30 = tl.SMA(np.array(df['close']), 30)
   畫均線,上邊分別是10天內的和30天內的均值計算

   fig = plt.figure(figsize=(38, 18), dpi=100)
   ax = fig.add_subplot(1, 1, 1)
   常見一個畫布,設置其長寬,可通過dpi來設置生成圖片的像素;在畫布中生成一張子圖.

   ax.set_title(f'2019-12-27 {600073}', fontsize=30, color='red')

   ax.set_xticks(range(0, len(df.index)))ax.set_xticklabels(index, rotation=-80)

   給子圖添加標題,可設置字體大小和顏色,這里為了醒目我們設置成紅色;設置x軸,按照df的長度來設定,然后把上邊通過正則獲取的時間添加在x軸上,為了避免顯示重疊,可通過rotation參數設置旋轉,如圖:

   mpf.candlestick2_ochl(ax, df['open'], df['close'], df['high'],df['low'], width=0.6, colorup='r', colordown='g', alpha=0.75)

   candlestick2_ochl方法用來生成k線,非常的方便,只需把開盤,收盤,最高,最低參數傳入即可.

最后設置圖例:

   plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 設置字體ax.plot(sma_10, label='10日均線')

   ax.plot(sma_30, label='30日均線')

   ax.legend()

這樣指定股票的日k線就完成了,完整代碼點擊,參考圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM