Errores, fallos, preguntas - página 81

 
Urain:

La llamada puede realizarse especificando el periodo, entonces se devolverá el valor del TF especificado,

o sin indicación del periodo, se devolverá el valor del actual

(r) :o)

Supongo que esta es la forma de hacerlo, ¿no?

double  Close(int i,ENUM_TIMEFRAMES tf=PERIOD_CURRENT){...
 
maryan.dirtyn:
int
aquí mismo en la parte superior hay una función para transferir de MQL4 a MQL5 y se puede transferir de nuevo...
 
maryan.dirtyn:
aleluya... eso sí que es un trato))))))
El valor del marco temporal puede obtenerse de dos maneras utilizando una variable predefinida
int _Period

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

y con la función

Period

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

ENUM_TIMEFRAMES  Period();
 

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

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

para que funcione así, debe seguir siendo así, ¿no?

No, entonces la sobrecarga no funcionará, no podrás compilar. Mi código es correcto y la llamada en el siguiente post también es correcta.
 
Urain:
Puedes pasar de MQL4 a MQL5 y viceversa...

Para averiguar el número de minutos de un periodo determinado del gráfico, divida el valor de la funciónPeriodSeconds entre 60. Este enlace muestra un error 404 :) Lo probaré yo mismo:

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);
     }
  }

¿Servirá esto? no lo hará))) tantos errores que da miedo)

 
Urain:
No, entonces la sobrecarga no funcionará, no podrá compilar. Mi código es correcto y la llamada en el siguiente post también es correcta.
Cuando se inserta una función sin designación explícita del plazo, es decir, sólo Close(0) ... no compila), tengo que poner manualmente Close(0,PERIOD_CURRENT) ... pero no es nada )
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
maryan.dirtyn:
int

Ahhhh recuerdo que es más sencillo, pero luego hay que dividirlo entre 60 para obtener los minutos.

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

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



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

Ahhhh recuerdo que es más sencillo, pero luego hay que dividir por 60 para obtener los minutos.

Oh, gracias)) Que la fuerza te acompañe)
 

Un poco para trabajar con períodos como en 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);
//----------------------------------------------------------------------------//
}
 

Estoy poniendo una prueba desde 2010.01.01 hasta hoy. He sacado la fecha de la primera barra 2009.01.02.

¿Cómo puedo hacer que la primera barra disponible sea, por ejemplo, 2006.01.02?