Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 607

 
new-rena:

No hay problema. He lanzado el algoritmo. El principio sólo sin el gráfico, es decir, así:

НомерДНЯвМесяце=str.day;
necesitas el número de la semana del mes :)
 
pako:
Necesito el número de la semana del mes :)

No puedo hacerlo en el 5 y no es habitual aquí en el 4.

Si me lo permiten, escribiré el código y lo publicaré.

 
pako:
¿qué diferencia hay entre 4 o 5?, el tiempo es el mismo :)))
Paco, yo no sé hacer 5 y ya no le veo sentido :)
 
new-rena:
Paco, no sé escribir en el 5 y ya no le veo sentido:)
Escribe en 4.
 
pako:
Escriba en el 4

Probablemente no sea la correcta. Esto es el principio, las críticas son bienvenidas, haremos lo que se nos pida.

Ponga el EA en el probador, active el modo visual, seleccione TF D1 y observe las impresiones en el registro.

//+------------------------------------------------------------------+
//|                                                  WeekOfMonth.mq4 |
//|                                                         new-rena |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "new-rena"
#property link      ""
#property version   "1.00"
#property strict
//--------------------------
double DayOfMonth,WeekOfMonth;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---
//--- init
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//--- deinit
      return(0);   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
      DayOfMonth=TimeDay(TimeLocal());
      Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));
      WeekOfMonth=MathCeil(DayOfMonth/7);
      Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));
      
//--- start
      return(0);   
  }
//+------------------------------------------------------------------+
 
new-rena:

Probablemente no sea la correcta. Esto es el principio, las críticas son bienvenidas, haremos lo que se nos pida.

Iniciemos el EA en el probador, activemos el modo visual, seleccionemos el TF D1 y observemos las impresiones en el registro.

//+------------------------------------------------------------------+
//|                                                  WeekOfMonth.mq4 |
//|                                                         new-rena |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "new-rena"
#property link      ""
#property version   "1.00"
#property strict
//--------------------------
double DayOfMonth,WeekOfMonth;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---
//--- init
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//--- deinit
      return(0);   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
      DayOfMonth=TimeDay(TimeLocal());
      Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));
      WeekOfMonth=MathCeil(DayOfMonth/7);
      Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));
      
//--- start
      return(0);   
  }
//+------------------------------------------------------------------+

no se muestra correctamente

Está mostrando la semana 3 y hoy es la semana 4, 22.08.2016

 
pako:
En Excel, la semana=1+INT((A1-FECHA(AÑO(A1+4-DÍA DE LA SEMANA(A1+6));1;5)+DÍA DE LA SEMANA(FECHA(AÑO(A1+4-DÍA DE LA SEMANA(A1+6));1;3))/7)

//+------------------------------------------------------------------+ //|                                                  WeekOfMonth.mq4 | //|                                                         new-rena | //|                                                                  | //+------------------------------------------------------------------+ #property copyright "new-rena" #property link      "" #property version   "1.00" #property strict //-------------------------- double DayOfMonth,WeekOfMonth; int DayOfWeeks,MonthOfYear,PrevMonth,Delta=0,Show=0; //+------------------------------------------------------------------+ //| Expert initialization function                                   | //+------------------------------------------------------------------+ int init()   { //--- PrevMonth=TimeMonth(TimeLocal()); DayOfMonth=TimeDay(TimeLocal()); if(DayOfMonth==1)    {       Delta=TimeDayOfWeek(TimeLocal());       Show=1;    } //--- init    return(0);   } //+------------------------------------------------------------------+ //| Expert deinitialization function                                 | //+------------------------------------------------------------------+ int deinit()   { //--- deinit       return(0);     } //+------------------------------------------------------------------+ //| Expert tick function                                             | //+------------------------------------------------------------------+ int start()   { //---   MonthOfYear=TimeMonth(TimeLocal()); DayOfMonth=TimeDay(TimeLocal()); DayOfWeeks=TimeDayOfWeek(TimeLocal()); if(PrevMonth!=MonthOfYear && DayOfMonth==1)    {       Delta=DayOfWeeks;       Show=1;    } if(Show==1)    {       WeekOfMonth=MathCeil((DayOfMonth+Delta)/7);             Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));       Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));    }

PrevMonth=MonthOfYear; //--- start       return(0);     } //+------------------------------------------------------------------+

 

También habría que poner cuando el día 1 del mes cae en fin de semana, ya que el probador no gira los fines de semana... No vi lo del excel.

Bueno, y para rodar en la inicialización de un par de meses atrás Y para el mes actual no estaría de más, a fin de no esperar a que el final del cálculo del número de la semana un mes entero. Pero todo esto son matices ....

Eso es lo que hace que MQL4 sea tan atractivo: ¡el código es corto y claro!

 
new-rena:

También habría que poner cuando el día 1 del mes cae en fin de semana, ya que el probador no gira los fines de semana... No vi lo del excel.

Bueno, y para rodar en la inicialización de un par de meses atrás Y para el mes actual no estaría de más, a fin de no esperar a que el final del cálculo del número de la semana un mes entero. Pero todo esto son matices ....

Eso es lo que hace que MQL4 sea tan atractivo: ¡el código es corto y claro!

No calcula correctamente
 
pako:
No cuenta correctamente
De acuerdo. ¿En qué momento? ¿A fin de mes? He comprobado el calendario...
Razón de la queja: