日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

股票涨跌预测方法之三:建立模型并训练

發布時間:2024/4/24 综合教程 46 生活家
生活随笔 收集整理的這篇文章主要介紹了 股票涨跌预测方法之三:建立模型并训练 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前一陣子在同學的鼓動下,花了一個多月研究了股票行情的預測方法,熟悉了常見的炒股術語及技術指標,現總結如下,純屬興趣,如果想依照本文的方法來短線操作獲利,請繞道。

研究的第三步就是建立神經網絡預測模型了,還是使用keras來搭建,使用簡單的3層全連接層做實驗,輸出就是根據第二天的漲跌幅分為5類:漲(范圍[0.01,])、微漲(范圍[0.003,0.01])、平(范圍[-0.003,0.003])、微跌(范圍[-0.01,-0.003])、跌(范圍[, -0.01]),測試了下這么分,5類概率幾乎均等。

輸入選擇什么呢?如果直接將最近N天的開盤價、收盤價、交易量等原始值輸進去,應該是很難訓練的,畢竟不同股票的價格差異較大,同一個股票幾年前的價格、交易量跟現在也類似,很難收斂,如果輸入上篇文章中的股票技術指標,這些指標又太簡單,主要用于繪圖讓人觀察,我們采用了不同天數的收盤價格滑動平均(類似于MACD中的ema計算)、不同天數的收盤意愿滑動平均(類似于CR指標的計算)、不同天數的股票振幅滑動平均、不同天數的交易量滑動平均,注意所有的平均值計算完后還要除以一個基準值,使得每個值都在1.0附近。

def GetPara(m, allDate):
    if 1:   #簡單處理下輸入SVM,效果較好  
        data = []
        tmp = avg1(m.close, 32)
        data.append(m.close/tmp)
        data.append(avg1(m.close, 2)/tmp)
        data.append(avg1(m.close, 4)/tmp)
        data.append(avg1(m.close, 8)/tmp)
        data.append(avg1(m.close, 16)/tmp)
        
        tmp = m.close.copy()
        tmp[0] = (m.high[0]+m.low[0])/2
        tmp[1:] = (2*m.close[:-1] + m.high[:-1] +m.low[:-1]).values /4
        a = m.high - tmp
        b = tmp - m.low
        data.append(avg1(a, 2)/avg1(b, 2))
        data.append(avg1(a, 4)/avg1(b, 2))
        data.append(avg1(a, 8)/avg1(b, 2))
        data.append(avg1(a, 16)/avg1(b, 2))
        data.append(avg1(a, 32)/avg1(b, 2))
        
        tmp = (m.high- m.low)/ ((m.high+ m.low+0.00001)/2)
        data.append(tmp)
        data.append(avg1(tmp, 2))
        data.append(avg1(tmp, 4))
        data.append(avg1(tmp, 8))
        data.append(avg1(tmp, 16))
        data.append(avg1(tmp, 32))
    
        tmp = avg1(m.volume, 32)
        data.append(m.volume/tmp)
        data.append(avg1(m.volume, 2)/tmp)
        data.append(avg1(m.volume, 4)/tmp)
        data.append(avg1(m.volume, 8)/tmp)
        data.append(avg1(m.volume, 16)/tmp)
        

        data = np.array(data).T
        X_train = []
        Y_train = []
        n2 = 28
        for k in range(30, len(tmp)-1):
            if allDate[m.date[k-1]] - allDate[m.date[k-n2]] != n2-1:
                continue
            X_train.append(data[k, :].ravel())
            
            #v = (m.close[k]-m.close[k-1])/m.close[k-1]            
            v = (m.close[k+1]-m.close[k])/m.close[k]
            if v>=0.01: tmp=0
            elif v>=0.003: tmp=1
            elif v>=-0.003: tmp=2
            elif v>=-0.01:tmp = 3
            else: tmp = 4
            Y_train.append(tmp)
        return X_train, Y_train        

然后就是建立模型并訓練,loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'], class_mode='categorical',隨機采用10%的數據做驗證,經過長時間的等待,結果如下:

準確率35%左右,嗯,比扔銀幣的20%好多了。

總結

以上是生活随笔為你收集整理的股票涨跌预测方法之三:建立模型并训练的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。