Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 886

 
Sergey Voytsekhovsky:

Sí, efectivamente, no me había dado cuenta. Se ve mejor, hay menos letras.

¿No hay forma de poner tres versiones (no sé cómo decirlo correctamente) bajo un mismo operador?

Sólo las llaves rizadas - limitan la condición.

 
int a,b,c,d,e,f,g,j;
a=10;
b=5;
d=3;
f=4;
j=1;
a>b?{c=d;e=f;g=j}:{c=0;e=0;g=0};
Print("c=",c," e=",e," g=",g);

Intenté dibujar un diseño como éste y el compilador me salpicó con algo que olía mal. ¿Dónde está el error?

 
Sergey Voytsekhovsky:

UURRAA, y el alma ha cantado. ¡¡¡¡¡Alexey, muchas gracias !!!!!

Todo ha funcionado, no entiendo muy bien cómo es posible prescindir de la matriz

porque su descripción ha sido eliminada. ¿Así que puedes prescindir de la matriz extra aquí en absoluto?


#property indicator_color3  clrGreen,clrRed

Esta es la matriz.

 
Sergey Voytsekhovsky:

Sí, efectivamente, no me había dado cuenta. Se ve mejor, hay menos letras.

¿No hay forma de poner tres versiones (no sé cómo decirlo bien) bajo un mismo operador?

Sí, podemos. Crea dos funciones definidas por el usuario y llámalas.

int m = 5;//0;//
m = m == 0 ? f1 : f2;

int f1()
 {
  return(1);
 }
int f2()
 {
  return(2);
 }
 
Konstantin Nikitin:

Eso es lo que estoy diciendo. Muy bien, hemos terminado. Mientras sepa lo que está pasando...

Ya lo tengo, gracias.
Estoy confundido. Todo esto es nuevo para mí.

 
Alexey Viktorov:

Puedes hacerlo. Crea dos funciones personalizadas y llámalas.

¿Le he entendido bien?

ColorHistogram_2Colors[i]=ExtMainBuffer[i]>=50?ColorUp(i):ColorDown(i);
//+------------------------------------------------------------------+ 
int ColorUp(int i)
 {
   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
  return(0);
 }
int ColorDown(int i)
 {
   ColorHistogram_2Buffer1[i]=ExtMainBuffer[i];
   ColorHistogram_2Buffer2[i]=50;
  return(1);
 }

Lo hice en el indicador - funciona.

 
Sergey Voytsekhovsky:

¿Le he entendido bien?

Lo prescribí así en el indicador - funciona.

Si funciona, está bien. Pero yo no lo haría así.

En primer lugar, yo no haría cambios de topes. Basta con poner siempre 50 en uno de ellos sin ninguna condición.

Y en el segundo buffer poner el valor mayor o menor de 50. Entonces en la condición <=> sólo se debe nombrar el color. Y no hay funciones separadas.

 
Alexey Viktorov:

Si funciona, está bien. Pero no es así como yo lo haría.

En primer lugar, yo no haría un cambio extravagante de topes en el que =50. Basta con escribir siempre 50 en uno de ellos sin ninguna condición.

Y en el segundo buffer para establecer el valor mayor o menor de 50. Entonces en la condición <=> sólo tendrás que asignar el color. Y no hay funciones separadas.

Estaría de acuerdo contigo si la condición <>50 definiera sólo el color, pero es el principio/final de la vela del histograma también. Por lo tanto, no voy a discutir, intentaré comprobarlo, aunque probablemente tenga usted razón.

 
Alexey Viktorov:

Si funciona, está bien. Pero no es así como yo lo haría.

Sí, efectivamente, cualquiera de los dos buffers DRAW_COLOR_HISTOGRAM2 que definen el inicio/fin de la vela puede ser el inicio o el final. Ahora todo es mucho más sencillo:

   ColorHistogram_2Buffer1[i]=50;
   ColorHistogram_2Buffer2[i]=ExtMainBuffer[i];
   ColorHistogram_2Colors [i]=ExtMainBuffer[i]>=50?0:1;

Gracias por la ciencia.

 

¿Cómo se restablecen los valores INDICATOR_MAXIMUM e INDICATOR_MINIMUM al cambiar de modo?

La cuestión es que estos valores se utilizan en un modo y no en el otro. Al cambiar el modo al que no se necesitan estos máximos y mínimos, se guardan por alguna razón. Este problema existe tanto en MQL4 como en MQL5.

Por ejemplo, cuando se ejecuta el indicador en el primer modo los límites no son necesarios y todo funciona correctamente

El segundo modo establece los límites de máximo y mínimo de la ventana del indicador. Todo funciona correctamente al pasar del primer al segundo modo


Pero al pasar del segundo modo al primero (los límites no se utilizan en el primer modo) estos máximos y mínimos se guardan y el usuario no puede ver los valores reales del indicador


El código en MQL4 está en los archivos adjuntos

¿Alguien ha tenido este problema? ¿Alguien tiene alguna idea de cómo solucionarlo?

Archivos adjuntos:
test.mq4  4 kb