Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 317

 
artmedia70:
//+------------------------------------------------------------------+
//|                                                    trendyxV1.mq5 |
//+------------------------------------------------------------------+
#include <Canvas\Canvas.mqh>
CCanvas LomLine;
int KoorX[4]={100,200,350,480};
int KoorY[4]={100,150,380,150};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   LomLine.Destroy();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   LomLine.CreateBitmapLabel("trendyx",0,0,800,800,COLOR_FORMAT_ARGB_RAW);
   LomLine.PolylineAA(KoorX,KoorY,ColorToARGB(clrRed, 155),STYLE_SOLID);
   LomLine.Update();

  }
//+------------------------------------------------------------------+

,.

 
pako:

,.

 
EA ha dejado de abrir posiciones porque "número entero no válido como parámetro 9 para la función 'OrderSend'". ¿Puede alguien explicar qué es esto? Presumiblemente se debió a una actualización del terminal MT4.
 
Katerina:
EA ha dejado de abrir posiciones porque "número entero no válido como parámetro 9 para la función 'OrderSend'". ¿Puede alguien explicar qué es esto? Es de suponer que se debe a la actualización del terminal MT4.
Por favor, adjunte el código donde se llama a la función"OrderSend". Supuestamente, el número mágico no está configurado correctamente.
 
Ah, bueno, ya lo he arreglado. Gracias por sus comentarios.
 
Me pregunto si se puede añadir una animación al gráfico en MQl5, como un tipo que está golpeando las velas, en la señal del indicador o simplemente porque
 
aleks557:
Me pregunto si se puede añadir una animación al gráfico en MQl5, como un tipo que está golpeando en la vela, en la señal del indicador o simplemente así
La animación tendrá que crearse manualmente a partir de las numerosas imágenes .bmp alternadas. Suelen dibujarse en un lienzo a partir de una serie de puntos.
 
barabashkakvn:
La animación tendrá que ser creada manualmente a partir de muchas imágenes .bmp sucesivas. O dibujar a partir de una matriz de puntos en el lienzo.

Saludos, Enanito, ¿dónde está"KANVAS"? Sé que la animación se hace en Photoshop, pero "KANVAS"no ha sido, ¿cómo compro una entrada allí?

Porque Google me llevó a una especie de lechería.

 
aleks557:

Saludos, Enanito, ¿dónde está"KANVAS"? Sé que la animación se hace en Photoshop, pero "KANVAS"no ha sido, ¿cómo compro una entrada allí?

No lo sé, pero lo he buscado en Google y he encontrado una lechería.

CCanvas esuna clase para crear gráficos personalizados.

Ejemplos de uso, la ruta de MetaEditor: ...\MQL5\Scripts\N-Ejemplos\Canvas\

 
aleks557:
Me pregunto si se puede añadir una animación en MQl5 a un gráfico.

Aquí hay más:

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

Preguntas de los novatos

Renat, 2012.10.20 14:30

¿Sabías que el backbuffering en nuestros kanvases y la vinculación con un objeto en la pantalla son perfectos?

Podemos dibujar marcos perfectamente, de forma rápida y sin artefactos. Echa un vistazo al ejemplo de vídeo basado en la generación de secuencias de fotogramas en OpenCL Test.

Utiliza una táctica agradable:

  1. Crear un objeto gráfico de etiqueta de mapa de bits en el gráfico

       string objname ="OpenCL_"+IntegerToString(ChartID());
       string resname ="::Mandelbrot_"+IntegerToString(ChartID());
    //--- creating the object for graphics display
       ObjectCreate(0,objname,OBJ_BITMAP_LABEL,0,0,0);
       ObjectSetInteger(0,objname,OBJPROP_XDISTANCE,4);
       ObjectSetInteger(0,objname,OBJPROP_YDISTANCE,26);
    

  2. Crea un recurso gráfico vacío en memoria y lo vincula a un objeto previamente creado:

    //--- create initial empty picture
       uint buf[];
    
       ArrayResize(buf,SIZE_X*SIZE_Y);
       ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
       ObjectSetString(0,objname,OBJPROP_BMPFILE,resname);
    
    Aquí es donde ocurre la magia. El objeto gráfico recibe un enlace directo al recurso gráfico. Y este enlace es inteligente con el almacenamiento en caché, ya que fue creado especialmente para la paginación rápida y el manejo de backbuffer.

  3. Ahora puedes dibujar fácilmente en tu buffer sin preocuparte de enlazar con un objeto en la pantalla

    //--- рисуем что хотим в buf
    ....
    
  4. Y ahora es el momento de mostrar este mapa de bits actualizado en la pantalla

          //--- saving the frame in memory and drawing it
          ResourceCreate(resname,buf,SIZE_X,SIZE_Y,0,0,SIZE_X,COLOR_FORMAT_XRGB_NOALPHA);
          ChartRedraw();
    
    Para ello, "reconstruimos" el recurso (en realidad no se produce ninguna reconstrucción, porque todos los tamaños son iguales), copiamos en él el nuevo mapa de bits y se incrementan los contadores de cambios de este recurso.

    Tenga en cuenta que el objeto gráfico objname en sí no se toca de ninguna manera, ya que ya está asociado con el recurso.

    Luego llamamos a Screen Redraw a través de ChartRedraw que requiere el dibujo del objeto gráfico. Está vinculado a nuestro recurso que controla mediante el contador de alteraciones del mapa de bits. Si el contador de cambios guardado para el objeto gráfico no coincide con el contador de cambios del recurso, el mapa de bits se copiará automáticamente en el objeto gráfico y se visualizará de forma protegida. Si los contadores coinciden, la imagen se muestra sin cambios.

Se trata de un método sencillo de trabajo seguro (desde el acceso simultáneo desde MQL5 y el propio sistema de renderizado del terminal) y rápido con los cuadros de renderizado.

Tienes que probarlo.
Razón de la queja: