股票价格分析:如何使用Python介绍财务和技术指标?

2021年11月11日03:05:22 发表评论 962 次浏览

Python介绍财务和技术指标 - 学习如何在 Python 中处理股票价格,了解蜡烛价格格式 (OHLC),使用烛台图表绘制它们,以及学习使用 Python 中的 stockstats 库使用许多技术指标。

很多人已经说过,数据是21世纪的新石油,从数据科学、数据挖掘、数据工程和大数据等诸多领域中涌现并创造了许多领域。

无论是在物理学、医学、生物学还是社交媒体领域,所有这些都在不断地生成数据,这些数据被存储、预处理和分析,目的是为准确的决策提取有价值的结论。

Python如何分析股票价格?金融市场以其供求规律和其他经济因素的动态势头而闻名,也是产生大量数据的地方。分析股票价格,无论你是交易差价合约(差价合约)、期货还是商品,无论你使用的是何种经纪商,都强烈建议你在进行交易时最大化你的收益,甚至是最基本的。

本教程将让你掌握使用 Python 处理股票价格的一般概念,了解蜡烛价格格式 ( OHLC ),并使用烛台图表绘制它们。你还将学习使用stockstats库来使用许多技术指标。 

对于本教程,你需要安装:

pip install pandas-datareader yfinance mpl-finance stockstats

从 Yahoo Finance API 导入数据

Python股票价格分析:要导入股票价格数据,我们需要指定市场指数或股票的代码,在本例中,我们将从S&P 500和导入数据AAPL

注意:S&P500是一个市场指数,它是一个指标,用于跟踪包含在该指数中的一组公司的表现。例如,包括美国500强股票的标准普尔,与顶级IT公司相关的纳斯达克,德国30强股票的GER30等。

以下代码负责导入以下股票价格AAPL

# import AAPL stock price
df_aapl = pdr.get_data_yahoo("AAPL", start="2019-01-01", end="2019-09-30")

导入 SPY(SPDR S&P 500 Trust ETF):

# import SPY stock price
df_spy = pdr.get_data_yahoo("SPY", start="2019-01-01", end="2019-09-30")

这是它的外观:

df_spy.head()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?

在金融市场上的蜡烛代表“格式OHLC下呈现Ø^ h igh-大号ow- Ç输”:

  • 开盘价是时间分辨率开始时的股票价格(1m、30m、每小时、每天等)
  • 高:是从蜡烛的开始到结束达到的最高价格。
  • 低:是从蜡烛的开始到结束达到的最低价格。
  • 收盘是时间决议结束时股票的价格。

在金融股票市场交易时,我们区分两种类型的交易操作:做多(买入) 和 做空(卖出)

绘制股票价格

Python介绍财务和技术指标:在本节中,我们将使用matplotlibmpl_finance库来绘制AAPL. 首先,我们将分别绘制开盘-高-低-收盘价:

df_aapl[["Open", "High", "Low", "Close"]].plot()
plt.show()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?
股票价格分析:如何使用Python介绍财务和技术指标?

左图是执行上述代码的结果,右图是右图的放大区域。  

Python如何分析股票价格?我们可以在放大的区域中清楚地看到,高价(橙色图)是上限,而低价(绿色图)是下限,这说明了本教程上一节中提到的 OHLC 格式的定义。

但正如你可能已经注意到的那样,由于被充电,该图在某种程度上难以阅读,我们将改为以烛台的形式表示 OHLC:

fig = plt.figure(figsize=(10, 10))
ax = plt.subplot()

plot_data = []
for i in range(150, len(df_aapl)):
    row = [
        i, 
        df_aapl.Open.iloc[i], 
        df_aapl.High.iloc[i], 
        df_aapl.Low.iloc[i], 
        df_aapl.Close.iloc[i], 
    ]
    plot_data.append(row)
candlestick_ohlc(ax, plot_data)
plt.show()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?以下是烛台的结构:

股票价格分析:如何使用Python介绍财务和技术指标?

金融技术指标

Python介绍财务和技术指标:在金融方面,由于我们正在处理数字数据,因此除了检测趋势之外,依靠各种指标还可以更好地了解股票价格的走势,这对于我们打算对特定股票进行长期交易/投资非常重要. 

stockstats库,我们将导入StockDataFrame,这是接收作为一个属性的熊猫一类DataFrame排序按时间和包括顺序列开-关-高-低:

from stockstats import StockDataFrame

stocks = StockDataFrame.retype(df_aapl[["Open", "Close", "High", "Low", "Volume"]])

简单移动平均线 (SMA)

简单移动平均线是一个指标,它通过计算一段时间内的价格均值来平滑股票价格图。这将使我们更好地可视化趋势方向(上升或下降)。

SMA的公式如下图所示:

股票价格分析:如何使用Python介绍财务和技术指标?

绘制SMA:

plt.plot(stocks["close_10_sma"], color="b", label="SMA")
plt.plot(df_aapl.Close, color="g", label="Close prices")
plt.legend(loc="lower right")
plt.show()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?为了计算 SMA,我们按照以下格式指定属性:

Column_Period_Indicator

在我们的例子中,我们关注 10 周期内的收盘价,指标是 SMA,所以结果是 close_10_sma.

指数移动平均线 (EMA)

Python股票价格分析:不同的是SMA,这给相等的权重,以所有的价格无论是新的或旧的,在美国,指数移动平均线通过赋予最近(最近)的价格更大的权重来强调它们,这使得均线成为一个比均线更快检测趋势的指标。

EMA的公式如下:

股票价格分析:如何使用Python介绍财务和技术指标?

绘制 EMA:

plt.plot(stocks["close_10_sma"], color="b", label="SMA") # plotting SMA
plt.plot(stocks["close_10_ema"], color="k", label="EMA")
plt.plot(df_aapl.Close, color="g", label="Close prices") # plotting close prices
plt.legend(loc="lower right")
plt.show()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?
股票价格分析:如何使用Python介绍财务和技术指标?

左图是绘制收盘价、SMA 和 EMA 的结果,而右图是原始图的一部分的放大图。 

在放大图中,我们可以清楚地观察到 EMA 确实对趋势的变化反应更快,并且越来越接近它们。

移动平均收敛/发散 (MACD)

Python如何分析股票价格?移动平均收敛/发散是趋势跟踪动量指标。该指标可以显示价格变动速度的变化,交易者可以使用它来确定趋势的方向。 

MACD 的计算方法是从 12 周期 EMA 中减去 26 周期指数移动平均线 (EMA)。MACD 的 9 天 EMA 称为“信号线”,然后与 MACD 一起绘制。 

当 MACD 低于信号线时,它是开始做空(卖出)操作的指标。当它越过它时,它是开始做多(买入)操作的指标:

plt.plot(stocks["macd"], color="b", label="MACD")
plt.plot(stocks["macds"], color="g", label="Signal Line")
plt.legend(loc="lower right")
plt.show()

输出:

股票价格分析:如何使用Python介绍财务和技术指标?

就是这样!任何人都可以探索stockstats提供的许多指标,可以按照与上述指标相同的方式对其进行绘制。

Python介绍财务和技术指标总结

在本教程中,你:

  • 学习了如何使用Pandas DataReaderyfinance库导入财务数据。 
  • 理解财务符号和定义。 
  • Python股票价格分析
  • 熟悉 OHLC 符号。
  • 学习了如何使用mpl_finance库绘制烛台图。 
  • 了解了财务指标的重要性,并使用stockstats库实现了其中的一些指标。
木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: