股市的股价反映了公司的估值和表现,这影响了市场的供需关系。技术分析是股市分析中的一个重要领域,本文将提供一个概览。通过使用Python分析股价,投资者可以确定何时买入或卖出股票。本文将为那些想要分析股市并理解其波动性的投资者提供一个起点。让开始使用Python进行股价分析。
以下是进行股价分析前需要安装的库,可以通过pip函数轻松下载。下面提供了库的名称和应用的简要描述。
库 | 应用 |
---|---|
Yahoo Finance | 下载股票数据 |
Pandas | 在Python中处理数据框 |
Numpy | 数值Python |
Matplotlib | 绘制图表 |
import pandas as pd
import datetime
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import scatter_matrix
!pip install yfinance
import yfinance as yf
%matplotlib inline
使用Yahoo Finance API功能下载了每日股票价格数据,这是五年的数据,包括开盘价、最高价、最低价、收盘价和成交量。
这里以TCS、Infosys和Wipro三家公司为例,它们是提供IT服务的行业领导者。
start = "2014-01-01"
end = '2019-1-01'
tcs = yf.download('TCS',start,end)
infy = yf.download('INFY',start,end)
wipro = yf.download('WIPRO.NS',start,end)
以上图表是通过利用Python中的matplotlib库,以折线图的形式表示这三家公司的开盘股票价格。图表清楚地显示了与其它两家公司相比,Wipro的价格更高,但对这些公司的绝对价格不感兴趣,而是想了解这些股票随时间的波动情况。
tcs['Volume'].plot(label = 'TCS', figsize = (15,7))
infy['Volume'].plot(label = "Infosys")
wipro['Volume'].plot(label = 'Wipro')
plt.title('股票交易量')
plt.legend()
图表显示了这些公司的交易量,清楚地显示了Infosys的股票交易量比其他IT股票更多。
众所周知,股票价格波动性很大,价格随时间快速变化。为了观察任何趋势或模式,可以借助50日和200日平均线。
tcs['MA50'] = tcs['Open'].rolling(50).mean()
tcs['MA200'] = tcs['Open'].rolling(200).mean()
tcs['Open'].plot(figsize = (15,7))
tcs['MA50'].plot()
tcs['MA200'].plot()
以上图表是每家公司的直方图的组合,以及随后的散点图,每次取两家公司的股价。从图表中,可以清楚地看出Wipro股票与Infosys股票显示出线性相关性。
data = pd.concat([tcs['Open'],infy['Open'],wipro['Open']],axis = 1)
data.columns = ['TCSOpen','InfosysOpen','WiproOpen']
scatter_matrix(data, figsize = (8,8), hist_kwds= {'bins':250})
tcs['returns'] = (tcs['Close']/tcs['Close'].shift(1)) -1
infy['returns'] = (infy['Close']/infy['Close'].shift(1))-1
wipro['returns'] = (wipro['Close']/wipro['Close'].shift(1)) - 1
tcs['returns'].hist(bins = 100, label = 'TCS', alpha = 0.5, figsize = (15,7))
infy['returns'].hist(bins = 100, label = 'Infosys', alpha = 0.5)
wipro['returns'].hist(bins = 100, label = 'Wipro', alpha = 0.5)
plt.legend()