Errores, fallos, preguntas - página 2266

 
fxsaber:
Entonces, ¿hemos resuelto el problema de las "plazas"?

Por supuesto, si se utiliza un único lienzo no escalable, simplemente no hay.

Quiero publicar en KB una simple clase iCanvas, que hereda de la clase CCanvas, que crea un lienzo de pantalla completa cuando se declara por defecto y luego lo cambia automáticamente si el tamaño de la ventana cambia.

También habrá algunas características adicionales en forma de dibujar formas de lienzo no por coordenadas x, sino por precio, número de barra o tiempo. Es decir, añadiremos las funciones X(datatime T), X(double bar), Y(double price).
Para que las kanvas no le parezcan tan estresantes a mucha gente.

 
Nikolai Semko:

Por supuesto, si se utiliza un único kanvas sin escala, simplemente no existen.

Siempre he tenido un kanvas y el cuadrado rojo seguía apareciendo. Me esforcé durante mucho tiempo por entender las razones, pero nunca llegué a hacerlo.

 
fxsaber:

Siempre he tenido un kanvas y el cuadrado rojo seguía apareciendo. Me esforcé durante mucho tiempo por entender las razones, pero nunca llegué a hacerlo.

Si redimensiona el kanvas, es decir, si lo abre de nuevo o utiliza la función Resize, debe utilizar el kanvas para toda la ventana para evitar esos cuadrados rojos.

#include <Canvas\Canvas2.mqh>

int OnStart(void)
  {
    int Width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
    int Height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
    CCanvas canvas;
    if(!canvas.CreateBitmapLabel("SampleCanvas",0,0,Width,Height,COLOR_FORMAT_ARGB_NORMALIZE)) Print("Error creating canvas: ",GetLastError());
  ....
  }

Recuerda también que la función de borrado es muy rápida - la pantalla completa FullHD tardará ~0,5 milisegundos.

Y la actualización es más lenta ~5-7 milisegundos en pantalla completa FullHD.
Sí - esta opción es más costosa, ya que Actualizar el tamaño del kanvas de digamos 500x200 tomará ~0.5 milisegundos.

Así que es una cuestión de conveniencia.

Personalmente ahora casi siempre uso kanvas a pantalla completa, ya que tengo un margen de 200 fps con Actualización = 5 milisegundos.

 

¿Hay alguna forma de arreglar esto para la próxima compilación?

Cuando cambio a otra cuenta, el gráfico de caracteres personalizados pierde las barras: "Esperando actualización". No se pueden solicitar barras. Al mismo tiempo las garrapatas - no hay problema.

Después de reiniciar el Terminal, por supuesto, las barras del gráfico están disponibles.

Me gustaría que las barras de símbolos personalizadas siguieran estando disponibles sin necesidad de reiniciar después de cambiar a otra cuenta.

 
Si creas una "herramienta sintética" y el ordenador se bloquea, la herramienta sintética no se guarda. Una cosa pequeña, pero inconveniente. Por favor, arréglalo.
 
Resulta que la prueba retrospectiva termina en el penúltimo (no el último, como podría pensarse) tick del intervalo de prueba.
 

Error durante la ejecución:

#define  MACRO( int ) int
void f( uint ) { Print( 1 ); }
void f(  int ) { Print( 2 ); }
void OnStart()
{
        MACRO( uint ) x = 0;
        f( x );
}

Resultado: 2 Esperado: 1

 

Debe ser una aberración psicológica saber, en cualquier momento, el número de la última compilación de MT5.

No conozco los tipos de cambio actuales, pero siempre conozco la cifra. Pregúntame hoy, hace un mes, hace un año...

 
Error de compilación:
class A {
template<typename T>
        A *StringFormat( string, T ) { return &this; }
        A *f() { return StringFormat( "", 1 ); } //Error: 'StringFormat' - object pointer expected
};
 
De todos modos, el historial de tildes de los personajes personalizados desaparece después de que se les aplique el Comprobador. Debería estar arreglado.