股票交易軟件:采用棧式 RBM 的深度神經(jīng)網(wǎng)絡(luò)。自訓練, 自控制
1. 由棧式 RBM (DN_SRBM) 初始化的深層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
我記得 DN_SRBM 是由 n 個等于神經(jīng)網(wǎng)絡(luò)隱藏層數(shù)的 RBM 組成, 基本上是神經(jīng)網(wǎng)絡(luò)本身。訓練包括兩個階段。赫茲量化軟件
編輯搜圖
請點擊輸入圖片描述(最多18字)
第一階段涉及預訓練。每個 RBM 無需監(jiān)督者即可依據(jù)輸入集合系統(tǒng)地訓練 (無目標)。在隱藏層的權(quán)重之后, RBM 被轉(zhuǎn)移到相關(guān)的神經(jīng)網(wǎng)絡(luò)隱藏層。赫茲量化軟件
第二階段涉及微調(diào), 在此神經(jīng)網(wǎng)絡(luò)由監(jiān)督者訓練。前文中已提供了有關(guān)它的詳細信息, 所以我們在此不再復述。我將簡單敘述, 不像我們前文用過的 "deepnet" 軟件包, "darch" 軟件包幫助我們實現(xiàn)更廣泛的機會來構(gòu)建并微調(diào)模型。更多詳細信息將在創(chuàng)建模型時提供。圖例. 1 顯示 DN_SRBM 的結(jié)構(gòu)和處理過程赫茲量化軟件
編輯搜圖
圖例. 1. DN SRBM 的結(jié)構(gòu)
2. 數(shù)據(jù)的準備及選擇
2.1. 輸入變量 (征兆, 預測器)
在前文中, 我們研究過預測器的評估和選擇, 所以在此無需提供額外信息。我僅論及我們使用的 11 款指標 (所有的振蕩器: ADX, aroon, ATR, CCI, chaikinVolatility, CMO, MACD, RSI, stoch, SMI, volatility)。選擇了來自一些指標的若干變量。這樣就形成了 17 個變量的輸入集。我們從 EURUSD 里取最后 6000 根柱線的報價, 2016 年 02 月 14 日 M30 時間幀, 并使用 In() 函數(shù)計算指標值。赫茲量化軟件
#---2---------------------------------------------
In <- function(p = 16){
??require(TTR)
??require(dplyr)
??require(magrittr)
??adx <- ADX(price, n = p) %>% as.data.frame %>%
????mutate(.,oscDX = DIp - DIn) %>%
????transmute(.,DX, ADX, oscDX) %>%
????as.matrix()
??ar <- aroon(price[ ,c('High', 'Low')], n = p) %>%
????extract(,3)
??atr <- ATR(price, n = p, maType = "EMA") %>%
????extract(,1:2)
??cci <- CCI(price[ ,2:4], n = p)
??chv <- chaikinVolatility(price[ ,2:4], n = p)
??cmo <- CMO(price[ ,'Med'], n = p)
??macd <- MACD(price[ ,'Med'], 12, 26, 9) %>%
????as.data.frame() %>%
????mutate(., vsig = signal %>%
???????????? diff %>% c(NA,.) %>% multiply_by(10)) %>%
????transmute(., sign = signal, vsig) %>%
????as.matrix()
??rsi <- RSI(price[ ,'Med'], n = p)
??stoh <- stoch(price[ ,2:4], nFastK = p,
????????????????nFastD =3, nSlowD = 3,
????????????????maType = "EMA") %>%
????????????????????????????????as.data.frame() %>%
????????????????????????????????mutate(., oscK = fastK - fastD) %>%
????????????????????????????????transmute(.,slowD, oscK) %>%
????????????????????????????????as.matrix()
??smi <- SMI(price[ ,2:4],n = p, nFast = 2,
???????????? nSlow = 25, nSig = 9)
??kst <- KST(price[ ,4])%>% as.data.frame() %>%
????????????????????????????????mutate(., oscKST = kst - signal) %>%
????????????????????????????????select(.,oscKST) %>% as.matrix()
??In <- cbind(adx, ar, atr, cci, chv, cmo, macd,
??????????????rsi, stoh, smi, kst)
??return(In)
}
我們將在輸出上獲得輸入數(shù)據(jù)矩陣。
2.2輸出數(shù)據(jù) (目標白能量)
我們采用取自 ZZ 的信號作為目標變量。函數(shù)計算之字折線信號:
#----3------------------------------------------------
ZZ <- function(pr = price, ch = ch , mode="m") {
??require(TTR)
??require(magrittr)
??if (ch > 1) ch <- ch/(10 ^ (Dig - 1))
??if (mode == "m") {pr <- pr[ ,'Med']}
??if (mode == "hl") {pr <- pr[ ,c("High", "Low")]}
??if (mode == "cl") {pr <- pr[ ,c("Close")]}
??zz <- ZigZag(pr, change = ch, percent = F,
?????????????? retrace = F, lastExtreme = T)
??n <- 1:length(zz)
??dz <- zz %>% diff %>% c(., NA)
??sig <- sign(dz)
??for (i in n) { if (is.na(zz[i])) zz[i] = zz[i - 1]}
??return(cbind(zz, sig))
}
函數(shù)參數(shù):
pr = 價格 – OHLCMed 報價的矩陣;
ch – 之字折線彎曲的最小長度點數(shù) (4 位) 或是實際項 (例如, ch = 0.0035);
mode – 應(yīng)用的價格 ("m" - 中間價, "hl" - 最高價和最低價, "cl" - 收盤價), 省缺使用中間價。赫茲量化軟件
函數(shù)返回兩個變量的矩陣 — 事實上, 之字折線和信號, 是在之字折線角度范圍 [-1;1] 的基礎(chǔ)上取得的。我們將信號向左平移一根柱線 (朝向未來)。這個特定的信號將用于訓練神經(jīng)網(wǎng)絡(luò)。赫茲量化軟件
我們計算信號時 Z赫茲量化軟件Z 彎曲長度至少 37 點 (4 位)。
> out <- ZZ(ch = 37, mode = "m")
Loading required package: TTR
Loading required package: magrittr
> table(out[ ,2])
??-1????1 2828 3162
如我們所見, 分級略有失衡。當形成用于訓練模型的樣本時, 我們將采取必要的措施來令它們平衡。