这个是我一直想做的。
其实去年我就开始学习了,可惜意志力不坚定。学理论总是学不完。
TS的demo,我其实都跑了蛮多遍了,官方文档也是。
但是总是做到自己去预测那一步。然后最近,我改变了策略。
开始看那种偏向于实战性的视频。
强烈推荐 北大的ts笔记
棒呆了。完美符合我的预期。
本来是我是去啃youtube的版本的。不过这个,真的是棒呆了。
基础理论虽然很多不懂,但是大致的思路出来了。
--------我是有趣的分割线--------------------------------------
其实TS做预测。真能赚钱吗?讲道理赚钱是很难的。因为自己在做的过程中,是知道其中其实是数学公司推倒。毕竟以前看理论还是知道的。
其中有一个要素是
必须隐含一个公式。
但是股票预测作为最难的层级来说,基本上做不到预测。
但是为什么要尝试了。最近重读《黑客与画家》,已经不是大学给我的,
编程是开放,自由,民主,计算机使社会更加美好,用计算机创造美好。这些理念打动我了。
而是程序猿是一个画家。白天打工求一份工生存。晚上做艺术创造。
所以面对非常难,甚至不可能的问题上。依旧充满了动力。
并且雷军大佬说“风来了,连猪都可以飞起来”。所以学习这个,万一成了这头猪了。哈哈哈哈。
这次代码写的很LOW,后续进行改进
代码都是上面那个课程改过来的。当然其实你去看TS官方文档也有。但是官方文档,不会有一个特别完整的思路。
所以实名为北大的大佬点赞。
这里是tushare 获取股票信息。但是记住这个接口快过期了。本来我是想替换的。
但是由于一些原因,我还在看关于卷积的问题。卷积很迷茫。所以代码还没调整。
import tushare as ts
import matplotlib.pyplot as plt
df1 = ts.get_k_data('000977', ktype='D', start='2019-01-01', end='2020-06-12')
datapath1 = "./000977.csv"
df1.to_csv(datapath1)
训练模型
import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Dropout, Dense, LSTM
import matplotlib.pyplot as plt
import os
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error, mean_absolute_error
import math
maotai = pd.read_csv('./600584.csv') # 读取股票文件
training_set = maotai.iloc[0:350 - 60, 2:3].values # 前(2426-300=2126)天的开盘价作为训练集,表格从0开始计数,2:3 是提取[2:3)列,前闭后开,故提取出C列开盘价
test_set = maotai.iloc[350 - 60:, 2:3].values # 后300天的开盘价作为测试集
# 归一化
sc = MinMaxScaler(feature_range=(0, 1)) # 定义归一化:归一化到(0,1)之间
training_set_scaled = sc.fit_transform(training_set) # 求得训练集的最大值,最小值这些训练集固有的属性,并在训练集上进行归一化
test_set = sc.transform(test_set) # 利用训练集的属性对测试集进行归一化
x_train = []
y_train = []
x_test = []
y_test = []
# 测试集:csv表格中前2426-300=2126天数据
# 利用for循环,遍历整个训练集,提取训练集中连续60天的开盘价作为输入特征x_train,第61天的数据作为标签,for循环共构建2426-300-60=2066组数据。
for i in range(60, len(training_set_scaled)):
x_train.