![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Вы не описали как выгружали котировки в окружение env ("Поскольку мы загрузили векторы котировок в окружение env..) и как создавали его.
Пробую повторить все с самого начала в ручную со своими котировками, выгрузил их в векторы, но уперся вот в это окружение, которое вы создали. Не понимаю как его создать и повторить по Вашему образцу.
Помогите.
Сообщение пропало.
Вы как передаете котировки в Rterm? Читаете из файла или из терминала?
Сообщение пропало.
Вы как передаете котировки в 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(,) запускается и окно под график открывается. С параметрами ни в какую.
Более или менее разобрался сам. Вашу Часть 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()
Данные сразу попадают в отдельное окружение env. И дальше с ними работать через evalq().
С графиками попробуйте так:
Я не вывожу графики таким образом. Напишите как проверите.
Удачи
Добрый день.
Такая передача с терминала лишняя. Вы загружаете в глобальное окружение а затем переносите в окружение 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 "%>%")
С выгрузкой все получилось. Спасибо!
А вот с графиком, что то не идет. Пишет ошибку. Хотя библиотеки подгружены.
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)) :
В этом скрипте %>% не к месту. Попробуйте
Лучше все это написать в R а не в терминале. Не уверен, что такая комбинация сработает. Я давно так не пишу, поэтому нет мнения.
Удачи
В этом скрипте %>% не к месту. Попробуйте
Не идет, ошибка и через 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()");
Не идет, ошибка и через MT4 и в RStudio:
В ggplot2(v2.2.1) исчезло определение geom_candlestick (MRO 3.4.1).
Я уже снес MRO 3.4.0 в котором делал все вычисления поэтому завтра найду решение и напишу.
У вас какая версия R ?
В ggplot2(v2.2.1) исчезло определение geom_candlestick (MRO 3.4.1).
Я уже снес MRO 3.4.0 в котором делал все вычисления поэтому завтра найду решение и напишу.
У вас какая версия R ?
Спасибо!
Версия последняя "R version 3.4.2 (2017-09-28)"