encontrar la fecha más cercana - página 3

 
dr.house7:

Lo siento, pero ¿a qué te refieres con "estas condiciones"?

La falta de tiempo.

Por cierto, decido tomar tiempo y probarlo, aquí hay 1 solución.

   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:

Falta de tiempo.

Por cierto, decido tomarme un tiempo y probarlo, aquí hay 1 solución.


Lo probé por un tiempo y parece que funciona correctamente.

Me has salvado el tiempo, definitivamente estoy en deuda contigo... ¡muchas gracias!

Que tengan un buen día.

corrección

Lo siento, pero no funciona correctamente, muchas veces el valor actual es totalmente erróneo como la congelación y a veces el anterior se convierten en el valor real :(

 
dr.house7:


Lo he probado durante un rato y parece que funciona correctamente.

Me has salvado el tiempo, definitivamente estoy en deuda contigo... ¡muchas gracias!

Que tengas un buen día.

corrección

Lo siento, pero no funciona correctamente, muchas veces el valor actual es totalmente erróneo como la congelación y a veces el anterior se convierte en el valor real :(


El último código que proporciono debería funcionar. Por favor, publique su código.

 
angevoyageur:


El último código que proporciono debería funcionar. ¿Puede usted por favor publicar su código.

Los problemas vienen cuando en la misma barra de minutos intervienen diferentes líneas de toque

 
es evidente, por ejemplo, cuando usted backtest EURUSD 10 enero 2014 a las 16:30 en cada modo de garrapatas M1
 

¿es difícil?

OMG

 

¿Hay alguna solución sencilla?

¿Debo utilizar arraymaximum en su lugar?

Gracias ;)

 

Estimado Alain,

decido optar por un nuevo camino, borro el bucle y trato de conseguir algo antes correcto.

ahora touchx(es el toque actual) es correcto, cada tick cambia correctamente...en cambio previoustouchx(es el toque anterior) después del segundo tick se vuelve incorrecto (porque toma el mismo valor del actual)...

¿Cómo puedo proceder?

gracias, que tengan una buena noche

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;
           }        
          }
Archivos adjuntos:
mecca.mq5  14 kb
 
dr.house7:

Estimado Alain,

decido optar por un nuevo camino, borro el bucle y trato de conseguir algo antes correcto.

ahora touchx(es el toque actual) es correcto, cada tick cambia correctamente...en cambio previoustouchx(es el toque anterior) después del segundo tick se vuelve incorrecto (porque toma el mismo valor del actual)...

¿Cómo puedo proceder?

gracias, que tengan una buena noche

doc

Hola Doc,

Depende de su objetivo, lo siento pero no me queda claro. Estás detectando el cruce de 2 emas, pero ¿cuándo quieres detectar este cruce, en cada barra?

Por supuesto que con el código tal y como está, lo detecta en cada tick.

 
angevoyageur:

Hola Doc,

Depende de tu objetivo, lo siento pero no me queda claro. Estás detectando el cruce de 2 emas, pero ¿cuándo quieres detectar ese cruce, en cada barra?

Por supuesto que con el código tal y como está, lo detecta en cada tick.

Buenas noches Alain,

ea debe comprobar cada tick (como lo hace), pero cambiar 2 enteros (touchx y previoustouchx) sólo cuando el cambio de señal ... así:

ejemplo:

1er tick

touchx =3; previoustouchx=-1 (-1 porque no hay datos anteriores)

2º tick

touchx =5; previoustouchx=3

3er tick

touchx =5; previoustouchx=3

etc.