使用ARIMA预测股票未来走势

简介: Python实现使用ARIMA预测股票未来走势

from fileinput import close
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.stats.diagnostic import acorr_ljungbox

import statsmodels.api as sm
import matplotlib.font_manager as fm
import mplfinance as mpf

def arima_prediction(df,forecast_steps):

# 处理缺失值(如果有)
df = df.fillna(df.bfill())

# sm.graphics.tsa.plot_acf(ts,lags=30)
# sm.graphics.tsa.plot_pacf(ts,lags=30)

# 拟合ARIMA模型
p, d, q = 2, 0, 2  # 设置ARIMA模型的阶数(可以根据实际数据调整)
model = ARIMA(df, order=(p, d, q))
model_fit = model.fit()

# 预测未来1个月的K线数据

forecast= model_fit.forecast(steps=forecast_steps)
return forecast

def main():
code = '000001.SZ'
df = pd.read_csv("D:\csv_day_hq\"+code+".csv")
df['pushDate'] = pd.to_datetime(df['pushDate'])

df_p = df[df['pushDate']<='2023-08-25'].tail(250)
df_p.set_index('pushDate', inplace=True)

# print(df_p)
forecast_steps = 30
forecast_close = arima_prediction(df_p['close'],30)
forecast_open = arima_prediction(df_p['open'],30)
forecast_high = arima_prediction(df_p['high'],30)
forecast_low = arima_prediction(df_p['low'],30)

# 生成日期序列(未来1个月的日期)
last_date = df_p.index[-1]
print(last_date)
date_range = pd.date_range(start=last_date + pd.DateOffset(days=1), periods=forecast_steps, freq='D')
print(date_range)

# 创建未来1个月K线走势的DataFrame
forecast_df = pd.DataFrame({"pushDate":date_range,'open': forecast_open[0],'high': forecast_high[0],'low': forecast_low[0],'close': forecast_close[0]})
forecast_df.set_index('pushDate', inplace=True)
print(forecast_df)
lishi_df = df[['pushDate','open','high','low','close']]
lishi_df = lishi_df[lishi_df.shape[0]-100:]
lishi_df.set_index('pushDate', inplace=True)
forecast_df = pd.concat([lishi_df,forecast_df],ignore_index=False)
print(forecast_df)
# 自定义涨跌颜色
custom_colors = mpf.make_marketcolors(
    up='red',       # 上涨的颜色
    down='green',   # 下跌的颜色
    edge='black',   # K线边缘颜色
    wick='black',   # K线上下影线颜色
    volume='blue'   # 成交量条颜色
)

# 设置自定义样式
style = mpf.make_mpf_style(base_mpl_style="seaborn", marketcolors=custom_colors)
mpf.plot(forecast_df,type='candle', style=style, title='Kline', ylabel='price')

main()
Figure_1.png

相关文章
|
数据采集 数据可视化 vr&ar
Python3实现基于ARIMA模型来预测茅台股票价格趋势
Python3实现基于ARIMA模型来预测茅台股票价格趋势
2872 0
|
人工智能 搜索推荐 Android开发
Android系统版本演进:从1.0到最新,见证移动操作系统的蜕变####
本文以Android系统的迭代更新为线索,探讨了自2008年首个版本发布以来,Android在功能、性能、用户体验及安全性方面的显著进步。通过对比各代版本的亮点与改进,揭示了Android如何逐步发展成为全球领先的移动操作系统平台,并预测了未来发展趋势。 ####
1416 24
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
543 1
|
运维 算法 程序员
程序员去国企:长城资产IT岗位秋招面试记录
【2月更文挑战第7天】本文介绍2024届秋招中,中国长城资产管理股份有限公司的信息技术岗岗位一面的面试基本情况、提问问题等~
576 8
|
SQL 分布式计算 安全
Spark的核心概念:RDD、DataFrame和Dataset
Spark的核心概念:RDD、DataFrame和Dataset
|
算法 JavaScript 前端开发
JavaScript学习 -- SM3算法基本原理
JavaScript学习 -- SM3算法基本原理
515 0
|
SQL Java Spring
MybatisPlus-条件查询方式及多条件构建查询
MybatisPlus-条件查询方式及多条件构建查询
2036 0
|
运维 安全 专有云
设定北极星指标——数据驱动效能改进| 学习笔记
快速学习设定北极星指标——数据驱动效能改进
设定北极星指标——数据驱动效能改进| 学习笔记
|
机器学习/深度学习 人工智能 算法
心中有“树”!图文并茂介绍数据结构中常见的树(三)
在前面两篇文章中,我们简要介绍了数据结构中的各种【树】在搜索、数据库等领域的使用场景,希望对大家有所帮助。
828 0
心中有“树”!图文并茂介绍数据结构中常见的树(三)
|
数据采集 存储 缓存
布隆过滤器的常见应用场景
布隆过滤器(Bloom Filter)是一种高效的数据结构,用于判断一个元素是否存在于一个集合中。它的主要特点是快速、低内存消耗和高效率。布隆过滤器通过利用位数组和哈希函数的特性,可以快速判断一个元素是否在集合中,但是它也有一定的误判率。
1358 0