help!!如何用mplfinance在均线图中标注黄金交叉点和死亡交叉点?mpf可以直接实现这个功能吗
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
当然可以,使用mplfinance绘制均线图并标注黄金交叉点(short-term moving average 上穿 long-term moving average)和死亡交叉点(short-term moving average 下穿 long-term moving average)非常方便。首先确保已经安装了
mplfinance
库,如果没有安装,可以通过pip进行安装:pip install mplfinance
接下来是一个详细的示例,我们将绘制一个简单的收盘价蜡烛图,并在交叉点上添加标记。
import pandas as pd import numpy as np import matplotlib.pyplot as plt import mplfinance as mpf # 假设我们有如下数据,这是从Yahoo Finance或其他来源获取的历史价格数据 data = { 'Date': pd.date_range(start='2021-01-01', periods=50, freq='D'), 'Open': np.random.rand(50), 'High': np.random.rand(50) * 1.1, 'Low': np.random.rand(50) * 0.9, 'Close': np.random.rand(50) * 1.2, } df = pd.DataFrame(data) # 计算短期和长期移动平均线 short_term_mavg = df['Close'].rolling(window=10).mean() long_term_mavg = df['Close'].rolling(window=30).mean() # 初始化图形 fig, ax = plt.subplots(figsize=(14, 7)) # 绘制收盘价蜡烛图 mpf.plot(df, type='candle', mav=(short_term_mavg, long_term_mavg), ax=ax) # 定义函数来找到交叉点 def find_crossings(series1, series2): crossing_points = [] for i in range(len(series1)): if (i > 0 and i < len(series1) - 1) and \ (series1[i] > series2[i] and series1[i - 1] < series2[i - 1]) or \ (series1[i] < series2[i] and series1[i - 1] > series2[i - 1]): crossing_points.append(i) return crossing_points # 找到交叉点 crossing_indices = find_crossings(short_term_mavg.values, long_term_mavg.values) # 在交叉点处添加标记 for index in crossing_indices: x = df['Date'][index] y = df['Close'][index] # 黄金交叉点 if short_term_mavg[index] > long_term_mavg[index]: ax.annotate('Golden Cross', xy=(x, y), xytext=(-10, 10), textcoords='offset points', bbox=dict(boxstyle="round", fc="w"), arrowprops=dict(arrowstyle="->")) # 死亡交叉点 else: ax.annotate('Death Cross', xy=(x, y), xytext=(-10, -10), textcoords='offset points', bbox=dict(boxstyle="round", fc="w"), arrowprops=dict(arrowstyle="->")) plt.show()
这段代码首先计算了收盘价的短期和长期移动平均线,然后定义了一个函数
find_crossings
来找出交叉点的索引。接着,在交叉点处添加了注释,标注为“Golden Cross”(黄金交叉)或“Death Cross”(死亡交叉)。运行此代码后,将显示带有交叉点标注的图表。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 俄罗斯方块中无法同时消除多个满行
- ¥15 c#转安卓 java html
- ¥15 os.listdir文件路径找不到
- ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
- ¥15 psfusion图像融合指标很低
- ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
- ¥50 医院HIS系统代码、逻辑学习
- ¥30 docker离线安装mysql报错,如何解决?
- ¥15 构建工单的总账影响在哪里查询或修改
- ¥15 三个简单项目写完之后有重赏之后联系我