当前位置: 首页 > news >正文

基于keras 的神经网络股价预测模型

这些年从网上的各位大牛那学到很多,本着开源开放的精神,今天我决定开源我量化交易代码。输入股票代码,和训练的数据时间,自动预测股票未来的走势。。。。。。。。。。。。。。。。。。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue May  7 17:55:28 2019@author: lg
"""from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY
#from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
#import matplotlib
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.pylab import date2num
import datetime
import numpy as np
from pandas import DataFrame
from numpy import row_stack,column_stack
from mpl_finance import candlestick_ochl
df=ts.get_hist_data('601857',start='2019-01-15',end='2019-05-07')
dd=df[['open','high','low','close']]
from mpl_finance import candlestick_ochl,candlestick_ohlc
#print(dd.values.shape[0])dd1=dd .sort_index()dd2=dd1.values.flatten()g1=dd2[::-1]g2=g1[0:120]g3=g2[::-1]gg=DataFrame(g3)gg.T.to_excel('gg.xls') #dd3=pd.DataFrame(dd2)
#dd3.T.to_excel('d8.xls') g=dd2[0:140]
for i in range(dd.values.shape[0]-34):s=dd2[i*4:i*4+140]g=row_stack((g,s))fg=DataFrame(g)print(fg)    
fg.to_excel('fg.xls') #-*- coding: utf-8 -*-
#建立、训练多层神经网络,并完成模型的检验
#from __future__ import print_function
import pandas as pdinputfile1='fg.xls' #训练数据
testoutputfile = 'test_output_data.xls' #测试数据模型输出文件
data_train = pd.read_excel(inputfile1) #读入训练数据(由日志标记事件是否为洗浴)
data_mean = data_train.mean()
data_std = data_train.std()
data_train1 = (data_train-data_mean)/5  #数据标准化y_train = data_train1.iloc[:,120:140].as_matrix() #训练样本标签列
x_train = data_train1.iloc[:,0:120].as_matrix() #训练样本特征
#y_test = data_test.iloc[:,4].as_matrix() #测试样本标签列from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activationmodel = Sequential() #建立模型
model.add(Dense(input_dim = 120, output_dim = 240)) #添加输入层、隐藏层的连接
model.add(Activation('relu')) #以Relu函数为激活函数
model.add(Dense(input_dim = 240, output_dim = 120)) #添加隐藏层、隐藏层的连接
model.add(Activation('relu')) #以Relu函数为激活函数
model.add(Dense(input_dim = 120, output_dim = 120)) #添加隐藏层、隐藏层的连接
model.add(Activation('relu')) #以Relu函数为激活函数
model.add(Dense(input_dim = 120, output_dim = 20)) #添加隐藏层、输出层的连接
model.add(Activation('sigmoid')) #以sigmoid函数为激活函数
#编译模型,损失函数为binary_crossentropy,用adam法求解
model.compile(loss='mean_squared_error', optimizer='adam')model.fit(x_train, y_train, nb_epoch = 100, batch_size = 8) #训练模型
model.save_weights('net.model') #保存模型参数inputfile2='gg.xls' #预测数据
pre = pd.read_excel(inputfile2)                  pre_mean = data_mean[0:120]
pre_std = pre.std()
pre1 = (pre-pre_mean)/10 #数据标准化
#pre1 = (pre-pre_mean)/pre.std()  #数据标准化                      
pre2 = pre1.iloc[:,0:120].as_matrix() #预测样本特征                 
r = pd.DataFrame(model.predict(pre2))
rt=r*10+data_mean[120:140].as_matrix()
print(rt.round(2))rt.to_excel('rt.xls') #print(r.values@data_train.iloc[:,116:120].std().values+data_mean[116:120].as_matrix())a=list(df.index[0:-1])b=a[0]c= datetime.datetime.strptime(b,'%Y-%m-%d')d = date2num(c)c1=[d+i+1 for i in range(5)]
c2=np.array([c1])r1=rt.values.flatten()
r2=r1[0:4]
for i in range(4):r3=r1[i*4+4:i*4+8]r2=row_stack((r2,r3))c3=column_stack((c2.T,r2))
r5=DataFrame(c3)if len(c3) == 0:raise SystemExitfig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)#ax.xaxis.set_major_locator(mondays)
#ax.xaxis.set_minor_locator(alldays)
#ax.xaxis.set_major_formatter(mondayFormatter)
#ax.xaxis.set_minor_formatter(dayFormatter)#plot_day_summary(ax, quotes, ticksize=3)
#candlestick_ochl(ax, c3, width=0.6, colorup='r', colordown='g')
candlestick_ohlc(ax, c3, width=0.5, colorup='r', colordown='g')ax.xaxis_date()
ax.autoscale_view()
plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')ax.grid(True)
#plt.title('000002')
plt.show()

在这里插入图片描述

相关文章:

  • 基于springboot+vue医院挂号就诊系统设计与实现
  • C#和数据库高级:虚方法
  • android 页面布局(1)
  • 章管家 listUploadIntelligent.htm SQL注入漏洞
  • matlab r2024a、matlab R2024b保姆级安装教程
  • 语音识别(非实时)
  • Python编程:08- pycharm使用技巧
  • NLP 序列标注任务核心梳理
  • compose remember 作用
  • Vue3+el-menu 递归 emit失效
  • 掌握MATLAB仪器控制工具箱:自动化测试与数据采集的利器
  • python的 __name__和__doc__属性
  • 测温传感器应用
  • 基于TypeScript+React+AntDesign 的车辆车型管理页面
  • 相亲交友系统的社会影响:家庭结构的变化
  • Android系统模拟器绘制实现概述
  • Date型的使用
  • extract-text-webpack-plugin用法
  • JAVA并发编程--1.基础概念
  • js写一个简单的选项卡
  • 阿里云Kubernetes容器服务上体验Knative
  • 动态规划入门(以爬楼梯为例)
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 解决iview多表头动态更改列元素发生的错误
  • 如何使用 JavaScript 解析 URL
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 微信开源mars源码分析1—上层samples分析
  • 温故知新之javascript面向对象
  • 小程序测试方案初探
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 应用生命周期终极 DevOps 工具包
  • ​520就是要宠粉,你的心头书我买单
  • ​io --- 处理流的核心工具​
  • ​比特币大跌的 2 个原因
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (pycharm)安装python库函数Matplotlib步骤
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (篇九)MySQL常用内置函数
  • (十三)Maven插件解析运行机制
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (算法设计与分析)第一章算法概述-习题
  • (一)插入排序
  • (原)Matlab的svmtrain和svmclassify
  • (转)http协议
  • (转)程序员疫苗:代码注入
  • *** 2003
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)