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

 
angevoyageur:

¿Algo así?

Sólo una solución entre otras.

Hay algo que no funciona... Puedo usarlo sólo en datos de ticks, de lo contrario el máximo anterior es siempre =-1

Pero el problema principal es que también en los datos de ticks a veces sin razón el cambio más alto anterior a =-1

Gracias de nuevo por el apoyo

doc

 
dr.house7:

Hay algo que no funciona... Puedo usarlo sólo en datos de ticks, de lo contrario el máximo anterior es siempre =-1

Pero el problema principal es que también en los datos de ticks a veces sin razón el cambio más alto anterior a =-1

Gracias de nuevo por el apoyo

doc

Sólo puedo ayudar si muestra el código que está utilizando.
 
angevoyageur:
Sólo puedo ayudarte si muestras el código que estás utilizando.

¿Es suficiente esto o se necesita todo el código?

Gracias Ange por el apoyo...

doc

int checkEntry()
  {
  datetime lastdealtime;
  HistorySelect(0, TimeCurrent());  
  lastdealtime = HistoryDealGetInteger(HistoryDealGetTicket(HistoryDealsTotal()-1),DEAL_TIME);
  //Print("lastdealtime :",lastdealtime);
  
//--- time filter
   if(!checkTimeLimits()) return(_doNothing);

double ema1[2],
       ema2[2];
       
       //

//-- get current Spread
   int spread=int(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));

//-- Get indicator and timeserie data
  if(CopyBuffer(handle_ema1,0,0,2,ema1)           !=2  ||
  if(CopyBuffer(handle_ema2,0,0,2,ema2)           !=2  ||
                
     
     CopyHigh(_Symbol,_Period,0,2,high)!=2          || 
      CopyLow(_Symbol,_Period,0,2,low)!=2 
     
     ) return(_doNothing);
//-------
MqlDateTime currentTime; TimeCurrent(currentTime);

TouchTime=TimeCurrent();

if(ema1[1] > ema2[1] && ema1[0]< ema2[0]) 
           {
           if(TouchTime != emacross1_TouchTime) 
           {
           drawArrow1(TouchTime,ema1,"Wingdings 3",ArrowSize,"p",ArrowColor); 
           emacross1_TouchTime= TouchTime;
           
           }
        
      
          } 
int touchedline[10];
int temp = 0;
int valuearray = 0;

touchedline[0]=emacross1_TouchTime;
touchedline[1]=emacross2_TouchTime;
touchedline[2]=emacross3_TouchTime;
touchedline[3]=emacross4_TouchTime;
touchedline[4]=emacross5_TouchTime;
touchedline[5]=emacross6_TouchTime;
touchedline[6]=emacross7_TouchTime;
touchedline[7]=emacross8_TouchTime;
touchedline[8]=emacross9_TouchTime;
touchedline[9]=emacross10_TouchTime;


int highest=-1, previoushighest=-1;

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

¿Es suficiente esto o se necesita todo el código?

Gracias Ange por el apoyo...

doc

Sí. Ahorame doy cuenta de que lo que he sugerido no funciona si el valor más alto es touchedline[0]. Así que tienes que encontrar otra forma en este caso, por ejemplo usar ArrayMaximum().
 
angevoyageur:
Sí. Ahorame doy cuenta de que lo que sugerí no funciona si el valor más alto es touchedline[0]. Así que tienes que encontrar otra forma en este caso, por ejemplo usar ArrayMaximum().

Hola Ange,

Traté de hacer lo mejor, pero creo que esto es un poco más complicado ... escribí esto y no funcionan, cualquier sugerencia? gracias

int index_max;

for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         index_max=ArrayMaximum(touchedline[i],0,WHOLE_ARRAY); // maximum in High
         temp=touchedline[i];         
        }
     }
 
dr.house7:

Hola Ange,

Traté de hacer lo mejor, pero creo que esto es un poco más complicado ... escribí esto y no funcionan, cualquier sugerencia? gracias

   int highest=-1,previoushighest=-1;

   for(int i=0;i<10;i++)
     {
      if(touchedline[i]>temp)
        {
         previoushighest=highest;
         highest=i;
         temp=touchedline[i];
        }
     }     
   if(previoushighest==-1) previoushighest=ArrayMaximum(touchedline,1,WHOLE_ARRAY);

   Print("act_highest :",highest);
   Print("prv_highest :",previoushighest);
No tengo tiempo para probar, y no pretendo que sea la mejor solución. Pero creo que debería funcionar.
 
angevoyageur:
No he tenido tiempo de hacer pruebas, y no pretendo que sea la mejor solución. Pero creo que debería funcionar.
Lo he intentado, pero ahora el anterior y el actual me dan el mismo resultado la mayoría de las veces
 
dr.house7:
Lo he intentado, pero ahora el anterior y el actual me dan el mismo resultado la mayoría de las veces
Lo siento, no tengo tiempo y tratar de ayudar en estas condiciones no es una buena idea. Te estoy haciendo perder el tiempo.
 
angevoyageur:
Lo siento, no tengo tiempo y tratar de ayudar en estas condiciones no es una buena idea. Estoy perdiendo el tiempo.
Gracias de todos modos
 
angevoyageur:
Lo siento, no tengo tiempo y tratar de ayudar en estas condiciones no es una buena idea. Te estoy haciendo perder el tiempo.

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

Razón de la queja: