[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 244

 
Добрый всем день. У меня такой вопрос: хочу сделать так, чтобы советник запрашивал данные с других валютных пар и таймфреймов. Для этого приходится держать открытыми несколько десятков графиков (хотя советник установлен только на одном графике). Все это "съедает" много памяти и сильно тормозит работу VPS (даже если в настройках уменьшить кол-во баров в истории/окне). Можно ли каким-либо образом обойтись без открытия множества графиков, но чтобы при этом нужные таймсерии продолжали существовать? Заранее благодарен за ответ.
 
AndEv:
Добрый всем день. У меня такой вопрос: хочу сделать так, чтобы советник запрашивал данные с других валютных пар и таймфреймов. Для этого приходится держать открытыми несколько десятков графиков (хотя советник установлен только на одном графике). Все это "съедает" много памяти и сильно тормозит работу VPS (даже если в настройках уменьшить кол-во баров в истории/окне). Можно ли каким-либо образом обойтись без открытия множества графиков, но чтобы при этом нужные таймсерии продолжали существовать? Заранее благодарен за ответ.

Что конкретно вам надо с других валют? Напр. в индикаторах можно указывать любые валюты и таймфреймы и так способом получать данные.

double iMA(NULL, 0, ...) // по символу и таймфрейму текущего графика
double iMA("AUDUSD", PERIOD_W1, ...) // по AUDUSD и по недельному таймфрейму

и не надо держать открытым график AUDUSD, W1.

 
paladin80:

Что конкретно вам надо с других валют? Напр. в индикаторах можно указывать любые валюты и таймфреймы и так способом получать данные.

и не надо держать открытым график AUDUSD, W1.

Любой индикатор производит свои вычисления на основе таймсерии (в вашем примере "AUDUSD", PERIOD_W1), а таймсерия не существует без графика. Вопрос в том, можно ли как-то обойти это. В МТ4 много чего было нельзя сделать, но грамотные люди (Zhunko, например) многое сделали возможным. Я пробовал получить данные, так, как вы говорите, но не получилось, хотя пара присутствовала в окне "Обзор рынка". После открытия соответствующего графика сразу же удалось получить необходимые данные.
 
AndEv:
Любой индикатор производит свои вычисления на основе таймсерии (в вашем примере "AUDUSD", PERIOD_W1), а таймсерия не существует без графика. Вопрос в том, можно ли как-то обойти это. В МТ4 много чего было нельзя сделать, но грамотные люди (Zhunko, например) многое сделали возможным. Я пробовал получить данные, так, как вы говорите, но не получилось, хотя пара присутствовала в окне "Обзор рынка". После открытия соответствующего графика сразу же удалось получить необходимые данные.

Таймсерия существует без графика, если инструмент конечно открыт и есть постоянное обращение к этому таймфрейму.  В таком случае график совсем не нужен
 
AndEv:
Любой индикатор производит свои вычисления на основе таймсерии (в вашем примере "AUDUSD", PERIOD_W1), а таймсерия не существует без графика. Вопрос в том, можно ли как-то обойти это. В МТ4 много чего было нельзя сделать, но грамотные люди (Zhunko, например) многое сделали возможным. Я пробовал получить данные, так, как вы говорите, но не получилось, хотя пара присутствовала в окне "Обзор рынка". После открытия соответствующего графика сразу же удалось получить необходимые данные.
Сделал такой вот код:

double MA_AUDUSD_M5, MA_AUDUSD_W1, MA_EURCAD_H1;
//+------------------------------------------------------------------+
int start()
  {
//----
MA_AUDUSD_M5=iMA("AUDUSD",PERIOD_M5,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_AUDUSD_W1=iMA("AUDUSD",PERIOD_W1,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_EURCAD_H1=iMA("EURCAD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0);

Comment ("MA_AUDUSD_M5 = ",DoubleToStr(MA_AUDUSD_M5,Digits),"\n",
         "MA_AUDUSD_W1 = ",DoubleToStr(MA_AUDUSD_W1,Digits),"\n",
         "MA_EURCAD_H1 = ",DoubleToStr(MA_EURCAD_H1,Digits));
//----
   return(0);
  }
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

При тестировании с визуализацией на EURUSD, Daily получается такое:


По EURCAD действительно что-то было не то. Вспомнил, что по этому инструменту не работаю и возможно нет истории по нему, скачал (F2 и т.д.), перезапустил терминал и вот что получилось:


По EURCAD есть данные. Может на VPS надо сказать истории по трубуемым инструментам.

 
AndEv:
Любой индикатор производит свои вычисления на основе таймсерии (в вашем примере "AUDUSD", PERIOD_W1), а таймсерия не существует без графика. Вопрос в том, можно ли как-то обойти это. В МТ4 много чего было нельзя сделать, но грамотные люди (Zhunko, например) многое сделали возможным. Я пробовал получить данные, так, как вы говорите, но не получилось, хотя пара присутствовала в окне "Обзор рынка". После открытия соответствующего графика сразу же удалось получить необходимые данные.

  превентивно запрашивайте данные по нужному инструменту, они строятся и без графика, но на это нужно время.
 
FAQ:

  превентивно запрашивайте данные по нужному инструменту, они строятся и без графика, но на это нужно время.
Вот в этом то все и дело, что при повторном запросе данные можно получить. А как сделать так, чтобы с первого раза?
 
hoz:

 А вот, собственно, и сам индюк.

 https://www.mql5.com/ru/code

Мне вообще сам индюк не интересен, как торговый сигнал. Но я заметил интересное название, и решил посмотреть его "внутренности". Вот и наткнулся..

Решил привести вид этого идюка к "привычному" (да простит меня автор). Что получилось (в файле).
Файлы:
ssl.mq4  4 kb
 
AndEv:
Вот в этом то все и дело, что при повторном запросе данные можно получить. А как сделать так, чтобы с первого раза?

А ошибки пробовали обрабатывать
 
paladin80:

Может на VPS надо сказать истории по трубуемым инструментам.

Скачивание истории ничего не даст, т.к. при запросе нужны все время свежие данные. Я тоже делал такой скрипт, а потом перенес код в сов., для того, чтобы запуск осуществлялся от поступающего тика. В динамике без открытия графика приходится дважды делать запрос, только в этом случае можно получить свежие данные. А как сделать без повторного запроса, не знаю.
Причина обращения: