Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 271

 
Alexey Viktorov:

E poi c'è questa idea.

Se volete il primo venerdì, il numero deve essere inferiore a 8. Se il primo venerdì del mese è venerdì, il venerdì successivo sarà l'ottavo. Di conseguenza, si può facilmente ricalcolare a qualsiasi giorno della settimana e a qualsiasi giorno del mese, secondo, terzo...


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  int bs=0;

  if (DayOfWeek()==5 && Minute()<5) {  Добавьте сюда пожалуйста 
    bs=GetSignal();
    if (Hour()==lHourOpenPos && bs>0) OpenPosition();
    if (Hour()==sHourOpenPos && bs<0) OpenPosition();
  }

  if (bLastBuy) {
    if (DayOfWeek()==lDayForClose && Hour()>=lHourClosePos) CloseAllPositions();
    TrailingStop=lTrailingStop;
    if (lUseTrailing) TrailingPositions();
  } else {
    if (DayOfWeek()==sDayForClose && Hour()>=sHourClosePos) CloseAllPositions();
    TrailingStop=sTrailingStop;
    if (sUseTrailing) TrailingPositions();
  }
}
 
Darirunu:

Non ho nessuna voglia di ricordare le vecchie funzioni di mql4. Ecco la seconda versione funzionante dello script

/********************Script program start function********************/
void OnStart()
{
 MqlDateTime mqlDateTime;
 datetime arrDateTime[1];
 CopyTime(_Symbol, PERIOD_D1, 1, 1, arrDateTime);
 TimeToStruct(arrDateTime[0], mqlDateTime);
 if(mqlDateTime.day_of_week == FRIDAY && mqlDateTime.day < 8)
  {
   Print("Ура!!! Вчера была первая пятница");
   
  }
}/********************************************************************/
 
Alexey Viktorov:

Non ho nessuna voglia di ricordare le vecchie funzioni di mql4. Ecco la seconda versione funzionante dello script


Mi chiedo come sapere che settimana è?

 

È un classico, una volta che fai una domanda un po' sopra la media, il risultato è sempre lo stesso, ma grazie.

 
Aleksey Vyazmikin:

Mi chiedo come si fa a sapere che settimana è?

Dividi il numero di oggi per 7 e arrotonda al numero più alto, indipendentemente dal resto.

Venerdì scorso era 11 diviso 7, quindi 1 settimana + 4 giorni è la seconda settimana. Il numero di martedì era 15 diviso 7, quindi era 2 settimane + 1 giorno, il che lo rende la terza settimana. Giusto?

Possiamo fare a meno di arrotondare. Se il resto della divisione è maggiore di zero, allora abbiamo la settimana intera più 1. Giusto?

 
Alexey Viktorov:

Dividi il numero di oggi per 7 e arrotonda al numero più alto, indipendentemente dal resto.

Venerdì scorso era 11 diviso 7, quindi 1 settimana + 4 giorni è la seconda settimana. Il numero di martedì è 15 diviso 7, quindi sono 2 settimane + 1 giorno, quindi la settimana 3. Giusto?

Si può andare avanti senza arrotondare. Se il resto della divisione è maggiore di zero, allora il numero risultante di settimane complete più 1. Giusto?


Non è una lezione di matematica o sto scrivendo nel posto sbagliato?

 
Darirunu:

Tutto sommato, è un classico: fai una domanda leggermente superiore alla media, il risultato è sempre lo stesso, ma grazie.

Cosa c'entra questo con i classici? Quali rancori? La logica del tuo codice è incomprensibile per me, perché dovrei cercare di capirla? La domanda era.

Forum sul trading, sistemi di trading automatico e test di strategia.

Qualsiasi domanda per i neofiti su MQL4, aiuto e discussione su algoritmi e codici

Darirunu, 2017.08.12 16:00

Pomeriggio ...

Come scrivere la condizione nel quad:se il primo venerdì del mese è stato rialzista, e

Ilsecondo lunedì è ribassista, apriamo un'operazione di vendita.

Vi ho mostrato come determinare il primo venerdì. Il giorno in cui devi contare dipende da te.

Dimmi per favore: perché controlli i minuti quando definisci il giorno della settimana? Poi si controllano le ore. Penso che sia più logico determinare il giorno della settimana, poi all'interno della condizione soddisfatta controllare l'ora, i minuti (se necessario), poi si controlla rialzista o ribassista e decidere dove aprire.

Forse è meglio che tu ti metta a programmare a un livello più alto, invece di tornare a mql3?

 
Darirunu:

Questa non è una lezione di matematica, o sto scrivendo nel posto sbagliato?

Ciao... Come si può essere un programmatore senza avere competenze matematiche superiori alla media? Notate che non sto parlando di matematica avanzata.

 
Alexey Viktorov:

Ciao... Come si può essere un programmatore senza avere abilità matematiche superiori alla media? Notate che non sto parlando di matematica superiore.


Poi aggiungi che è bene conoscere la trigonometria e il disegno e un po' di filosofia.

 
Alexey Viktorov:

Dividi il numero di oggi per 7 e arrotonda al numero più alto, indipendentemente dal resto.

Venerdì scorso era 11 diviso 7, quindi 1 settimana + 4 giorni è la seconda settimana. Il numero di martedì è 15 diviso 7, quindi sono 2 settimane + 1 giorno, quindi la settimana 3. Giusto?

Si può fare a meno di arrotondare. Se il resto della divisione è maggiore di zero, allora il numero risultante di settimane complete più 1. Giusto?


Sto cercando di riprodurre il metodo che suggerisci - dove sbaglio?

1 settimana2 settimane3 settimane4 settimane5 settimane1 settimana2 settimane3 settimane4 settimane5 settimane
1 8 15 22 29 0 1 2 3 4
2 9 16 23 30 0 1 2 3 4
3 10 17 24 31 0 1 2 3 4
4 11 18 25 1 2 3 4
5 12 19 26 1 2 3 4
6 13 20 27 1 2 3 4
7 14 21 28 1 2 3 4