Librerías: Easy Canvas - página 17

 
Nikolai Semko #:
Última versión 1.53

¡Nicolás, acabo de descargar la lib, la probaré, muy interesante y gracias! ¡¡¡¡Y en el ZIP de kodobase sigue estando la versión antigua 1.09!!!! Menos mal que leí los comentarios y me la descargué directamente. ¡Si yo fuera tú, definitivamente publicaría sobre este error pendiente en el hilo MT5, mql5, mql5.com sugerencias de mejora!

MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
  • 2013.06.15
  • www.mql5.com
удерживая клавишу CTRL при перетаскивании точки привязки. Модифицировать OnChartEvent для обработки нажатия на кнопку. Всплывающее окно появляется автоматически после третьего символа или вы можете вызвать его с помощью CTRL SPACE
 
Alexey Volchanskiy #:

¡Nicolás, acabo de descargar la lib, la probaré, muy interesante y gracias! ¡¡¡¡Y en el ZIP en kodobase todavía hay una versión antigua 1.09!!!! Menos mal que leí los comentarios y me la descargué directamente. ¡Si yo fuera tú, definitivamente publicaría sobre este bug pendiente en el hilo MT5, mql5, mql5.com sugerencias de mejora!

Gracias Alexey!
que escribí ya hace más de 4 años.

 
Nicholas, ¿es posible utilizar su biblioteca para dibujar "rectángulos" que cambian dinámicamente unidos a velas para reemplazar los objetos utilizados actualmente de tipo OBJ_RECTANGLE. Es necesario mostrar la superposición de rectángulos (es decir, la presencia de transparencia) de una manera visualmente hermosa.
Tal vez hay un ejemplo de tal uso?
 
Peter Vorobyev OBJ_RECTANGLE. Es necesario mostrar la superposición de rectángulos (es decir, la presencia de transparencia) de una manera visualmente hermosa.
Tal vez hay un ejemplo de tal uso?

Por supuesto que sí, pero depende del caso.
Si no hay muchos rectángulos (~<1000) y no es necesario cambiar su tamaño a menudo, se puede hacer con CCanvas estándar. En este caso, cada rectángulo es un canvas separado ligado a coordenadas precio-tiempo. Será necesario ocuparse de "limpiar después", para que los objetos no se multipliquen incontroladamente.
Si hay muchos objetos y cambian a menudo sus propiedades, será más fácil utilizar esta biblioteca.
En este caso se crea un array de estructuras - rectángulos virtuales con las propiedades necesarias y se muestran en el gráfico visible al producirse el evento de cambio del gráfico o al producirse el evento de cambio de alguna propiedad.
Esta es la variante más productiva, y el objeto de kanvas (bitmap) aquí será uno, estirado en toda la pantalla. Pero en esta variante habrá un ligero retraso de los objetos gráficos del gráfico durante el desplazamiento vertical y horizontal.


Un ejemplo adecuado, tal vez, se puede tomar de la misma biblioteca Test_iCanvas.mq5. En este ejemplo, hay un rectángulo semitransparente con texto ligado a barras. Si quieres que los rectángulos semitransparentes mezclen colores al superponerse, necesitarás una función para dicho rectángulo. Si lo necesitas, puedo ayudarte a hacerlo rápidamente, o puedes hacerlo tú mismo, utilizando la función de la clase iCanvas LineDA, LineHorizontalA es mejor.

ZY no el ejemplo Test_iCanvas.mq5 no es muy adecuado, porque implementé todo allí de una manera torcida a través de un temporizador. Necesito reescribir este ejemplo. Fue una solución tonta que me confundió.
Bueno, mira más ejemplos aquí y aquí. Pero en estos ejemplos no hay vinculación a precio-por-tiempo. Para eso necesitas usar funciones X e Y para traducir las coordenadas precio-tiempo a coordenadas XY.
 
