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

 
Alexander Mikryukov:

Друзья, подскажите новичку, что не так. Хочу найти бары соответствующее определенному времени, ниже код,но не работает. 

А вы, простите не хочу обидеть, количество кривых скобок не считали?

 
Alexey Viktorov:

А вы, простите не хочу обидеть, количество кривых скобок не считали?

Это я так скопировал, компилятор не ругается. 

 Задача стояла на промежутке времени выбрать все бары определенного часа, а в последующем считать параметры этого бара. Поэтому и решил освоить работу данной функции. MQL5 только начинаю осваивать, поэтому и возникают возможно глупые вопросы.


Всем спасибо разобрался, все заработало.

 
Господа помогите разобраться. Пишу индикатор рисующий мах и мин предыдущего дня. Как исключить из прорисовки субботу и воскресенье?
 
Alexander Mikryukov:
Господа помогите разобраться. Пишу индикатор рисующий мах и мин предыдущего дня. Как исключить из прорисовки субботу и воскресенье?

В выходные тиков нет - значит и никаких действий индикатор не совершит. А если ничего не совершит, значит ничего не нарисует :)

 
Alexander Mikryukov:
Господа помогите разобраться. Пишу индикатор рисующий мах и мин предыдущего дня. Как исключить из прорисовки субботу и воскресенье?

Сначала покажите как вы их получаете, эти мах и мин.

 
В MQL4 есть функция
Month()
как узнать месяц в MQL5?
 
Aliaksandr Yemialyanau:
В MQL4 есть функция как узнать месяц в MQL5?

MqlDateTime - структура для хранения даты.

TimeToStruct - передаёт время в структуру.

А теперь посмотрите на поля структуры:

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) 
  };
 
Vladimir Karputov:

MqlDateTime - структура для хранения даты.

TimeToStruct - передаёт время в структуру.

А теперь посмотрите на поля структуры:

Кроме этого есть

datetime  TimeCurrent(
   MqlDateTime&  dt_struct      // переменная типа структуры
   );
Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это –...
 

Имеется следующий код, который рисует на графике поле ввода с текстом "Take Profit" с выравниванием по центру:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   Edit();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   EditDel();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+ 
//| Создает объект "Поле ввода"                                      | 
//+------------------------------------------------------------------+ 
void EditCreate(ENUM_BASE_CORNER corner,string name,int x,int y,int width,int height,string text,
                int font_size,ENUM_ALIGN_MODE align,bool read_only,color back_clr)
  {
   long cid=ChartID();
   int subWind=0;
   string font="Consolas";
   color text_color=clrBlack;
   color border_clr=clrDimGray;
   bool back=false;
   bool selectable=false;
   bool selected=false;
   bool hidden=true;
   long zorder=0;
   if(ObjectFind(cid,name)==-1)
     {
      ObjectCreate(cid,name,OBJ_EDIT,subWind,0,0);
      ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(cid,name,OBJPROP_XSIZE,width);
      ObjectSetInteger(cid,name,OBJPROP_YSIZE,height);
      ObjectSetString(cid,name,OBJPROP_TEXT,text);
      ObjectSetString(cid,name,OBJPROP_FONT,font);
      ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,font_size);
      ObjectSetInteger(cid,name,OBJPROP_ALIGN,align);
      ObjectSetInteger(cid,name,OBJPROP_READONLY,read_only);
      ObjectSetInteger(cid,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(cid,name,OBJPROP_COLOR,text_color);
      ObjectSetInteger(cid,name,OBJPROP_BGCOLOR,back_clr);
      ObjectSetInteger(cid,name,OBJPROP_BORDER_COLOR,border_clr);
      ObjectSetInteger(cid,name,OBJPROP_BACK,back);
      ObjectSetInteger(cid,name,OBJPROP_SELECTABLE,selectable);
      ObjectSetInteger(cid,name,OBJPROP_SELECTED,selected);
      ObjectSetInteger(cid,name,OBJPROP_HIDDEN,hidden);
      ObjectSetInteger(cid,name,OBJPROP_ZORDER,zorder);
      ChartRedraw(cid);
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Edit()
  {
   long cid=ChartID();
   if(ObjectFind(cid,"edit tp")<0)
     {
      EditCreate(CORNER_LEFT_UPPER,"edit tp",50,50,150,20,"Take Profit",12,ALIGN_CENTER,true,clrBeige);
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void EditDel()
  {
   long cid=ChartID();
   ObjectDelete(cid,"edit tp");
  }
//+------------------------------------------------------------------+

При запуске в режиме реального времени работает корректно:

А в тестере стратегий выравнивание почему-то происходит по левому краю.


В МТ4 код работает корректно как в реалтайме, так и в тестере. Такие фокусы наблюдаю только в МТ5...

В чём может быть дело?

 
Oleg Remizov:

Имеется следующий код, который рисует на графике поле ввода с текстом "Take Profit" с выравниванием по центру:

При запуске в режиме реального времени работает корректно:

А в тестере стратегий выравнивание почему-то происходит по левому краю.


В МТ4 код работает корректно как в реалтайме, так и в тестере. Такие фокусы наблюдаю только в МТ5...

В чём может быть дело?

В тестере МТ5, уже много раз на форуме об этом говорили.