Errores, fallos, preguntas - página 2040

 

No funciona en la subventana del indicador, ¿qué estoy haciendo mal?

  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
  ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  time=%s  Price=%G",window,TimeToString(dt),price);

2017.10.15 05:35:36.060	i-Stp EURCHF,M30: Window=0  =>  _Time=2017.09.29 22:00  _Price=0.904348
  datetime dt =0; 
  double price =0; 
  int window= ChartWindowFind();
// ChartXYToTimePrice(0,5,34,window,dt,price);
  PrintFormat("Window=%d  =>  _Time=%s  _Price=%G",window,TimeToString(dt),price); 

2017.10.15 05:37:13.997	i-Stp EURCHF,M30: Window=1  =>  _Time=1970.01.01 00:00  _Price=0
 
Yury Kulikov:

Se utilizan los parámetros MouseMove(x, y, key). La posición del cursor y el clic del ratón son determinados, la línea principal es movida por mql, no por las capacidades de la interfaz del terminal, es decir, el programa monitorea la posición del cursor en relación con la línea, no el movimiento de la línea. El movimiento simultáneo de las líneas está garantizado por el cambio sincrónico de las coordenadas de las líneas principales y dependientes.

Extrañamente, no uso las coordenadas del ratón en absoluto, sólo respondiendo a id == CHARTEVENT_MOUSE_MOVE. Y todo funciona bien, lo cual es realmente lógico.

No se necesita un DND personalizado para la suavidad. Si haces un DND personalizado, entonces haz objetos personalizados a través de kanvas. No puede haber ningún retraso, porque el objeto es siempre el mismo.

 
Vitaly Muzichenko:

No funciona en la subventana del indicador, ¿qué estoy haciendo mal?

¿qué se esperaba y qué es exactamente lo que no funciona?
 
Kirill Belousov:
pero ¿qué se esperaba y qué es exactamente lo que no funciona?

Se espera que convierta las coordenadas en una subventana y obtenga un precio.

Funciona en la ventana principal, no funciona en las subventanas, como se puede ver en las impresiones.

Además, la función sustituye el número de subventana por "0", es decir, por el principal:

Преобразует координаты  X и Y графика в значения время и цена.
bool  ChartXYToTimePrice(
   long           chart_id,     // идентификатор графика
   int            x,            // координата X на графике
   int            y,            // координата Y на графике
   int&           sub_window,   // номер подокна
   datetime&      time,         // время на графике
   double&        price         // цена на графике
   );
 

Error de compilación

int f() { return 1; }
void OnStart() export
{
        for   ( int i = f();           ;) {} //(1) нормально
        for   (            ;int i = f();) {} //(2) 'i' - unexpected token
        while (             int i = f() ) {} //(3) 'i' - unexpected token
}
 
Vitaly Muzichenko:

Se espera que convierta las coordenadas en una subventana y obtenga un precio.

Funciona en la ventana principal, no funciona en las subventanas, como se puede ver en las impresiones.

La función también sustituye el número de la subventana por "0", es decir, la subventana principal:

De la ayuda de la función: Las coordenadas X e Y se cuentan desde la esquina superior izquierda de la ventana principal del gráfico.

x=5, y=34 también se refiere a la ventana principal, por lo tanto la ventana de salida=0.

Pruebe a aumentar Y por la altura de la ventana principal para "terminar" en una ventana diferente

 
A100:

Error de compilación

¿es aceptable declarar y asignar dentro de while(...) en lugar de comprobar una condición?
 
Kirill Belousov:

De la ayuda de la función: X e Y son coordenadas referenciadas desde la esquina superior izquierda de la ventana del gráfico principal.

x=5, y=34 también se refiere a la ventana principal, por lo que la salida es ventana=0.

Pruebe a aumentar Y por la altura de la ventana principal para "terminar" en otra ventana

Esta no es la respuesta en absoluto, ni la salida.

Especificamos el número de la subventana, que puede ser 3 o 4, pero ¿cómo especificamos las coordenadas?

Hay un claro error en la función.

 
Vitaly Muzichenko:

Esta no es la respuesta en absoluto, ni la solución.

Especificamos el número de la subventana, que puede ser 3 o 4, pero ¿cómo especificamos las coordenadas?

Hay un claro error en la función.

No especificamos el número de subventana, pero la función nos dice (es un parámetro de salida, no de entrada) - en qué subventana del gráfico con el ID especificado está el gráfico de precios y nos dice qué precio y hora corresponden a las coordenadas X,Y especificadas en ese gráfico.
 
Kirill Belousov:
¿Es aceptable declarar y asignar dentro de while(...) en lugar de comprobar la condición?

Que los desarrolladores lo comprueben. C++ compila, aunque la línea (2) [pero no la (3)] puede causar un error en compiladores obsoletos