Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 607

 
new-rena:

Nessun problema. Ho lanciato l'algoritmo. L'inizio solo senza grafico, cioè così:

НомерДНЯвМесяце=str.day;
hai bisogno del numero della settimana del mese :)
 
pako:
Ho bisogno del numero della settimana del mese :)

Non posso farlo al 5 e qui non è usuale al 4.

Se mi è permesso, scriverò il codice e lo posterò.

 
pako:
che differenza fa 4 o 5???, il tempo è lo stesso :)))
Paco, non so come fare 5 e non vedo più il punto :)
 
new-rena:
Paco, non so come scrivere su 5 e non vedo più il punto:)
Scrivere in 4.
 
pako:
Scrivere su 4

Probabilmente non è quello giusto. Questo è l'inizio, le critiche sono benvenute, faremo come richiesto.

Mettete l'EA nel tester, accendete la modalità visiva, selezionate TF D1 e guardate le stampe nel 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:

Probabilmente non è quello giusto. Questo è l'inizio, le critiche sono benvenute, faremo come richiesto.

Avviamo l'EA nel tester, accendiamo la modalità visiva, selezioniamo TF D1 e guardiamo le stampe nel log.

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

non viene visualizzato correttamente

Mostra la settimana 3 e oggi è la settimana 4, 22.08.2016

 
pako:
In Excel, la settimana=1+INT((A1-DATE(YEAR(A1+4-WEEKDAY(A1+6));1;5)+WEEKDAY(DATE(YEAR(A1+4-WEEKDAY(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);     } //+------------------------------------------------------------------+

 

Dovremmo anche mettere quando il 1° del mese cade in un fine settimana, dato che il tester non gira i fine settimana... Non ho visto l'excel.

Bene, e per rotolare in inizializzazione da un paio di mesi fa E al mese corrente non sarebbe male, in modo da non aspettare la fine del calcolo del numero della settimana un mese intero. Ma queste sono tutte sfumature ....

Questo è ciò che rende MQL4 così attraente - il codice è breve e chiaro!

 
new-rena:

Dovremmo anche mettere quando il 1° del mese cade in un fine settimana, dato che il tester non gira i fine settimana... Non ho visto l'excel.

Bene, e per rotolare in inizializzazione da un paio di mesi fa E al mese corrente non sarebbe male, in modo da non aspettare la fine del calcolo del numero della settimana un mese intero. Ma queste sono tutte sfumature ....

Questo è ciò che rende MQL4 così attraente - il codice è breve e chiaro!

Non calcola correttamente
 
pako:
Non conta correttamente
Ok. A che punto? Alla fine del mese? Ho controllato il calendario...
Motivazione: