Errores, fallos, preguntas - página 2314

 

¡Camaradas desarrolladores!

En MT4, al hacer clic en el objeto gráfico seleccionado se activa el evento"CHARTEVENT_OBJECT_DRAG". Esto es un verdadero error.

En mt5 no existe ese problema.

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
 {
  if(id==CHARTEVENT_OBJECT_DRAG)
    Print(id); // 2
 }
 
SuhanovDM94:

¡Buenas tardes a todos! Perdón por la pregunta tonta. Chicos, ¿podrían decirme cómo hacer que la propiedad Pressed de un botón sea true cuando se hace clic con el botón izquierdo y false cuando se hace clic con el botón izquierdo? Ahora la situación es tal, que no pasa nada al pulsarlo, y al soltarlo Pulsado cambia su valor al contrario.

Entiendo que tengo que anular los manejadores de eventos CButton::OnMouseUp y CButton::OnMouseDown, pero no tengo ni idea de dónde hacerlo. Una pista, por favor. Gracias de antemano.

Si alguien puede ayudar con el mismo tema, se agradecería.

 
Baruban:

Si alguien puede ayudar con el mismo tema, se agradecería.

El evento sólo se genera cuando se pulsa el botón del ratón, pero no cuando

 
Vitaly Muzichenko:

El evento se genera sólo cuando se pulsa el botón del ratón, no cuando se hace clic

Pero hay un manejador de clics, ¿no? Así que debe haber un evento de clic.

 
SuhanovDM94:

Pero hay un manipulador de prensa, ¿no? Así que también debe haber un evento de prensa.

¿No estás confundido? Existe el evento CHARTEVENT_CLICK - un clic del ratón en el gráfico; pero no un clic...

 
Alexey Viktorov:

¿No estás confundiendo las cosas? Hay un evento CHARTEVENT_CLICK - un clic del ratón en un gráfico; pero no un clic...

Lo hay, es cierto. Es que la clase CButton tiene dos manejadores de eventos internos: OnMouseDown() y OnMouseUp(). Así que pensé, ¿tal vez también hay eventos correspondientes?

 
SuhanovDM94:

Sí, así es. Es que la clase CButton tiene dos manejadores de eventos internos: OnMouseDown() y OnMouseUp(). Así que pensé, ¿tal vez también hay eventos correspondientes?

No he mirado la SB, pero aparentemente hay una prensa OBJPROP_STATE == true, la otra OBJPROP_STATE == false. O tal vez me equivoque.

 
Hola a todos, ¿podéis ayudarme? ¿Por qué el gráfico baja al final del proceso de optimización?
Archivos adjuntos:
 
Los editores de MT4 y MT5 se bloquean al pasar el ratón por encima de "func" en la línea "int i = func( 0, 1 );" y al seleccionar la opción "Ir a la definición" (o al pulsar Alt+G)

MQL4 build 1910
MQL5 build 1931

template<typename type>  
type func( type a, type b = 1 ){ return ( 0 ); }

int i = func( 0, 1 );

void OnStart(){ }  

Archivos adjuntos:
altg.jpg  57 kb
 

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

¿El equivalente en MQL al tipo None de Python?

nicholi shen, 2018.10.28 21:52

No en MQL, al menos ya no. En realidad es el doble de lento que la referencia en la depuración, y lo suficientemente cerca de lo mismo cuando se compila normalmente que realmente no importa. Pruébelo usted mismo.

#define  ITERATIONS 1000000

void OnStart()
{
   {
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++){
         string r = string(rand());
         sum += by_ref(r);
      }
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_ref", time/1000.0, sum);
   }{
      ulong time = GetMicrosecondCount();
      ulong sum = 0;
      for(int i=0; i<ITERATIONS; i++)
         sum += by_val(string(rand()));
      time = GetMicrosecondCount() - time;
      printf("%s took %.3f milliseconds: sum=%dll", "by_val", time/1000.0, sum);
   }
}
//+------------------------------------------------------------------+

int by_ref(string &var){ return int(var) % 100; }
int by_val(string  var){ return int(var) % 100; }

¿Por qué by_ref es más lento que by_val?