Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 539

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

comp, 2016.03.23 09:49

Как узнать период чарта по ChartID? ChartGetInteger этого сделать не позволяет в одно действие.

Пока придумал костыльное решение через сохранение шаблона и парсинг в нем периода.

Как нормально узнать? 

 

Используйте  ChartPeriod

ChartPeriod

Возвращает значение периода указанного графика.

ENUM_TIMEFRAMES  ChartPeriod( 
   long  chart_id=0      // идентификатор графика 
   );

Параметры

chart_id=0

[in]  Идентификатор графика. 0 означает текущий график.

Возвращаемое значение

Значение типа ENUM_TIMEFRAMES. Если графика не существует, то возвращается 0. 

 
Karputov Vladimir:

Используйте  ChartPeriod

Спасибо.
 

Добрый день!

Как можно определить состояние панели торговли в один клик (развернута или свернута)?

 
 Скажите как в этой ветке для начинающих искать вопросы на нужную тему. Ветка разрослась в огромный пласт вопросов и ответов и так в ручную искать уже не возможно. Задавать вопрос уже колеблешься, может здесь на него уже давно отвечали, а в поиске происходит поиск по всему сайту, а не по именно этому отделу "для начинающих" ?
 
Alexander:
 Скажите как в этой ветке для начинающих искать вопросы на нужную тему. Ветка разрослась в огромный пласт вопросов и ответов и так в ручную искать уже не возможно. Задавать вопрос уже колеблешься, может здесь на него уже давно отвечали, а в поиске происходит поиск по всему сайту, а не по именно этому отделу "для начинающих" ?

Вводите в поиске гугля: искомое site:https://www.mql5.com/ru/forum/6343

"Искомое" - это то, что ищете. 

 
Вопрос по языку мкл4 - Почему при оптимизации не работает функция "создание объекта", ведь при использовании объекта для хранения данных нескольких переменных он оказывается раз в 20 быстрее чем при использовании функции опенфайл->файлрид->файлрайт->файлклоз, который очень сильно тормозит оптимизацию и тестирование?
 

Доброго времени суток!

Не могу понять как обработать бары за два часа, скажем, с 15 до 17 часов серверного времени, за последние 250 торговых сессий.

Подскажите концептуально, пожалуйста.

mql5 

 
Stairway_2_7:

Доброго времени суток!

Не могу понять как обработать бары за два часа, скажем, с 15 до 17 часов серверного времени, за последние 250 торговых сессий.

Подскажите концептуально, пожалуйста.

mql5 

используйте функции с запросом по времени

int  CopyOpen( 
   string           symbol_name,     // имя символа 
   ENUM_TIMEFRAMES  timeframe,       // период 
   datetime         start_time,      // с какой даты 
   datetime         stop_time,       // по какую дату 
   double           open_array[]     // массив для копирования цен открытия 
   );
 

Sergey,

спасибо за ответ!

 

Для моей задачи удобнее

 

void OnStart()

  {

 datetime start   =StringToTime("2016.03.25 15:00");

 datetime stop    =StringToTime("2016.03.25 15:55");

 MqlRates rates[];

 ArraySetAsSeries(rates,true);   

 int copied=CopyRates(_Symbol,PERIOD_M5,start,stop,rates);

  if(copied>0)

 {

 Print("Скопировано баров: "+copied);

 string format="open = %G, high = %G, low = %G, close = %G, volume = %d";

 string out;

 int size=fmin(copied,10);

 for(int i=0;i<size;i++)

 {

 out=i+":"+TimeToString(rates[i].time);

 out=out+" "+StringFormat(format,

 rates[i].open,

 rates[i].high,

 rates[i].low,

 rates[i].close,

 rates[i].tick_volume);

 Print(out);

 }

 }

 else Print("Не удалось получить исторические данные по символу ",Symbol());  

  }

 

Как бы теперь убрать субботы и воскресенья? 

Точнее, сделать подобную операцию за последние, скажем 250 торговых дней? 

 
Stairway_2_7:

Sergey,

спасибо за ответ!

 

Для моей задачи удобнее

 

void OnStart()

  {

 datetime start   =StringToTime("2016.03.25 15:00");

 datetime stop    =StringToTime("2016.03.25 15:55");

 MqlRates rates[];

 ArraySetAsSeries(rates,true);   

 int copied=CopyRates(_Symbol,PERIOD_M5,start,stop,rates);

  if(copied>0)

 {

 Print("Скопировано баров: "+copied);

 string format="open = %G, high = %G, low = %G, close = %G, volume = %d";

 string out;

 int size=fmin(copied,10);

 for(int i=0;i<size;i++)

 {

 out=i+":"+TimeToString(rates[i].time);

 out=out+" "+StringFormat(format,

 rates[i].open,

 rates[i].high,

 rates[i].low,

 rates[i].close,

 rates[i].tick_volume);

 Print(out);

 }

 }

 else Print("Не удалось получить исторические данные по символу ",Symbol());  

  }

 

Как бы теперь убрать субботы и воскресенья? 

Точнее, сделать подобную операцию за последние, скажем 250 торговых дней? 

Попробуйте поработать с этой структурой

struct MqlDateTime 
  { 
   int year;           // год 
   int mon;            // месяц 
   int day;            // день 
   int hour;           // час 
   int min;            // минуты 
   int sec;            // секунды 
   int day_of_week;    // день недели (0-воскресенье, 1-понедельник, ... ,6-суббота) 
   int day_of_year;    // порядковый номер в году (1 января имеет номер 0) 
  };
Причина обращения: