Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 607

 
new-rena:

Não há problema. Apliquei o algoritmo. O início apenas sem um gráfico, isto é, sem um gráfico, ou seja, assim:

НомерДНЯвМесяце=str.day;
precisa do número da semana do mês :)
 
pako:
Preciso do número da semana do mês :)

Não o posso fazer no 5 e não é habitual aqui no 4.

Se me for permitido, escreverei o código e afixá-lo-ei.

 
pako:
que diferença faz 4 ou 5 ???, o tempo é o mesmo :)))
Paco, não sei como fazer 5 e já não vejo qual é o objectivo :)
 
new-rena:
Paco, não sei como escrever no 5 e já não vejo a questão:)
Escrever em 4.
 
pako:
Escreva em 4

Provavelmente, não é a correcta. Este é o início, as críticas são bem-vindas, faremos o que for necessário.

Colocar o EA no testador, ligar o modo visual, seleccionar TF D1, e observar as impressões no registo.

//+------------------------------------------------------------------+
//|                                                  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:

Provavelmente, não é a correcta. Este é o início, as críticas são bem-vindas, faremos o que for necessário.

Vamos iniciar a EA no testador, ligar o modo visual, seleccionar TF D1, e olhar para as impressões no registo.

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

não aparece correctamente

Está a mostrar a semana 3 e hoje é a semana 4, 22.08.2016

 
pako:
No Excel, a semana=1+INT((A1-DATE(ANO(A1+4-Semana(A1+6));1;5)+Semana(DATA(ANO(A1+4-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);     } //+------------------------------------------------------------------+

 

Também devemos colocar quando o 1º do mês cai num fim-de-semana, pois o testador não roda aos fins-de-semana... Não vi sobre a excelência.

Bem, e rolar na inicialização de há alguns meses E para o mês actual não faria mal, de modo a não esperar pelo fim do cálculo do número da semana de um mês inteiro. Mas todas estas são nuances ....

É isso que torna a MQL4 tão atraente - o código é curto e claro!

 
new-rena:

Também devemos colocar quando o 1º do mês cai num fim-de-semana, pois o testador não roda aos fins-de-semana... Não vi sobre a excelência.

Bem, e rolar na inicialização de há alguns meses E para o mês actual não faria mal, de modo a não esperar pelo fim do cálculo do número da semana de um mês inteiro. Mas todas estas são nuances ....

É isso que torna a MQL4 tão atraente - o código é curto e claro!

Não calcula correctamente
 
pako:
Não conta correctamente
Está bem. Em que momento? No final do mês? Verifiquei o calendário...
Razão: