python - 如何从 DataFrame/Matplot 获取数据
问题描述
最近我一直在尝试学习 Python,并开始了一个个人项目,该项目本质上是一个简单的股票交易机器人。我正在尝试实现一个简单的布林带,希望在当前日期获得布林带的值。当我有 x 值(当前日期)时,我目前遇到了试图从两个图(橙色和绿色)中提取股票价格(y 值)的问题。我一直在寻找方法来做到这一点,但大多数实现 numpy 因为这些点已经在 x 值列表和 y 值列表中。
任何帮助表示赞赏!(下面附上图表和打印图表的代码)
[代码]
解决方案
Python 有一个库,它提供了一组丰富的功能作为技术指标。官方参考可以在这里找到该库还计算布林带,并返回三个结果数组,可以绘制在图表上以获得您想要的结果。
# !pip install yfinance
# !wget https://launchpad.net/~mario-mariomedina/+archive/ubuntu/talib/+files/libta-lib0_0.4.0-oneiric1_amd64.deb -qO libta.deb
# !wget https://launchpad.net/~mario-mariomedina/+archive/ubuntu/talib/+files/ta-lib0-dev_0.4.0-oneiric1_amd64.deb -qO ta.deb
# !dpkg -i libta.deb ta.deb
# !pip install ta-lib
import talib
import yfinance as yf
import datetime
import pandas as pd
import numpy as np
begin = datetime.datetime.today() - datetime.timedelta(days=100)
finish = datetime.datetime.today()
stockinfo = yf.download("AAPL", start=begin, end=finish)
stockinfo['20 Day MA'] = stockinfo['Adj Close'].rolling(window=20).mean()
stockinfo['20 Day STD'] = stockinfo['Adj Close'].rolling(window=20).std()
stockinfo['Upper_bband'] = stockinfo['20 Day MA'] + (stockinfo['20 Day STD'] * 1.5)
stockinfo['Lower_bband'] = stockinfo['20 Day MA'] - (stockinfo['20 Day STD'] * 1.5)
bbands = talib.BBANDS(np.array(stockinfo['Adj Close']))
import matplotlib.pyplot as plt
plt.figure(figsize=(12.5, 5))
plt.plot(stockinfo.index, stockinfo['20 Day MA'], label='20 Day MA')
plt.plot(stockinfo.index, stockinfo['Upper_bband'], label='upper_bband')
plt.plot(stockinfo.index, stockinfo['Lower_bband'], label='lower_bband')
plt.plot(stockinfo.index, bbands[0], label='bband1')
plt.plot(stockinfo.index, bbands[1], label='bband2')
plt.plot(stockinfo.index, bbands[2], label='bband3')
plt.title('AAPL: 20 Day Bollinger Band')
plt.xlabel(begin.strftime('%Y-%m-%d') + '-' + finish.strftime('%Y-%m-%d'))
plt.ylabel('Price (in USD)')
plt.legend(loc='upper left')
plt.show()
推荐阅读
- python - 网页抓取 JSON
- python - Python中字符串变量赋值的复杂性是什么?字符串的常数或长度
- python - url Tensorflow Serving Python Request 超出了最大重试次数
- java - 测试调用最终类的静态方法的方法
- awk - 从文件中提取染色体模式
- python - RecursionError:将 py 转换为 exe 时超出了最大递归深度
- javascript - 在数组上映射后创建动态对象键
- javascript - 选择两个单独的 HTML 选择选项时如何调用函数?
- javascript - 为什么我的 Angular 站点在发布到 IIS 时会返回一个目录?
- html - 删除有序列表中的一些数字