trova la data più vicina - pagina 3

 
dr.house7:

Scusa, ma cosa intendevi con "queste condizioni"?

Mancanza di tempo.

A proposito, ho deciso di prendere tempo e testarlo, ecco 1 soluzione.

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         highest=i;
         temp=touchedline[i];
        }
     }
   temp=0;
   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp && i!=highest)
        {
         previoushighest=i;
         temp=touchedline[i];
        }
     }
   Print("act_highest :",highest);
   Print("prv_highest :",previoushighest);
 
angevoyageur:

Mancanza di tempo.

A proposito, ho deciso di prendere tempo e testarlo, ecco 1 soluzione.


L'ho testata per un po' e sembra funzionare correttamente.

Mi hai fatto risparmiare tempo, sono sicuramente in debito con te... grazie mille!

Buona giornata.

correzione

mi dispiace ma non funziona correttamente, molte volte il valore attuale è totalmente sbagliato come freeze e a volte il precedente diventa il valore attuale :(

 
dr.house7:


L'ho testato per un po' e sembra funzionare correttamente.

Mi hai fatto risparmiare tempo, sono decisamente in debito con te... grazie mille!

Buona giornata.

correzione

mi dispiace ma non funziona correttamente, molte volte il valore attuale è totalmente sbagliato come freeze e a volte il precedente diventa il valore attuale :(


L'ultimo codice che fornisco dovrebbe funzionare. Puoi per favore postare il tuo codice.

 
angevoyageur:


L'ultimo codice che fornisco dovrebbe funzionare. Puoi per favore postare il tuo codice.

I problemi arrivano quando nella stessa barra dei minuti sono coinvolte diverse touchline

 
è evidente per esempio quando si fa il backtest di EURUSD 10 gennaio 2014 alle 16:30 su ogni modalità tick M1
 

è così difficile?

OMG

 

C'è qualche soluzione semplice?

Dovrei usare arraymaximum invece?

Grazie ;)

 

Caro Alain,

Decido di optare per un nuovo modo, elimino il ciclo e cerco di ottenere qualcosa di prima corretto.

ora touchx (è il tocco attuale) è corretto, ogni tick cambia correttamente...invece previoustouchx (è il tocco precedente) dopo il secondo tick diventa sbagliato (perché prende lo stesso valore dell'attuale)...

come posso procedere?

grazie, buona serata

doc

int highest,touchx,previoustouchx;

if(ema1[1] > ema2[1] && ema1[0]< ema2[0]) 
          {
           if(TouchTime1 != emacross1_TouchTime) 
           {
           drawArrow1(TouchTime1,ema1[0],"Wingdings 3",ArrowSize,"p",ArrowColor); 
           emacross1_TouchTime= TouchTime1;
           highest=emacross1_TouchTime;
           previoustouchx=touchx;
           touchx=1;
           }        
          }
File:
mecca.mq5  14 kb
 
dr.house7:

Caro Alain,

Decido di optare per un nuovo modo, elimino il ciclo e cerco di ottenere qualcosa di prima corretto.

ora touchx (è il tocco attuale) è corretto, ogni tick cambia correttamente...invece previoustouchx (è il tocco precedente) dopo il secondo tick diventa sbagliato (perché prende lo stesso valore dell'attuale)...

come posso procedere?

grazie, buona serata

doc

Ciao Doc,

Dipende dal tuo obiettivo, scusa ma non mi è chiaro. Stai rilevando l'incrocio di 2 emas, ma quando vuoi rilevare questo incrocio, su ogni barra?

Naturalmente con il codice così com'è, lo rileva su ogni tick.

 
angevoyageur:

Ciao Doc,

Dipende dal tuo obiettivo, scusa ma non mi è chiaro. Tu stai rilevando l'incrocio di 2 emas, ma quando vuoi rilevare questo incrocio, su ogni barra?

Naturalmente con il codice così com'è, lo rileva su ogni tick.

Buona sera Alain,

ea dovrebbe controllare ogni tick (come fa) ma cambiare 2 interi (touchx e previoustouchx) solo quando il segnale cambia... così:

esempio:

1° tick

touchx =3; previoustouchx=-1 (-1 perché non ci sono dati precedenti)

2° tick

touchx =5; precedente touchx=3

3° tick

touchx =5; precedente touchx=3

ecc.