Ошибки, баги, вопросы - страница 81

 
Urain:

вызов соответственно можно делать с указанием периода тогда возвращается значение указаного ТФ,

так и без указания соответственно значение будет с текущего

зы :о)

что б так било наверное нужно все же так?

double  Close(int i,ENUM_TIMEFRAMES tf=PERIOD_CURRENT){...
 
maryan.dirtyn:
int
вот тут прямо сверху имеется функция перевода туда Переход с MQL4 на MQL5 ну и по аналогии можно обратно...
 
maryan.dirtyn:
алилуя.. вот ето дело)) еще б Period() как то возвратить))
значение таймфрейма можно получить двумя способами с помощью предопределенной переменной
int _Period

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

и с помощью функции

Period

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

ENUM_TIMEFRAMES  Period();
 

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

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

что б так било наверное нужно все же так?

Нет тогда перегрузка работать не будет, не сможешь откомпилить. У меня в коде правильно и вызов в следующем посте тоже верный.
 
Urain:
вот тут прямо сверху имеется функция перевода туда Переход с MQL4 на MQL5 ну и по аналогии можно обратно...

Для того, чтобы узнать количество минут заданного периода графика, нужно значение функции PeriodSeconds разделить на 60.  ссилка видает ошибку 404 :) попробую сам:

int PeriodMQL4()
  { switch(Period())
     {
      case PERIOD_CURRENT: return(0);
      case PERIOD_M1:     return(1);
      case PERIOD_M5:     return(5);
      case PERIOD_M15:    return(12);
      case PERIOD_M30:    return(30);
      case PERIOD_H1:     return(60);
      case PERIOD_H4:     return(240);
      case PERIOD_D1:     return(1440);
      case PERIOD_W1:     return(10080);
      case PERIOD_MN1:    return(43200);      
      default: return(0);
     }
  }

 так сойдет?  не сойдет ))) столько ошибок что аж страшно) 

 
Urain:
Нет тогда перегрузка работать не будет, не сможешь откомпилить. У меня в коде правильно и вызов в следующем посте тоже верный.
при вставке функции без явного обозначения таймфрейма, тоесть просто Close(0) ... не компилит), приходиться задавать вручную Close(0,PERIOD_CURRENT) .. но ето пустяки )
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
maryan.dirtyn:
int

АААА вспомнил есть проще , только потом нужно на 60 разделить чтоб минуты получить.  

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

int  PeriodSeconds(ENUM_TIMEFRAMES  period=PERIOD_CURRENT ); // период графика



int Per=PeriodSeconds(PERIOD_D1)/60;
Print("Period=",Per);
 
Urain:

АААА вспомнил есть проще , только потом нужно на 60 разделить чтоб минуты получить.

о спасибо)) да прибудет с тобой сила)
 

Немного для работы с периодами как в MQL4

//Fumction MinuteToPeriod
ENUM_TIMEFRAMES MinuteToPeriod(int Value)
//Преобразовывает число сикунд в период, возвращаемый как ENUM_TIMEFRAMES
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
ENUM_TIMEFRAMES Result;
//----------------------------------------------------------------------------//
  switch(Value)
  {
  //Перирд текущещего графика
  case   0: return(PERIOD_CURRENT); break;
  //Минуты
  case   1: return(PERIOD_M1);  break;   //1 минута
  case   2: return(PERIOD_M2);  break;   //2 минуты
  case   3: return(PERIOD_M3);  break;   //3 минуты
  case   4: return(PERIOD_M4);  break;   //4 минуты
  case   5: return(PERIOD_M5);  break;   //5 минуты
  case   6: return(PERIOD_M6);  break;   //6 минуты
  case  10: return(PERIOD_M10); break;   //10 минуты
  case  12: return(PERIOD_M12); break;   //12 минуты
  case  15: return(PERIOD_M15); break;   //15 минуты
  case  20: return(PERIOD_M20); break;   //20 минуты
  case  30: return(PERIOD_M30); break;   //30 минуты
  //Часы
  case  60: return(PERIOD_H1); break;    //60 минут  - 1 час
  case 120: return(PERIOD_H2); break;    //120 минут - 2 часа  
  case 180: return(PERIOD_H3); break;    //180 минут - 3 часа
  case 240: return(PERIOD_H4); break;    //240 минут - 4 часа
  case 360: return(PERIOD_H6); break;    //360 минут - 6 часов
  case 480: return(PERIOD_H8); break;    //480 минут - 8 часов
  case 720: return(PERIOD_H12); break;   //720 минут - 12 часов
  //Старшие ТФ
  case 1440: return(PERIOD_D1); break;   //1 день
  case 10080: return(PERIOD_W1); break;  //1 неделя 
  case 43200: return(PERIOD_MN1); break; //1 месяц 
  //Default
  default: return(PERIOD_CURRENT);
  }
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}

//Fumction PeriodToMinute
int PeriodToMinute(ENUM_TIMEFRAMES Value)
//Возвращает число секунд в периоде
{
//----------------------------------------------------------------------------//
//Work variables / Служебные переменные
int Result;
//----------------------------------------------------------------------------//
Result = PeriodSeconds(Value)/60;
//----------------------------------------------------------------------------//
return(Result);
//----------------------------------------------------------------------------//
}
 

Ставлю тестирование с 2010.01.01 по today. Вывожу даду самого первого бара 2009.01.02.

Как сделать, чтобы первый доступный бар был например 2006.01.02? 

Причина обращения: