欢迎光临散文网 会员登陆 & 注册

股票交易软件:采用栈式 RBM 的深度神经网络。自训练, 自控制

2023-07-19 16:14 作者:大牛啊呢  | 我要投稿

1. 由栈式 RBM (DN_SRBM) 初始化的深层神经网络的结构

我记得 DN_SRBM 是由 n 个等于神经网络隐藏层数的 RBM 组成, 基本上是神经网络本身。训练包括两个阶段。赫兹量化软件

编辑搜图

请点击输入图片描述(最多18字)

第一阶段涉及预训练。每个 RBM 无需监督者即可依据输入集合系统地训练 (无目标)。在隐藏层的权重之后, RBM 被转移到相关的神经网络隐藏层。赫兹量化软件

第二阶段涉及微调, 在此神经网络由监督者训练。前文中已提供了有关它的详细信息, 所以我们在此不再复述。我将简单叙述, 不像我们前文用过的 "deepnet" 软件包, "darch" 软件包帮助我们实现更广泛的机会来构建并微调模型。更多详细信息将在创建模型时提供。图例. 1 显示 DN_SRBM 的结构和处理过程赫兹量化软件

编辑搜图

图例. 1. DN SRBM 的结构


2. 数据的准备及选择


2.1. 输入变量 (征兆, 预测器)

在前文中, 我们研究过预测器的评估和选择, 所以在此无需提供额外信息。我仅论及我们使用的 11 款指标 (所有的振荡器: ADX, aroon, ATR, CCI, chaikinVolatility, CMO, MACD, RSI, stoch, SMI, volatility)。选择了来自一些指标的若干变量。这样就形成了 17 个变量的输入集。我们从 EURUSD 里取最后 6000 根柱线的报价, 2016 年 02 月 14 日 M30 时间帧, 并使用 In() 函数计算指标值。赫兹量化软件

#---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)
}


我们将在输出上获得输入数据矩阵。


2.2输出数据 (目标白能量)

我们采用取自 ZZ 的信号作为目标变量。函数计算之字折线信号:

#----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))
}

函数参数:

pr = 价格 – OHLCMed 报价的矩阵;

ch – 之字折线弯曲的最小长度点数 (4 位) 或是实际项 (例如, ch = 0.0035);

mode – 应用的价格 ("m" - 中间价, "hl" - 最高价和最低价, "cl" - 收盘价), 省缺使用中间价。赫兹量化软件

函数返回两个变量的矩阵 — 事实上, 之字折线和信号, 是在之字折线角度范围 [-1;1] 的基础上取得的。我们将信号向左平移一根柱线 (朝向未来)。这个特定的信号将用于训练神经网络。赫兹量化软件

我们计算信号时 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

如我们所见, 分级略有失衡。当形成用于训练模型的样本时, 我们将采取必要的措施来令它们平衡。



股票交易软件:采用栈式 RBM 的深度神经网络。自训练, 自控制的评论 (共 条)

分享到微博请遵守国家法律