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

 
User_mt5 #:

Объясните, пожалуйста..

В библии написано:  В переменной _Period хранится значение таймфрейма текущего графика.

Фактические значения _Period для ТФ:

М1 = 1

М5 = 5

М15 = 15

М30 = 30

H1 = 16385

H4 = 16388

H6 = 16390

Объясните, пожалуйста, числа 60, 120 и т.д. что.. уже не в моде?

Если знаете, хотя бы намекните в чём тут фишка? 

И теперь я боюсь спросить.. а в каких местах нашего загадочного MQL ещё есть подобные фишки? :(

вот тут есть периоды https://www.mql5.com/ru/docs/constants/chartconstants/enum_timeframes

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вместо цифр - пропишите периоды 

Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Периоды графиков - Константы графиков - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
User_mt5 #:

Объясните, пожалуйста..

В библии написано:  В переменной _Period хранится значение таймфрейма текущего графика.

Фактические значения _Period для ТФ:

М1 = 1

М5 = 5

М15 = 15

М30 = 30

H1 = 16385

H4 = 16388

H6 = 16390

Объясните, пожалуйста, числа 60, 120 и т.д. что.. уже не в моде?

Если знаете, хотя бы намекните в чём тут фишка? 

И теперь я боюсь спросить.. а в каких местах нашего загадочного MQL ещё есть подобные фишки? :(

Справку нужно читать полностью:

Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMESКлючевое здесь - "...  перечисления ENUM_TIMEFRAMES."

И Вам НУЖНО использовать ЭЛЕМЕНТЫ перечисления. Например PERIOD_H1, PERIOD_M15 ... А то, какое внутренне значение имеет элемент перечисления Вам вообще не нужно знать. 

Документация по MQL5: Предопределенные переменные / _Period
Документация по MQL5: Предопределенные переменные / _Period
  • www.mql5.com
_Period - Предопределенные переменные - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
User_mt5 #:

Объясните, пожалуйста..

В библии написано:  В переменной _Period хранится значение таймфрейма текущего графика.

Фактические значения _Period для ТФ:

М1 = 1

М5 = 5

М15 = 15

М30 = 30

H1 = 16385

H4 = 16388

H6 = 16390

Объясните, пожалуйста, числа 60, 120 и т.д. что.. уже не в моде?

Если знаете, хотя бы намекните в чём тут фишка? 

И теперь я боюсь спросить.. а в каких местах нашего загадочного MQL ещё есть подобные фишки? :(

Вы как их получили? 

 
SanAlex #:

вот тут есть периоды https://www.mql5.com/ru/docs/constants/chartconstants/enum_timeframes

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

вместо цифр - пропишите периоды 

Спасибо за совет.

Если особенность известна, то учитывать её не сложно. Я использую PeriodSeconds();

Беда в том, что заранее не известно откуда ждать эти.. особенности.

 
Vladimir Karputov #:

Справку нужно читать полностью:

Содержимое переменной _Period, в которой хранится значение таймфрейма текущего графика. Значение может быть одним из значений перечисления ENUM_TIMEFRAMESКлючевое здесь - "...  перечисления ENUM_TIMEFRAMES."

И Вам НУЖНО использовать ЭЛЕМЕНТЫ перечисления. Например PERIOD_H1, PERIOD_M15 ... А то, какое внутренне значение имеет элемент перечисления Вам вообще не нужно знать. 

Спасибо за Ваше участие.

Но тут беда такая: я читать-то не умею:(

И вообще, я не жду, что мне укажут что я должен делать. Я надеялся получить ответ на свой дурацкий вопрос.

 
Сергей Таболин #:

Вы как их получили? 

Print("_Period = ", _Period );
 
User_mt5 #:

Ну вот. Вы получаете значение перечисления.

User_mt5 #:

...

Если особенность известна, то учитывать её не сложно. Я использую PeriodSeconds();

...

Если бы использовали - то и вопрос бы не возник.

 
User_mt5 #:

Объясните, пожалуйста..

В библии написано:  В переменной _Period хранится значение таймфрейма текущего графика.

Фактические значения _Period для ТФ:

М1 = 1

М5 = 5

М15 = 15

М30 = 30

H1 = 16385

H4 = 16388

H6 = 16390

Объясните, пожалуйста, числа 60, 120 и т.д. что.. уже не в моде?

Если знаете, хотя бы намекните в чём тут фишка? 

И теперь я боюсь спросить.. а в каких местах нашего загадочного MQL ещё есть подобные фишки? :(

Источник:

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

Скрытый смысл таймфреймов в MQL5

Serhii Shevchuk, 2017.02.27 01:53

Да, но это медленно работает. Для сравнения набросал небольшой скрипт:

#property script_show_inputs

input long              InpCycles=1000000000;

ENUM_TIMEFRAMES TF_list[32]={
PERIOD_MN1, PERIOD_W1,  PERIOD_D1,  PERIOD_H12,
PERIOD_H8,  PERIOD_H6,  PERIOD_H4,  PERIOD_H3,  
PERIOD_H2,  PERIOD_H1,  PERIOD_M30, PERIOD_M20,
PERIOD_M15, PERIOD_M12, PERIOD_M10, PERIOD_M6,  
PERIOD_M5,  PERIOD_M4,  PERIOD_M3,  PERIOD_M2,  
PERIOD_M1,  PERIOD_MN1, PERIOD_W1,  PERIOD_D1,
PERIOD_M5,  PERIOD_M4,  PERIOD_M3,  PERIOD_M2,
PERIOD_H2,  PERIOD_H1,  PERIOD_M30, PERIOD_M20
};

int PeriodMinutes(ENUM_TIMEFRAMES tf)
{
      uint t = uint(tf);
      uint f = 0xc000&t;
      uint min = 0x00FF&t;
      if(f==0x4000) min*= 60;
      else if(f==0x8000) min*= 10080;
      else if(f==0xc000)  min*= 43200;
      return(int(min));  
}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   ulong tmp = 0;
   //
   uint idx = 0;
   ulong t0 = GetMicrosecondCount();
   for(long i=0;i<InpCycles;i++)
      tmp+= PeriodMinutes(TF_list[0x1f&(idx++)]);  
   ulong t1 = GetMicrosecondCount();
   Print("1) tmp = ",tmp,"... dT = ",t1-t0);
//---
   tmp = 0;
   idx = 0;
   t0 = GetMicrosecondCount();
   for(long i=0;i<InpCycles;i++)
      tmp+= PeriodSeconds(TF_list[0x1f&(idx++)])/60;
   t1 = GetMicrosecondCount();
   Print("2) tmp = ",tmp,"... dT = ",t1-t0);
//---
  }    
//+------------------------------------------------------------------+
Как видно, примерно вдвое медленнее, чем на if-ах:



и

 
Сергей Таболин #:

Ну вот. Вы получаете значение перечисления.

Если бы использовали - то и вопрос бы не возник.

Я не согласен.

Полагаю, это не оправдание и не объяснение даже.

Общая логика предопределённых переменных состоит в том, что к ним можно обратиться напрямую, и они отдают свои значения.

Так можно обращаться, например, к _Point, _Digits и т.п. И это - нормально.

Интуитивно ожидается, что и все другие предопределённые переменные обладают подобными свойствами.

Но в случае с _Period это не так.

--

Ещё раз всем спасибо. Будем считать, что вопрос снят.
Всем хороших выходных!)

 
Fast235 #:

для чего шифратор встроен в mql? не могу найти ему разумное применение

от самого себя нет смысла шифровать, а для второго пользователя видится только глобальные переменные терминалы

Сохранять на диск своё состояние, обмениваться данными через инет.