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

 

Здравствуйте!

Вы не описали как выгружали котировки в окружение env ("Поскольку мы загрузили векторы котировок в окружение env..) и как создавали его.

Пробую повторить все с самого начала в ручную со своими котировками, выгрузил их в векторы, но уперся вот в это окружение, которое вы создали. Не понимаю как его создать и повторить по Вашему образцу.

Помогите.

 

Сообщение пропало. 

Вы как передаете котировки в Rterm? Читаете из файла или из терминала?

 
Vladimir Perervenko:

Сообщение пропало. 

Вы как передаете котировки в Rterm? Читаете из файла или из терминала?


Более или менее разобрался сам. Вашу Часть 1 на котировках EURUSD попробовал, все получилось.

Делаю так: 

1. В МТ4 -

for(i = 0; i < lim; i++)

        {

         tm[i]  = Time[i+1];

         o[i]  = Open[i+1];

         hi[i] = High[i+1];

         lo[i] = Low[i+1];

         clo[i]= Close[i+1];

         vol[i]= Volume[i+1];


        }

      //--------Send data to Rterm--------------------------------------

      Rv(R,"Data",tm);

      Rv(R,"Open",o);

      Rv(R,"High",hi);

      Rv(R,"Low",lo);

      Rv(R,"Close",clo);

      Rv(R,"Volume",vol);

2. В R - 

price_orig <- cbind(Close = rev(Close), Data = rev(Data), High = rev(High), Low = rev(Low), Open = rev(Open), Volume = rev(Volume) )

price1 <- data.frame(price_orig)

price2 <- as.list(price1)


env <- new.env()

assign("Close", price1$Close, env)

assign("Data", price1$Data, env)

assign("High", price1$High, env)

assign("Low", price1$Low, env)

assign("Open", price1$Open, env)

assign("Volume", price1$Volume, env)

Dig <- 5;

sym <- "EURUSD";

tf <- "M15";


evalq({pr <- pr.OHLCV(Data, Open, High, Low, Close, Volume)}, env)


Не смог запустить графики в МТ4, не проходит evalq, %>%, aes,  geom_candlestick :

Rx(R,"evalq(pr %>% tail(., 500) %>%

        ggplot(aes(x = Data, y = Close)) +

        geom_candlestick(aes(open = Open, high = High, low = Low, close = Close)) +

        labs(title = "EURJPY Candlestick Chart", y = "Close Price", x = "") + 

        theme_tq(), env)");

Попробовал по старинке без переменной окружения env, выгрузил данные, команда ggplot(,) запускается и окно под график открывается. С параметрами ни в какую.  

 
Konstantin Kopylov:

Более или менее разобрался сам. Вашу Часть 1 на котировках EURUSD попробовал, все получилось.

Делаю так: 

1. В МТ4 -

for(i = 0; i < lim; i++)

        {

         tm[i]  = Time[i+1];

         o[i]  = Open[i+1];

         hi[i] = High[i+1];

         lo[i] = Low[i+1];

         clo[i]= Close[i+1];

         vol[i]= Volume[i+1];


        }

      //--------Send data to Rterm--------------------------------------

      Rv(R,"Data",tm);

      Rv(R,"Open",o);

      Rv(R,"High",hi);

      Rv(R,"Low",lo);

      Rv(R,"Close",clo);

      Rv(R,"Volume",vol);

2. В R - 

price_orig <- cbind(Close = rev(Close), Data = rev(Data), High = rev(High), Low = rev(Low), Open = rev(Open), Volume = rev(Volume) )

price1 <- data.frame(price_orig)

price2 <- as.list(price1)


env <- new.env()

assign("Close", price1$Close, env)

assign("Data", price1$Data, env)

assign("High", price1$High, env)

assign("Low", price1$Low, env)

assign("Open", price1$Open, env)

assign("Volume", price1$Volume, env)

Dig <- 5;

sym <- "EURUSD";

tf <- "M15";


evalq({pr <- pr.OHLCV(Data, Open, High, Low, Close, Volume)}, env)


Не смог запустить графики в МТ4, не проходит evalq, %>%, aes,  geom_candlestick :

Rx(R,"evalq(pr %>% tail(., 500) %>%

        ggplot(aes(x = Data, y = Close)) +

        geom_candlestick(aes(open = Open, high = High, low = Low, close = Close)) +

        labs(title = "EURJPY Candlestick Chart", y = "Close Price", x = "") + 

        theme_tq(), env)");

Попробовал по старинке без переменной окружения env, выгрузил данные, команда ggplot(,) запускается и окно под график открывается. С параметрами ни в какую.  

Добрый день.

Такая передача с терминала лишняя. Вы загружаете в глобальное окружение а затем переносите в окружение env. После этого нужно будет чистить глобальное окружение. Смысл загрузки и обработки данных в отдельном окружении - при использовании нескольких ТФ одного символа или нескольких символов не порождать конфликт имен. Все они обрабатываются одними и теми же скриптами и исходные данные и результаты имеют одинаковые имена но каждый в своем окружении. Нужно сделать так:

В Init()

 Rx(R,"env <- new.env()");

//Здесь может быть любой символ, например EURUSD <- new.env(). Тогда и дальше к данным нужно будет обращаться соответственно EURUSD$price

В start()

 //--------Send data to Rterm--------------------------------------

      Rv(R,"env$Data",tm);

      Rv(R,"env$Open",o);

      Rv(R,"env$High",hi);

      Rv(R,"env$Low",lo);

      Rv(R,"env$Close",clo);

      Rv(R,"env$Volume",vol);

Данные сразу попадают в отдельное окружение env. И дальше с ними работать через evalq().

evalq({pr <- pr.OHLCV(Data, Open, High, Low, Close, Volume)}, env)

С графиками попробуйте так:

Rx(R,"env$pr %>% tail(., 500) %>%

        ggplot(aes(x = env$Data, y = env$Close)) +

        geom_candlestick(aes(open = env$Open, high = env$High, low = env$Low, close = env$Close)) +

        labs(title = "EURJPY Candlestick Chart", y = "Close Price", x = "") + 

        theme_tq()");

Я не вывожу графики таким образом. Напишите как проверите.

Удачи

 
Vladimir Perervenko:

Добрый день.

Такая передача с терминала лишняя. Вы загружаете в глобальное окружение а затем переносите в окружение env. После этого нужно будет чистить глобальное окружение. Смысл загрузки и обработки данных в отдельном окружении - при использовании нескольких ТФ одного символа или нескольких символов не порождать конфликт имен. Все они обрабатываются одними и теми же скриптами и исходные данные и результаты имеют одинаковые имена но каждый в своем окружении. Нужно сделать так:

В Init()

 Rx(R,"env <- new.env()");

//Здесь может быть любой символ, например EURUSD <- new.env(). Тогда и дальше к данным нужно будет обращаться соответственно EURUSD$price

В start()

Данные сразу попадают в отдельное окружение env. И дальше с ними работать через evalq().

С графиками попробуйте так:

Я не вывожу графики таким образом. Напишите как проверите.

Удачи


С выгрузкой все получилось. Спасибо!

А вот с графиком, что то не идет. Пишет ошибку. Хотя библиотеки подгружены.

     Rx(R,"library(magrittr)");

   Rx(R,"library(dplyr)");

    Rx(R,"library(xts)");

      Rx(R,"library(anytime)");

      Rx(R,"library(quantmod)");

      Rx(R,"library(TTR)");

      Rx(R,"library(ggplot2)");


Проверил в RStudio тоже самое, не находит %>%.( Error in env$pr %>% tail(., 500) %>% ggplot(aes(x = env$Data, y = env$Close)) :

  could not find function "%>%")
 
Konstantin Kopylov:

С выгрузкой все получилось. Спасибо!

А вот с графиком, что то не идет. Пишет ошибку. Хотя библиотеки подгружены.

     Rx(R,"library(magrittr)");

   Rx(R,"library(dplyr)");

    Rx(R,"library(xts)");

      Rx(R,"library(anytime)");

      Rx(R,"library(quantmod)");

      Rx(R,"library(TTR)");

      Rx(R,"library(ggplot2)");


Проверил в RStudio тоже самое, не находит %>%.( Error in env$pr %>% tail(., 500) %>% ggplot(aes(x = env$Data, y = env$Close)) :

В этом скрипте %>% не к месту. Попробуйте 

Rx(R,"env$pr %>% tail(., 500) -> tpr;

        ggplot(aes(x = tpr$Data, y = tpr$Close)) +

        geom_candlestick(aes(open = tpr$Open, high = tpr$High, low = tpr$Low, close = tpr$Close)) +

        labs(title = "EURJPY Candlestick Chart", y = "Close Price", x = "") + 

        theme_tq()");

Лучше все это написать в R а не в терминале. Не уверен, что такая комбинация сработает. Я давно так не пишу, поэтому нет мнения.

Удачи

 
Vladimir Perervenko:

В этом скрипте %>% не к месту. Попробуйте 


Не идет, ошибка и через MT4 и в RStudio:

> env$pr %>% tail(., 500) -> tpr
> 
> ggplot(aes(x = tpr$Data, y = tpr$Close)) +
+     
+     geom_candlestick(aes(open = tpr$Open, high = tpr$High, low = tpr$Low, close = tpr$Close)) +
+     
+     labs(title = "EURJPY Candlestick Chart", y = "Close Price", x = "") + 
+     
+     theme_tq()
Error: ggplot2 doesn't know how to deal with data of class uneval

Так вставлял в MQL Rx(R,"env$pr %>% tail(., 500) -> tpr"); Rx(R,"ggplot(aes(x = tpr$Data, y = tpr$Close)) + geom_candlestick(aes(open = tpr$Open, high = tpr$High, low = tpr$Low, close = tpr$Close)) + labs(title = 'EURUSD Candlestick Chart', y = 'Close Price', x = '') + theme_tq()");

 
Konstantin Kopylov:

Не идет, ошибка и через MT4 и в RStudio:

Что то улучшили в ggplot2. Сейчас проверю.
 

В ggplot2(v2.2.1) исчезло определение geom_candlestick (MRO 3.4.1). 

Я уже снес MRO 3.4.0 в котором делал все вычисления поэтому завтра найду решение и напишу.

У вас какая версия R ?

 
Vladimir Perervenko:

В ggplot2(v2.2.1) исчезло определение geom_candlestick (MRO 3.4.1). 

Я уже снес MRO 3.4.0 в котором делал все вычисления поэтому завтра найду решение и напишу.

У вас какая версия R ?

Спасибо!

Версия последняя "R version 3.4.2 (2017-09-28)"