gracias por la respuesta detallada.
¿tiene previsto implementar en su biblioteca un objeto - rectángulo que permita dibujar un rectángulo (crear/mover/modificar) con propiedades especificadas como un objeto gráfico habitual?
 
Peter Vorobyev dibujar un rectángulo (crear/mover/modificar) con propiedades especificadas como un objeto gráfico habitual?

No está muy claro lo que quieres decir.

Hay diferentes funciones para dibujar rectángulos. Basta con crear, mover y modificar.

Sí, puedes crear cualquier objeto como una estructura o una clase en tu código de terceros, en la que puedes escribir un método de salida a la pantalla utilizando esta clase iCanvas o CCanvas, pero no tiene sentido hacer todas las posibles variaciones de implementaciones dentro de la librería gráfica. Solo las primitivas son importantes. Yo, por supuesto, tengo mi propia función extendida de esta librería. Es muchas veces más grande que esta, pero nadie la entenderá excepto yo. La escribí para mí.

 
Nikolai Semko #:

No sé muy bien a qué se refiere.

Hay diferentes funciones para dibujar rectángulos. Basta con crear, mover y modificar.

Sí, puedes crear cualquier objeto como una estructura o una clase en tu código de terceros, en la que puedes escribir un método de salida a la pantalla utilizando esta clase iCanvas o CCanvas, pero no tiene sentido hacer todas las posibles variaciones de implementaciones dentro de la librería gráfica. Solo las primitivas son importantes. Yo, por supuesto, tengo mi propia función extendida de esta librería. Es muchas veces más grande que esta, pero nadie la entenderá excepto yo. La escribí para mí.

Gracias, entiendo. Después de familiarizarme con la biblioteca en más detalle y si hay una pregunta específica, entonces voy a preguntar.

 
Peter Vorobyev #:

gracias, entiendo. despues me familiarizare con la biblioteca en mas detalle y si hay una pregunta especifica entonces preguntare.

aquí es un ejemplo EA adecuado para usted:

#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/es/code/22164

//+------------------------------------------------------------------+
int OnInit() {
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}
//+------------------------------------------------------------------+
void OnTick() {
   Draw();
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
   if (id == CHARTEVENT_CHART_CHANGE || id == CHARTEVENT_MOUSE_MOVE) Draw();
}
//+------------------------------------------------------------------+
void Draw() {
   static uint last = 0;         //
   uint cur = GetTickCount();    // Necesario para optimizar el rendimiento
   if (cur-last<25) return;      // Especialmente importante para el probador
   last = cur;                   //
   if (Canvas.tester) ChartChanged();   // para un funcionamiento correcto en el comprobador.
   Canvas.Erase(0x00FFFFFF);   // dicha máscara es necesaria para la correcta salida de la fuente
   Canvas.CurentFont("Calibri Light", 16,16,0xFF000000);
   for (int shift = -1000; shift<=1000; shift+=50 ) {
      uint clr = (Canvas.Grad((shift+1000.0)/2000.0) & 0x00FFFFFF)|0x40000000;
      int bar = Round(Canvas.Bar(double(_MouseX+shift)));
      double price  = iHigh(_Symbol,PERIOD_CURRENT,bar);
      int x = int(Canvas.X(double(bar)));
      int y = (int)_Y(price);
      Canvas.FillRectangleA(x,y,x+150,y-60,clr);
      
      _CommXY(x+5,y-55,"high = "+DoubleToString(price,_Digits));
      _Comment("bar = "+(string)bar);
      _Comment("time = " + TimeToString(iTime(_Symbol,PERIOD_CURRENT,bar))); 
   }
   Canvas.Update();
}


iCanvas versión 1.54 se requiere para trabajar.

Archivos adjuntos:
 
Nikolai Semko #:

Se necesita la versión 1.54 de iCanvas para funcionar.

Nikolai Semko #:
Última versión 1.53

También estoy interesado.

 
Edgar Akhmadeev #:

Yo me preguntaba lo mismo.

Ya actualizado y adjunto en post anterior