我們都知道股價擁有時序的特性,也就是昨天的股票和走勢對於今日的股價或多或少是會有影響的而今天使用的LSTM(長短期記憶模型),但這裡我介紹一個很好用的套件(FinMind)可以爬取股票的資料,也有定期在維護,裡面也不只有股價的資料。
pip install FinMind
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
我們可以使用FinMind的功能取得股價,這次我們嘗試的就是這個月股價不斷創高、台灣人稱外資控盤工具的 台積電(2330-TW), 選用的資料從2020-01-01開始
from FinMind.Data import Load
TaiwanStockInfo = Load.FinData(dataset = 'TaiwanStockInfo')
data = Load.FinData(dataset = 'TaiwanStockPrice',select = '2330',date = '2020-01-01')
data.head()
fig=plt.figure(figsize=(20,8))
plt.xticks(rotation = 90)
ax1 = fig.add_subplot(111)
ax1.plot(data.close,color='red',label='close')
ax1.plot(data.open,color='green',label='open')
plt.legend()
ax2= ax1.twinx()
plt.bar(data.date,data.Trading_Volume.astype('int')//1000)
ax3 = ax1.twinx()
plt.savefig('2330_year.png')
紅色的是收盤價、綠色的線是開盤價,從股票的走勢看來,台積電是突破了前高
X_train = []
y_train = []
for i in range(10,len(train_set)):
X_train.append(training_set_scaled[i-10:i-1, 0])
y_train.append(training_set_scaled[i, 0])
X_train, y_train = np.array(X_train), np.array(y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
這次的實作是我參考https://wenwender.wordpress.com/2019/10/18/%E5%AF%A6%E4%BD%9C%E9%80%8F%E9%81%8Elstm%E9%A0%90%E6%B8%AC%E8%82%A1%E7%A5%A8/ 做到這我還有很多不懂的地方,尤其是股票這領域,所以如果上面有講錯的地方請大家多包涵。