Обсуждение статьи "Глубокие нейросети (Часть I). Подготовка данных" - страница 3

 

Поэтому не люблю этот ggplot2. Вот работающий вариант который я не включил в статью.

#--------quantmod----------------------------
require(quantmod)
require(timetk)
evalq(
  pr %>% tk_xts(.) %>%
        chartSeries(x = OHLC(.), 
                    #c("auto", "candlesticks", 
                    #"matchsticks", "bars","line")
                    type = "bars", 
                    subset = 'last 3 days',#weeks, months
                    show.grid = T,
                    name = "EURJPY M15",
                    tyme.scale = T,
                    log.scale = FALSE,
                    line.type = "l",
                    bar.type = "ohlc",
                    theme = chartTheme('white',
                                       up.col = 4, 
                                       dn.col = 2,
                                       grid.col = 3,
                                       main.col = 1,
                                       sub.col = 4), 
                    major.ticks = "day", 
                    minor.ticks = TRUE ,
                    plot = TRUE,
                    color.vol = F,
                    multi.col = F
                    ),
      env)

Так выглядит

график

Удачи

 
Vladimir Perervenko:

Поэтому не люблю этот ggplot2. Вот работающий вариант который я не включил в статью.

Так выглядит


Удачи

Спасибо!

В RStudio Ваш вариант нормально график строит, а из терминала МТ4 ни в какую. Второй день вожусь и не выходит через окружение env команда chartSeries.

Если возможно, поделитесь советником под MT4 выгружающим котировки и строящим график. Спасибо.

Смог только по старинке, как делал раньше. Ну очень не удобно все команды прописывать в терминале, а не в R. 


      Rv(R,"Data",tm);

      Rv(R,"Time",tm);

      Rv(R,"Open",o);

      Rv(R,"High",hi);

      Rv(R,"Low",lo);

      Rv(R,"Close",clo);

      Rv(R,"Volume",vol);


      PREDICTION_COMMAND=

                         "library(magrittr)"+CR

                         +"library(dplyr)"+CR

                         +"library(xts)"+CR

                         +"library(quantmod)"+CR

                         +"price <- cbind(Time = rev(Time), Open = rev(Open), High = rev(High), Low = rev(Low), Close = rev(Close))"+CR

                         +"price_t <- price"+CR

                         +"dts = price_t[,1]"+CR

                         +"mydates = structure(price_t[,1],class=c('POSIXt','POSIXct'))"+CR

                         +"price_time <- xts(x=price_t[,c(2:5)], order.by=mydates, tzone='GMT')"+CR

                         ;

RExecuteAsync(R,PREDICTION_COMMAND);

     Rx(R,"chartSeries(price_time,   type = 'bars', subset = 'last 3 days',show.grid = T,name = 'EURUSD M15',tyme.scale = T,log.scale = FALSE,line.type = 'l',bar.type = 'ohlc',theme = chartTheme('white',up.col = 4, dn.col = 2,grid.col = 3,main.col = 1,sub.col = 4), major.ticks = 'day', minor.ticks = TRUE ,plot = TRUE,color.vol = F,multi.col = F)");


 
Konstantin Kopylov:

Спасибо!

В RStudio Ваш вариант нормально график строит, а из терминала МТ4 ни в какую. Второй день вожусь и не выходит через окружение env команда chartSeries.

Если возможно, поделитесь советником под MT4 выгружающим котировки и строящим график. Спасибо.

Смог только по старинке, как делал раньше. Ну очень не удобно все команды прописывать в терминале, а не в R. 


      Rv(R,"Data",tm);

      Rv(R,"Time",tm);

      Rv(R,"Open",o);

      Rv(R,"High",hi);

      Rv(R,"Low",lo);

      Rv(R,"Close",clo);

      Rv(R,"Volume",vol);


      PREDICTION_COMMAND=

                         "library(magrittr)"+CR

                         +"library(dplyr)"+CR

                         +"library(xts)"+CR

                         +"library(quantmod)"+CR

                         +"price <- cbind(Time = rev(Time), Open = rev(Open), High = rev(High), Low = rev(Low), Close = rev(Close))"+CR

                         +"price_t <- price"+CR

                         +"dts = price_t[,1]"+CR

                         +"mydates = structure(price_t[,1],class=c('POSIXt','POSIXct'))"+CR

                         +"price_time <- xts(x=price_t[,c(2:5)], order.by=mydates, tzone='GMT')"+CR

                         ;

