都说画K线图是做量化工作的基本功,上网找了一些案例,不过感觉过于复杂,不显示nontrading都花很多功夫,人家mplfinance不是有原生的参数设置吗?好吧,还是要自己实践一下的,我用的数据库是mongodb,据说存储股票等杂乱数据的性能比mysql好,不知道是不是,没测试过,还有matplotlib显示中文的问题我已经在系统层面设置了,在代码里面就不用再显式声明了。以下是代码:
import mplfinance as mpf
import matplotlib.pyplot as plt
import pymongo
import pandas as pd
import datetime
db=pymongo.MongoClient(host="localhost",port=27017)
stocks=db["stocks"]
stock=stocks["000983.SZ"]
start_date="20210601"
end_date="20211201"
df=pd.DataFrame(stock.find({"trade_date":{"$gte":start_date,"$lte":end_date}}),columns=["trade_date","open","high","low","close","vol"])
df["trade_date"]=pd.to_datetime(df["trade_date"])
df.set_index("trade_date",inplace=True)
df.rename(columns={"trade_date":"Date","open":"Open","high":"High","low":"Low","close":"Close","vol":"Volume"},inplace=True)
mycolor=mpf.make_marketcolors(up="red",down="green",edge="i",wick="i",volume="in")
mystyle=mpf.make_mpf_style(marketcolors=mycolor,gridaxis="both",gridstyle="-.")
mpf.plot(df,type="candle",mav=(5,10,20),style=mystyle,volume=True,show_nontrading=False)
plt.show()