Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1274

 
alex_xss:

1) Personalmente, estoy de acuerdo, y si fuera por mí, simplemente lo desactivaría y prohibiría su inclusión en el código. Pero no puedes)

2) Gracias, pero no he encontrado ninguna solución allí (se resuelve en todas partes a través del objeto OBJ_VLINE, no me conviene), estoy cavando mi propio camino

Puedes hacer una cuadrícula en algún lienzo que a algunos les guste. Ponga el lienzo como fondo (o frente) del gráfico, dibuje sobre él y siga la relación geometría/precio/tiempo.

Es un dolor, pero con algo de gusto y tiempo, puede ser hermoso.

 
Maxim Kuznetsov:

es posible hacer una cuadrícula en algún favorito de Canvas. Disponga el lienzo como fondo (o frente) del gráfico, dibuje sobre él y controle las relaciones geometría/precio/tiempo.

Es doloroso, pero con algo de gusto y tiempo puede ser hermoso.

¿Puedes escribir un ejemplo sencillo en kanvas? por favor

No sé nada al respecto, sólo necesito un rectángulo del tamaño de un gráfico y una línea vertical en él

 
alex_xss:

¿Puedes escribir un ejemplo sencillo en kanvas? por favor

No tengo ni idea, sólo necesito un rectángulo del tamaño de un gráfico y una línea vertical en él.

Deberías llamar a @Nikolai Semko que es mucho mejor con kanwass. Y mientras está en el camino - mira su perfil hay muchas cosas en la lona

 
alex_xss:

¿Puedes escribir un ejemplo sencillo en kanvas? por favor

No sé nada de eso, sólo necesito un rectángulo del tamaño de un gráfico y una línea vertical en él

Es divertido. Este fallo sólo en MT4 y sólo con líneas verticales.

El único misterio es por qué interfiere. No lo habría notado en mi vida.

¿Puede formular el problema con más detalle para entender la mejor manera de resolverlo? La interacción de los objetos gráficos con el lienzo tiene matices.
Por cierto, una de las posibles formas de solucionarlo es cambiar de gestor. ))
Si cree que el cambio de color es una muleta, más lo será para él el kanvas.
Aunque admito que su gerente es un personaje de ficción o una alegoría. ))

 

alex_xss
:

¿Puedes escribir un ejemplo sencillo en kanvas? por favor

No tengo ni idea, sólo me gustaría un rectángulo del tamaño de un gráfico y una línea vertical en él.


No es óptimo en términos de rendimiento (el redibujado ocurre más a menudo de lo que debería - sólo por pereza de complicar el código), pero funciona.

Puedes implementar un lienzo para el tamaño de la pantalla (no la ventana, por ejemplo 1920x1080) y no redibujarla en absoluto. Sólo se necesitarán 8 Mbytes de memoria.
Por cierto, cambiar el color de la rejilla no ayudará.

#include <Canvas\iCanvas.mqh> //https://www.mql5.com/en/code/23840

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   if(id==CHARTEVENT_CHART_CHANGE) DrawGrid();
  }
//+------------------------------------------------------------------+
void DrawGrid() {
  Canvas.Erase(0);
  if (ChartGetInteger(0,CHART_SHOW_GRID)) {
      Canvas.SetBack(false);
      ChartSetInteger(0,CHART_FOREGROUND,0,true);
      uint clr = ColorToARGB((color)ChartGetInteger(0,CHART_COLOR_GRID),255);
      for (int y=0;y<W.Height;y++)
      if (y%6<2 || y%6>4) {
         for (int x=32;x<W.Width;x+=32)
         Canvas.m_pixels[y*W.Width+x]=clr;
      } 
  }
  Canvas.Update();
}
Archivos adjuntos:
 
¿Alguien tiene una función para ordenar un array (cadena) alfabéticamente?
 
Aleksey Vyazmikin:
¿Quizás alguien tenga una función para ordenar un array (cadena) alfabéticamente?

