Errores, fallos, preguntas - página 1335

 

En el código fuente del indicador Fractals.mq5, existen estas entradas para el cálculo de los fractales (líneas 74 y 79):

//---- Upper Fractal
if(high[i]>high[i+1] && high[i]>high[i+2] && high[i]>= high[i-1] && high[i]>= high[i-2])

//---- Lower Fractal
if(low[i]<low[i+1] && low[i]<low[i+2] && low[i]<= low[i-1] && low[i]<= low[i-2])

En estos cálculos, me confunden los signos de igualdad en >= y <= (en rojo).

Siempre he pensado que un fractal ascendente se forma cuando, en una combinación de al menos cinco barras, la barra media tiene el máximo más alto, es decir, está siempre por encima (no por encima o igual) de los dos máximos vecinos de los lados izquierdo y derecho. Con el fractal hacia abajo respectivamente. En la parte anterior del código se puede ver que se permite la igualdad. Por favor, compruebe si hay un error en el código Fractals.mq5.

 

Tengo señal, la monitorización muestra un volcado del 100%, la cuenta está bien, llevo tres días llamando por teléfono, tanto al Service Desk como al personal de la empresa. No hay respuesta...

¿Cómo resolver el problema....?

 
Stanislav Olhovsky:

Tengo señal, la monitorización muestra un volcado del 100%, la cuenta está bien, llevo tres días llamando por teléfono, tanto al Service Desk como al personal de la empresa. No hay respuesta...

¿Cómo resolver el problema....?

No debe retirar más de lo que ha ganado, pues entonces la curva de saldo no llegará a cero.
 

He escrito a "Innovaciones en favoritos" y hay silencio. Escribiré aquí:

Windows 10 x64, Mozilla Firefox 39.0. No puedo enviar imágenes o archivos adjuntos a mi cuenta personal...

 
Karputov Vladimir:
No debe retirar más de lo ganado, ya que entonces la curva de saldo no llegará a cero.

La señal ha estado funcionando durante casi 4 meses, sólo adiciones ribate, nadie ha retirado nada allí, todo era normal, el crecimiento estable... En el terminal, los datos son normales y en otra supervisión en línea ....

Se adjunta captura de pantalla de mybook, ahí todo es normal.

Respuesta del corredor, el historial se almacena durante 1 mes, pero entonces hace dos o tres meses en las señales habría sido el mismo...

Archivos adjuntos:
Error.png  36 kb
 
Se trata de nuevo de lo "privado". Las juntas continúan...
 

Queridos desarrolladores

El indicador Bands y el indicador iBands tienen lecturas diferentes. En el indicador Bands la desviación estándar se calcula con la función StdDev_Func, mientras que en el iBands se calcula con el método GetData. Al comparar cómo se dibuja el gráfico, podemos ver una gran diferencia en el estado de los búferes responsables de los niveles de desviación. Me enfrenté a este problema en MQL4, tal vez es el mismo en MQL5.

 

Antes no le había prestado mucha atención, pero ahora, al trabajar con matrices grandes de objetos de clase, he notado un consumo de memoria demasiado grande. Lo he comprobado mediante sizeof() y una clase absolutamente vacía ocupa 16 bytes. Y teniendo en cuenta que las clases aquí son gestionadas, añadimos 8 bytes más por puntero. El total es de 24 bytes. Es demasiado caro.

He mirado la documentación y he visto lo que he encontrado allí:

объекты классов всегда имеют таблицу виртуальных функций, даже если в классе не объявлено ни одной виртуальной функции.

La cuestión es por qué las clases simples (las que no participan en la herencia) necesitan la tabla de funciones virtuales, ya que todo se sabe sobre estas clases en la fase de compilación.

Resulta que los métodos en ellos se llaman de la misma manera que los métodos virtuales, es decir, hay una redirección adicional de acceso a través de la tabla. ¿Y dónde está la alabada optimización del compilador? ¿Cómo podemos afirmar después de esto alguna comparación de rendimiento con C++?

 

Te equivocas.

Si un método no se describe como virtual, se llama directamente. Además, hay optimizaciones para eliminar la virtualidad. El destructor es siempre virtual, lo que lleva a una tabla virtual.

Lo de los 24 bytes es una afirmación extraña - la referencia al objeto no se refiere al tamaño.

Las clases en lenguajes gestionados/seguros siempre contienen metainformación, así que todo es razonable aquí. Si quieres un tamaño puro, utiliza estructuras.

 
Renat Fatkhullin:

El destructor es siempre virtual, lo que resulta en una tabla virtual.

Entonces, ¿por qué no debería optimizarse el destructor? Sólo por el destructor tenemos que almacenar 8 bytes extra...

Lo de los 24 bytes es una afirmación extraña: la referencia al objeto no tiene que ver con el tamaño.

Bueno, es que no sé cómo se implementa todo allí. Supongamos que tienes un array de objetos:

CObj array[];

¿El sistema almacena referencias (punteros) para cada elemento?

Si quieres un tamaño puro, utiliza estructuras.

Pero no se puede tomar un puntero a una estructura y eso reduce la conveniencia de usarla. Por eso a veces hay que hacer una elección dolorosa... Si se logra reducir el tamaño de la clase, sería maravilloso. Y si se tiene un puntero a la estructura también, todo estará bien).