RExecuteAsync(R,PREDICTION_COMMAND);

     Rx(R,"chartSeries(price_time,   type = 'bars', subset = 'last 3 days',show.grid = T,name = 'EURUSD M15',tyme.scale = T,log.scale = FALSE,line.type = 'l',bar.type = 'ohlc',theme = chartTheme('white',up.col = 4, dn.col = 2,grid.col = 3,main.col = 1,sub.col = 4), major.ticks = 'day', minor.ticks = TRUE ,plot = TRUE,color.vol = F,multi.col = F)");


Добрый день.

Я не строю графики таким образом из МТ. Это громоздко и не удобно. Интерактивные и любые другие графики нужно строить из R через shiny. 

В V части статьи я приложу советник с выводом простого графика. Правда я не пойму зачем Вам график котировок?

Я предполагал выводить график результатов тестирования, результатов торговли в реальном времени и с разбивкой по времени, символу и т.д. Может не все сделаю в этом эксперте.

Для работы с время/дата посмотрите более удобный пакет timekt. На Ваш выбор.

Удачи

 

Здравствуйте Владимир,

1) почему

v.rstl = c(NA, diff(rstl)*10)

умножается на 10, а остальные нет?

При нормализации эффект умножения - исчезнет.

2) Цифровые фильтры у вас считаются по ценам Close. На начало бара цена Close неизвестна (и равна Open). А считая по Close - получается подглядывание в будущее, которое немного повышает точность.
Может нужно считать фильтры по Close предыдущего бара или хотя бы по Open текущего бара?

Для эксперимента попробовал посчитать фильтры по Open - результаты стали похуже на несколько процентов.
По эксперименту из 6-й статьи

> #---5-----best----------------------
[1] 0.677 0.674 0.673 0.672 0.669 0.669 0.668

вместо полученных вами по Close [1] 0.720 0.718 0.718 0.715 0.713 0.713 0.712

3) Почему фильтры FATL, SATL, RFTL, RSTL исключены из дальнейших расчетов? Расчет ведется только на осцилляторах. Я попробовал их оставить, clusterSim посчитал их важными и не отсеял, в результате обучения получилась ошибка около 50%, т.е. они хоть и важны,но значительно ухудшают результат.
Видимо имеет смысл использовать для нейросетей только осцилляторы в качестве входов?
 
elibrarius:

Здравствуйте Владимир,

1) почему

умножается на 10, а остальные нет?

При нормализации эффект умножения - исчезнет.

2) Цифровые фильтры у вас считаются по ценам Close. На начало бара цена Close неизвестна (и равна Open). А считая по Close - получается подглядывание в будущее, которое немного повышает точность.
Может нужно считать фильтры по Close предыдущего бара или хотя бы по Open текущего бара?

Для эксперимента попробовал посчитать фильтры по Open - результаты стали похуже на несколько процентов.
По эксперименту из 6-й статьи

> #---5-----best----------------------
[1] 0.677 0.674 0.673 0.672 0.669 0.669 0.668

вместо полученных вами по Close [1] 0.720 0.718 0.718 0.715 0.713 0.713 0.712

3) Почему фильтры FATL, SATL, RFTL, RSTL исключены из дальнейших расчетов? Расчет ведется только на осцилляторах. Я попробовал их оставить, clusterSim посчитал их важными и не отсеял, в результате обучения получилась ошибка около 50%, т.е. они хоть и важны,но значительно ухудшают результат.
Видимо имеет смысл использовать для нейросетей только осцилляторы в качестве входов?

Добрый день.

1. Этот предиктор имел очень малые значения и при нормализации мог выпасть. Я его просто подогнал в диапазон остальных предикторов. При применении метода SpatialSign предикторы не должны отличаться на порядки.

2. Все значения котировок берутся со сформировавшихся баров начиная с 1. Вообще зигзаг лучше считать по High/Low. В последних статьях я предусмотрел варианты расчета ZZ.

3. Эти 4 являются непрерывными линиями и неприменимы как входы. Применяется первая разность по ним

v.fatl = c(NA, diff(fatl)),
v.rftl = c(NA, diff(rftl)),
v.satl = c(NA, diff(satl)),
v.rstl = c(NA, diff(rstl)*10))

Цифровые фильтры имеют одно важное преимущество перед другими индикаторами - они непараметрические(условно говоря конечно). Но мне они очень нравятся.

Удачи