Tengo uno de estos, una vez sable escribió

//===============================================================================================
//--------------------------------- Сортирует строковой массив ---------------------------------+
//===============================================================================================
void ArraySortStr(string &Str[]) {
 string Min;
 int jMin, Size = ArraySize(Str);
  for(int i=0; i<Size-1;i++) {
   Min = Str[i];
   jMin = i;
    for(int j=i+1; j<Size; j++)
     if(Str[j] < Min) {
       Min = Str[j];
       jMin = j;
      }
     if(jMin > i) {
       Str[jMin] = Str[i];
       Str[i] = Min;
     }
   }
 }
 
Vitaly Muzichenko:

Tengo uno de estos, una vez un sable escribió

Gracias.

 
Maxim Kuznetsov:

Deberíamos llamar a líneas verticales.

Es un misterio por qué me impide usarlo. Nunca lo habría notado.

¿Puede formular el problema con más detalle para entender la mejor manera de resolverlo? La interacción de los objetos gráficos con el lienzo tiene matices.
Por cierto, una de las posibles formas de solucionarlo es cambiar de gestor. ))
Si cree que el cambio de color es una muleta, más lo será para él el kanvas.
Aunque admito que su gerente es un personaje de ficción o una alegoría. ))

Sí, un truco genial en el que he pasado casi una semana) Mi culo está en llamas)

¿Por qué iba a ser un obstáculo? Hay un indicador que utiliza triángulos para dibujar. Todo ha quedado muy bien, los colores se han recogido, y ahora te has dado cuenta de semejante bicho.
El indicador no es para uso personal y no tiene sentido publicarlo con este fallo. Tengo que cambiar todo el dibujo, lo cual es bastante complicado porque soy principiante, o arreglar el fallo.

Cambiar la cuadrícula de colores no ayuda, como has notado, yo mismo he llegado a esto) Inicialmente, algunas combinaciones de colores parecían ayudar

Cambiar el color de la rejilla (si sirviera de algo) es una muletilla inaceptable, ya que el usuario puede influir en ella, en caso de que quiera cambiar el color.
La opción de bloquear esta función para el usuario tampoco es adecuada, creo que está claro por qué)))

La tarea: hacer que un usuario vea la rejilla, si está activada, en el mismo color todo el tiempo. Teniendo en cuenta los bugs de MT4 con rejilla vertical + objeto relleno. No sé qué más añadir)

Básicamente el varicón que escribiste arriba está bien. Puedo pulirlo. ¡¡¡Eres un hombre de oro!!! Simplemente no hay palabras para expresar mi gratitud. Te daré cinco dólares por tu ayuda.

Sólo un par de preguntas:
¿Cuánto lag tendré en PCs débiles? Sé que es una pregunta abstracta, pero me encantaría que me lo dijeras.
"Sólo se comerá 8 MB de memoria", supongo que no te refieres a la RAM). Si es así, 8MB no es nada como
iCanvas es una necesidad, una normal no servirá? Es sólo otro usuario diciendo "este archivo aquí, este archivo allí". Son tan tontos que no sabrán dónde ponerlo).

 
Buenos días

Por favor, asesorar - responder a la pregunta

Hay un indicador Bulls.mq4 en Metatrader.
¿Por qué necesita un buffer adicional, y por qué no puede utilizar simplemente una variable intermedia
dd = iMA(NULL,0,InpBullsPeriod,0,MODE_EMA,PRICE_CLOSE,i);
ExtBullsBuffer[i]=dd;

La cuestión es que ExtBullsBuffer[i] se utiliza sólo para almacenar el valor calculado del resultado de la función iMA y en la siguiente línea este valor se asigna al elemento del buffer indicador. El ExtBullsBuffer no se utiliza en ninguna otra parte. Por qué se necesita aquí este buffer intermedio ExtBullsBuffer y no una simple variable, como se marca en verde en la figura
***