Publi
|
Hola Roge1025,
Para hacer lo que deseas, en MQL hay una función que nos ayuda a convertir una cadena en fecha, por lo tanto solo es cuestión de fabricar la cadena con la fecha que necesites y convertirla a tipo datetime.
Te pongo un ejemplo de una pequeña función que he escrito para este post:
En esta función básicamente le pasamos como parámetros la fecha a cambiar y el número de meses que quieres aumentar la fecha.
datetime Cambio_de_mes(datetime fecha_a_cambiar, int meses_a_sumar)
{
if(meses_a_sumar>12)return(0); // no permitimos sumar más de 12 meses, si quieres sumar más hay que controlar el aumento de años
int year=TimeYear(fecha_a_cambiar); // extraemos el año de la fecha
int month=TimeMonth(fecha_a_cambiar); // extraemos el mes de la fecha
int day=TimeDay(fecha_a_cambiar); // extraemos el día de la fecha
month=month+meses_a_sumar; // sumamos al mes actual el número de meses que hemos pasado a la función
if(month>12){month=month-12;year++;} // controla si tenemos que aumentar el año de la nueva fecha
if(day>30 && month!=11 && month!=4 && month!=6 && month!=9)day=30; // controla los meses de 30 días si el día de la fecha es 31
if(day==29 && month==2) // control de año bisiesto para posible fecha 29/02
{
if(MathMod(year,2)==0 && MathMod((year/2),3)==0 && MathMod(((year/2)/3),4)==0)day=28;
}
//construimos la nueva fecha mediante la formación de una cadena de texto y luego convirtiendo dicha cadena a valor datetime. Finalmente retornamos el valor a la llamada de la función
return(StrToTime(DoubleToStr(year,0)+"."+DoubleToS tr(month,0)+"."+DoubleToStr(TimeDay(fecha_a_cambia r),0)+" "+DoubleToStr(TimeHour(fecha_a_cambiar),0)+":"+Dou bleToStr(TimeMinute(fecha_a_cambiar),0)));
}
puedes llamar a la función de la siguiente forma:
datetime nueva_fecha=Cambio_de_mes(TimeCurrent(), 2);
donde TimeCurrent() es la fecha actual en tu broker, o la puedes sustituir por la fecha que desees (en formato datetime), y el número 2 es el número de meses que quieres aumentar la fecha (lo puedes sustituir por el valor que quieras).
El resultado obtenido es una fecha de tipo datetime con lo que la puedes asignar a una variable del mismo tipo para luego usarla como te apetezca.
Si lo necesitas puedes ampliar la función, para que te cambie el día, la hora, etc, pero siempre controlando que sea una fecha válida.
Salu2
Foro de Forex Trading United