python金融分析(一)股票走势分析 您所在的位置:网站首页 股票走势K线图中的K线描述了单位时间内哪些价格信息 python金融分析(一)股票走势分析

python金融分析(一)股票走势分析

2024-07-11 00:19| 来源: 网络整理| 查看: 265

要使用Python分析股票走势图,你通常需要做几个步骤:收集数据、处理数据、可视化分析以及执行某些形式的技术分析。以下是一个基本流程和代码示例,使用Pandas进行数据处理和Matplotlib进行图形绘制。

    收集数据:

可以利用一些库如yfinance来获取雅虎金融上的股票数据。处理数据:使用pandas库来组织数据,比如计算移动平均线等。可视化:使用matplotlib或plotly之类的库绘制股票走势图。技术分析:可以计算各种技术指标,如RSI(相对强弱指数)、MACD(移动平均收敛发散)等。

以下是使用yfinance和matplotlib绘制股票价格及其移动平均线的示例代码:

import yfinance as yf import matplotlib.pyplot as plt import pandas as pd # 下载股票数据 ticker = 'AAPL' # 以苹果公司为例 data = yf.download(ticker, start='2022-01-01', end='2023-01-01') # 计算移动平均 data['SMA_50'] = data['Close'].rolling(window=50).mean() # 短期50天移动平均 data['SMA_200'] = data['Close'].rolling(window=200).mean() # 长期200天移动平均 # 绘制股票价格及移动平均线 plt.figure(figsize=(14,7)) plt.plot(data['Close'], label='Closing Price') # 绘制收盘价 plt.plot(data['SMA_50'], label='50-Day SMA') # 绘制50天移动平均线 plt.plot(data['SMA_200'], label='200-Day SMA') # 绘制200天移动平均线 # 添加标题和标签 plt.title('Stock Price with Moving Averages') plt.xlabel('Date') plt.ylabel('Price') plt.legend() plt.show()

上述代码将会生成一个股票的收盘价走势图,并在同一图表中显示50天和200天的移动平均线。接下来我们将开始进行技术分析,要进行更深入的股票分析,你可以引入更多的技术分析指标。下面会介绍如何使用Python添加几个流行的技术分析工具:相对强弱指数(RSI)、移动平均收敛发散(MACD)、布林带(Bollinger Bands)。

import yfinance as yf import pandas as pd import mplfinance as mpf # 下载股票数据 ticker = 'AAPL' # 以苹果公司为例 data = yf.download(ticker, start='2022-01-01', end='2023-01-01') # 计算RSI def compute_rsi(data, window=14): delta = data.diff() gain = (delta.where(delta > 0, 0)).rolling(window=window).mean() loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean() rs = gain / loss rsi = 100 - (100 / (1 + rs)) return rsi data['RSI'] = compute_rsi(data['Close']) # 计算MACD def compute_macd(data, span1=12, span2=26, signal=9): exp1 = data.ewm(span=span1, adjust=False).mean() exp2 = data.ewm(span=span2, adjust=False).mean() macd = exp1 - exp2 signal_line = macd.ewm(span=signal, adjust=False).mean() return macd, signal_line data['MACD'], data['Signal_Line'] = compute_macd(data['Close']) # 计算布林带 def compute_bollinger_bands(data, window=20, no_of_std=2): rolling_mean = data['Close'].rolling(window=window).mean() rolling_std = data['Close'].rolling(window=window).std() upper_band = rolling_mean + (rolling_std * no_of_std) lower_band = rolling_mean - (rolling_std * no_of_std) return upper_band, lower_band data['Upper_Band'], data['Lower_Band'] = compute_bollinger_bands(data) # 使用mplfinance绘制图表 apds = [mpf.make_addplot(data['RSI'], panel=2, color='orange', title="RSI"), mpf.make_addplot(data['MACD'], panel=3, color='blue', secondary_y=False), mpf.make_addplot(data['Signal_Line'], panel=3, color='red', secondary_y=False), mpf.make_addplot(data['Upper_Band'], color='green'), mpf.make_addplot(data['Lower_Band'], color='green')] mpf.plot(data, type='candle', addplot=apds, volume=True, figratio=(12,8), figscale=1.2, title=f'{ticker} Stock Analysis', style='yahoo') 使用yfinance库获取AAPL股票的历史数据。定义函数计算RSI,基于股价的变动率来衡量股票的超买或超卖情况。定义函数计算MACD,通过观察短期和长期价格趋势的差异来识别趋势变化。定义函数计算布林带,该指标由一个中心线和两个价格通道组成,帮助分析股价的波动性和可能的突破点。使用mplfinance库以蜡烛图形式绘制股价,并添加相对应的技术分析指标到图表中。

在基本的技术分析基础上,可以创建更复杂的交易策略。这些策略通常涉及多个指标的组合,以及对市场行为的定义规则。下面是一个简单的策略示例,它结合了移动平均线、RSI和MACD指标。

移动平均线交叉: 当短期移动平均线(如50天)从下方穿越长期移动平均线(如200天),这可能是一个购买信号。相反,当短期移动平均线从上方穿越长期移动平均线,这可能是一个卖出信号。 RSI: 如果RSI低于30,股票可能被超卖,这可能是一个购买信号。如果RSI高于70,股票可能被超买,这可能是一个卖出信号。 MACD: 当MACD线(快线)从下方穿越信号线(慢线),这可能是一个购买信号。当MACD线从上方穿越信号线,这可能是一个卖出信号。

我们可以将这些规则结合起来创建一个简单的策略:

# 根据移动平均线交叉编写策略 def ma_crossover_strategy(data): buy_signals = [] sell_signals = [] flag = -1 # 表示趋势状态,-1为无持仓,1为已持仓 for i in range(len(data)): if data['SMA_50'][i] > data['SMA_200'][i] and flag != 1: buy_signals.append(data['Close'][i]) sell_signals.append(float('nan')) flag = 1 elif data['SMA_50'][i] < data['SMA_200'][i] and flag != -1: sell_signals.append(data['Close'][i]) buy_signals.append(float('nan')) flag = -1 else: buy_signals.append(float('nan')) sell_signals.append(float('nan')) return buy_signals, sell_signals data['Buy'], data['Sell'] = ma_crossover_strategy(data) # 制定买卖决策 data['Buy_Signal'] = (data['RSI'] < 30) & (data['MACD'] > data['Signal_Line']) data['Sell_Signal'] = (data['RSI'] > 70) & (data['MACD'] < data['Signal_Line'])

在这个策略中,我们使用了移动平均线的金叉和死叉作为主要的买入和卖出信号,并结合RSI和MACD作为进一步确认。这样的策略可以增加信号的可靠性,但同时也可能减少交易机会。

在实际应用中,你需要根据个人风格、风险承受能力和市场环境来调整和优化这些策略。常见的优化方法包括参数调优、回测、前向测试和其他统计分析方法。任何策略在实际交易之前都应该经过充分的测试,且要意识到历史表现不代表未来结果。此外,策略的实盘执行还需要考虑到交易成本、滑点、资金管理等因素。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有