Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 1083

 
¿Y si necesita encontrar el valor más alto en un número determinado de barras recientes ?
 

Así que es una matriz estática

//--- создадим массив 
   double array[]; 
   int size=772; 
   ArrayResize(array,size); 
   //---  заполним его значениями индикатора 
   for(int i=0;i<size;i++) 
     { 
      array[i]=iATR(NULL,0,14,i);
     }
   //--- найдем позицию максимального элемента в массиве 
   int max_position=ArrayMaximum(array,772,0); 
   //--- теперь получим само максимальное значение в массиве 
   double max=array[max_position];
 

Así que, de hecho, escribo directamente - autodidacta, no muy lejos en la comprensión de las sutilezas de la percepción del ser del programador (Y el tema se llama: Cualquier pregunta de un principiante...). Pongo un ejemplo, que no se reprochará que todos quieren conseguir de forma gratuita, sin esfuerzo, y por otro lado tratando de definir claramente la tarea (por no decir que no podemos leer las mentes de los demás).

Una vez más, ¿cómo obtener el valor máximo del indicador para la cantidad dada de las últimas barras desde el código dado o tal vez por la gracia de la comprensión en la declaración personal de codificación?

Con sincero respeto, deferencia y comprensión de que los programadores son gente de otro mundo y una explicación tan delicada no es el hecho de que todo lo anterior tendrá que ser esbozado de nuevo, tal vez más de una vez para obtener el resultado deseado.

//--- crear array double array[]; int size=772; ArrayResize(array,size); //---llenarlo con los valores del indicador for(int i=0;i<size;i++) { array[i]=iATR(NULL,0,14,i);
} //--- encontrar la posición del elemento máximo en el array int max_position=ArrayMaximum(array,772,0); //--- ahora vamos a obtener el valor máximo en el propio array double max=array[max_position];
 

He buscado todo lo que he podido pero no he encontrado ninguna solución, última esperanza en vosotros :)

La tarea general era hacer un indicador, que al lanzarlo sobre un gráfico, es decir, que ya esté funcionando, pulsamos la tecla especificada y aparece la línea de tendencia (fecha1=fecha2, precio1=precio2) bajo la posición actual del cursor

El problema surgió cuando no consigo queif(id==CHARTEVENT_MOUSE_MOVE) pase las coordenadas del puntero aif(id==CHARTEVENT_KEYDOWN), y el código que viene a continuación tampoco quiere pasarlas. No sé cómo hacerlo, pero también hay otra forma de solucionar este problema. Quizás alguien sepa, que al lanzar el indicador en el gráfico, aparece el menú inicial.

#property strict
#define  VK_D             0x44 


int OnInit()
  {
//---
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{    
 
if(id==CHARTEVENT_MOUSE_MOVE)

{     int      x     =(int)lparam;
      int      y     =(int)dparam; 
      datetime dt    =0; 
      double   price =0; 
      int      window=0;
      ChartXYToTimePrice(0,x,y,window,dt,price); 


  if(id==CHARTEVENT_KEYDOWN)
{ 
  switch(int(lparam)) 
{ case VK_D:
   
   ObjectCreate("Trend Line",OBJ_TREND,0,dt,price,dt,price);
   ObjectSetInteger(0,"Trend Line",OBJPROP_SELECTED,true); 
}   
} 
}    
}
 
Craft:

Así que, de hecho, escribo directamente - autodidacta, no muy lejos en la comprensión de las sutilezas de la percepción del ser del programador (Y el tema se llama: Cualquier pregunta de un principiante...). Pongo un ejemplo, que no se reprochará que todos quieren conseguir de forma gratuita, sin esfuerzo, y por otro lado tratando de definir claramente la tarea (por no decir que no podemos leer las mentes de los demás).

Una vez más, ¿cómo obtener el valor máximo del indicador para la cantidad dada de las últimas barras del código dado o puede ser por la gracia de la comprensión en la declaración personal de codificación?

Con sincero respeto, reverencia y comprensión de que los programadores son gente de otro mundo y una explicación tan delicada no es el hecho de que todo lo anterior tendrá que ser esbozado de nuevo, tal vez más de una vez para obtener el resultado deseado.


Así que invierte el bucle y ya está.

De rates_total-1 a rates_total menos el number_of_balls deseado. Si en EA, desde Bars()-1 hasta Bars() menos...

 
K_i_r_i_t_o:

He buscado todo lo que he podido pero no he encontrado ninguna solución. No tengo ninguna esperanza para vosotros :)

La tarea general era hacer un indicador, que al lanzarlo sobre un gráfico, es decir, que ya esté funcionando, pulsamos la tecla especificada y aparece la línea de tendencia (fecha1=fecha2, precio1=precio2) bajo la posición actual del cursor

El problema surgió cuando no consigo queif(id==CHARTEVENT_MOUSE_MOVE) pase las coordenadas del puntero aif(id==CHARTEVENT_KEYDOWN), y el código de abajo tampoco quiere pasarlas, no sé cómo implementarlo, hay otra opción, pero también es un problema, si alguien lo sabe, cuando lanzas el indicador en el gráfico aparece el menú inicial, ¿se puede bloquear de alguna manera, para que el indicador aparezca en el gráfico inmediatamente?

Preste atención a la visibilidad variable.

No he profundizado en ello, pero me he dado cuenta de que las variables se declaran dentro de la condición. Este no debería ser el caso.

 
AlexeyVik:

Preste atención a la visibilidad de las variables.

No he profundizado demasiado, pero me he dado cuenta de que las variables se declaran dentro de la condición. Este no debería ser el caso.

Así que ese es el problema, cómo hacer que las variables se pasen de un if a otro, probado muchas variaciones, no quiere funcionar...
 
K_i_r_i_t_o:
Así que ese es el problema, cómo hacer que las variables se pasen de un if a otro, probado muchas variaciones, no quiere funcionar...

Puede leerlo aquí.

¿Cuántas variaciones? Las variables de nivel global son visibles en cualquier parte del programa, este es un caso extremo.

 
AlexeyVik:

Léalo aquí.

¿Cuáles son las múltiples variantes? Las variables de nivel global son visibles en cualquier parte del programa, este es un caso extremo.

Lo he leído todo, esa es la cuestión, no puedo mover los valores de las variables a otra función, y no hay forma de recogerlos en una función, estoy perplejo, pero ¿qué pasa con el menú de indicadores?
 
Craft:

Buenas tardes, señores.

Pregunta sobre las matrices. ¿Cómo encontrar el mayor valor del indicador en el número requerido de las últimas barras del gráfico, y no en las primeras?

Se ha discutido muchas veces (no lo encuentro), pero pocas veces he utilizado arrays.

¿Podríais aconsejar cómo resolver el problema de la indexación, quizás utilizando ArrayMaximum(array) de una forma más elegante?

Si hay un error elemental en alguna parte, lo siento, soy autodidacta.

El flujo de correcciones de errores en las compilaciones de MQL4 nunca desaparece, por lo quecuanto más sencillo sea el código, más fiable será .

Amax=-10000;

iAmax=-1;

for(int i=0;i<tamaño;i++) {

if (array[i]>Amax) {iAmax=i; Amax=array[i];}

}

si (iAmax<0) ...algo va mal

Razón de la queja: