trova la data più vicina

 

Buongiorno a tutti,

Ho 10 datetime, e voglio sapere quale di questi è il più vicino all'ora corrente, quale formula potrei usare?

Grazie per il supporto.

 
dr.house7:

Buongiorno a tutti,

Ho 10 datetime, e voglio sapere quale di questi è il più vicino all'ora corrente, quale formula potrei usare?

Grazie per il supporto.

Ciao dr.house7

puoi mostrarci qualche tentativo di sforzo?

Hai provato qualcosa finora? Hai qualche pezzo di codice da mostrarci?

Se non hai niente da mostrare, allora è meglio cercare nella Code Base o postare un lavoro nella sezione Jobs.

 
Malacarne:

Ciao dr.house7

puoi mostrarci qualche tentativo di sforzo?

Hai provato qualcosa finora? Hai qualche pezzo di codice da mostrarci?

Se non hai niente da mostrare, allora è meglio cercare nella Code Base o postare un lavoro nella sezione Jobs.

divertente
 
dr.house7:
divertente

Ciao, Mister House, perché divertente? Vuoi un codice gratis

Non c'è una formula diretta, credo. I tuoi 10 datetime sono in un array? Crea un ciclo per confrontare ogni datetime con l'ora corrente e tieni il datetime che è più vicino all'ora corrente.

Se pubblichi il tuo codice, riceverai aiuto, certo.

 
angevoyageur:

Ciao, Mister House, perché divertente? Vuoi un codice gratis

Non c'è una formula diretta, credo. I tuoi 10 datetime sono in un array? Crea un ciclo per confrontare ogni datetime con l'ora corrente e tieni il datetime che è più vicino all'ora corrente.

Se pubblichi il tuo codice, riceverai aiuto, sicuro.

Questa è esattamente la risposta che stavo cercando, grazie Ange!

p.s.

Ho sempre codificato gratuitamente, sul forum tsd

 

Ok, ecco il codice:

int touchedline[10];
int temp = 0;

touchedline[0]=doc1Time;
touchedline[1]=doc2Time;
touchedline[2]=doc3Time;
touchedline[3]=doc4Time;
touchedline[4]=doc5Time;
touchedline[5]=doc6Time;
touchedline[6]=doc7Time;
touchedline[7]=doc8Time;
touchedline[8]=doc9Time;
touchedline[9]=doc10Time;


    for(int i=0;i<10;i++)
    {
        if(touchedline[i]>temp)
        temp=touchedline[i]; 
    }
 

doc1Time, doc2Time, doc3Time, ...ecc. sono datetime

con questa formula ho ottenuto l'ultimo tempo toccato ma non il numero dell'array di oggetti usato...come posso sapere esattamente l'ultimalinea toccata[x] usata?

Ho bisogno di sapere quale oggetto è il valore più alto,touchedline[0] otouchedline[1] otouchedline[3] ecc.

Grazie per il supporto

doc

 
dr.house7:

Questa è esattamente la risposta che stavo cercando, grazie Ange!

p.s.

Ho sempre codificato gratuitamente, sul forum tsd

Tutti sono liberi di codificare gratuitamente

Ma la tradizione sul forum mql4.com e mql5.com è di aiutare le persone che condividono il loro codice e mostrano i loro tentativi.

   ...
   int highest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         highest=i;
         temp=touchedline[i];
        }
     }

Questo vi darà l'indice del valore più alto, e il "più vicino all'ora corrente" a condizione che tutti i valori di data touchedline[] siano inferiori all'ora corrente.

Puoi anche usare ArrayMaximum().

 
angevoyageur:

Ognuno è libero di codificare gratuitamente

Ma la tradizione sul forum di mql4.com e mql5.com è di aiutare le persone che condividono il loro codice e mostrano i loro tentativi.

Questo vi darà l'indice del valore più alto, e il "più vicino all'ora corrente" a condizione che tutti i valori di date touchedline[] siano inferiori all'ora corrente.

Puoi anche usare ArrayMaximum().

:D

Grazie mille... ho usato"int highest=0;" nel mio precedente tentativo, questo era il mio problema.

Buon fine settimana!

doc

 
angevoyageur:

Ognuno è libero di codificare gratuitamente

Ma la tradizione sul forum di mql4.com e mql5.com è di aiutare le persone che condividono il loro codice e mostrano i loro tentativi.

Questo vi darà l'indice del valore più alto, e il "più vicino all'ora corrente" a condizione che tutti i valori di date touchedline[] siano inferiori all'ora corrente.

Puoi anche usare ArrayMaximum().

Buongiorno e buona domenica!

Spero che tu possa guidarmi di nuovo nel modo corretto...ho bisogno di ottenere il precedente"più alto" non solo l'attuale, come potrei procedere?

Grazie per qualsiasi aiuto

doc

 
dr.house7:

Buongiorno e buona domenica!

Spero che tu possa guidarmi di nuovo nel modo corretto...ho bisogno di ottenere il precedente"più alto" non solo l'attuale, come potrei procedere?

Grazie per qualsiasi aiuto

doc

Qualcosa del genere?

   ...
   int highest=-1,previousHighest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         previousHighest=highest;
         highest=i;
         temp=touchedline[i];
        }
     }
Solo una soluzione tra le altre.
 
angevoyageur:

Qualcosa del genere?

Solo una soluzione tra le altre.

Grazie mille, funziona a meraviglia!

ma è un po' strano da capire :)