mplfinance实现K线图,多指标绘图

今天来说说mplfinance。这是matplotlib团队为金融量化提供的一个可视化库。

你可能会好奇,为何我们要看看K线图,均线或者其他技术指标。

在AI和金融量化领域,普遍外界有一个误区:要么神化,要么妖魔化。本质上大家还是把这两者看成一个黑盒。

其实大可不必,不必神化,不要指望机器学习或者ChatGPT能直接为你决策,把所以投资分析的事情都帮你办了,不可能。现代机器学习就是高阶、非线性统计模型,可作为大脑的延伸与辅助,与汽车、飞机延伸我们的走路能力一样。但思路和逻辑,还是需要我们给的,这就需要我们清楚地知道,机器可能帮忙我们做什么?因此,可视化非常重要。

pip install mplfinance

今天20日动量最强的ETF是豆粕(159985.SZ):我们就用它的数据来进行分析。

图片


from engine.datafeed.dataloader import Hdf5Dataloader
import mplfinance as mpf
import matplotlib.pyplot as plt
# 显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 显示负数
plt.rcParams['axes.unicode_minus'] = False

symbols = ['159985.SZ']
loader = Hdf5Dataloader(symbols, start_date="20230101")
fields=['sma(close,5)','sma(close,10)','sma(close,20)','sma(close,60)']
fields.append('roc(close,20)')
fields.append('ta("MACD",close,get_result=1)')
fields.append('ta("MACD",close,get_result=2)')

names = ['MA5',"MA10","MA20","MA60"]
names.append('roc_20')
names.append('macd-m')
names.append('macd-s')

df = loader.load(fields=fields, names=names)
print(df)

my_color = mpf.make_marketcolors(up='r',
                                 down='g',
                                 edge='inherit',
                                 wick='inherit',
                                 volume='inherit')

# 设置图表的背景色
my_style = mpf.make_mpf_style(marketcolors=my_color,
                              figcolor='(0.82, 0.83, 0.85)',
                              gridcolor='(0.82, 0.83, 0.85)',rc={'font.family': 'SimHei'})

add_plot = [
    mpf.make_addplot(df["roc_20"], panel=1, color="#aa2116", width=0.5),
    mpf.make_addplot(
        df["macd-s"], panel=2, color="#aa2116", secondary_y="auto"),
    mpf.make_addplot(
        df["macd-m"], panel=3, color="#aa2116", secondary_y="auto"
    )
]

mpf.plot(df, title="159985.SZ(豆柏ETF",type="candle", mav=(5, 10, 20), volume=True,  style=my_style, addplot=add_plot)

默认的颜色不符合A股的表达习惯,所以,我们改成上涨为红色,下跌为绿色。且画出周,月,季度均线,可以看出“均线呈现”多头排列。下方是显示的volume成交量。

代码在这个位置:

图片

图片

这块功能在我们的量化平台里,是回测之后但单支证券的交易记录,比如何时买入、卖出,看这个交易在图上的交易,可以看出真实的交易逻辑。

回测系统里添加单个标的的订单记录:

symbol_orders_df = pd.DataFrame.from_records(self.portfolio.symbol_orders[self.universe[0]], columns=Order._fields, index='id')
print(symbol_orders_df)

图片

代码已经更新至星球。

engine重构:新增order_amount函数

海龟策略:一个完整的交易系统的实现(源码)

年化41.4%的指数多因子轮动与年化26.5%大类资产动量轮动,准备实盘跟踪。(代码下载)

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104051
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注