Errores, fallos, preguntas - página 1405

 
Tapochun:
¿Puede decirme, por favor, qué valores de spread se pasan a la matriz spread[] cuando se llama a OnCalculate() en el indicador? ¿Valores máximos/mínimos/medios por vela?
Los que el terminal recibe del servidor.
 

Ha surgido una pregunta sobre el orden de carga de la .dll. Si se declara

#import "Test1.dll" //1
#import "Test2.dll" //2
#import

se cargarán en orden inverso, es decir, "Test2.dll" primero. Parece que hay una diferencia. Resultó que hace una diferencia y en algunos casos (.dll requiere un cierto orden de carga) falla: Sappot load 'Test1.dll'.
La cuestión
es si hay que cambiar el orden de carga a directo, lo que desde la perspectiva del código sería más lógico - o asegurar que este orden no se cambiará en el futuro (para que el código ajustado al orden inverso no deje de funcionar de repente). Por el momento hay que ajustar el código al orden inverso.

 

Construye 1191. Error de compilación: error de generación de código


Ni siquiera sé dónde buscar la razón. Pero en la build 1162 todo está bien.

 
A100:

Construye 1191. Error de compilación: error de generación de código


Ni siquiera sé dónde buscar la razón. Pero en la build 1162 todo está bien.

Por favor, envíe el código a servicedesk.
 
Alexander:
Por favor, envíe el código a servicedesk.

Está muy distribuido - intentaré ponerlo todo en un solo archivo.

Otro código - fíjate en el tiempo - es probablemente 20 veces mayor

 
Ilyas:

Hasta la fecha se conocen dos casos:
1) En la operación bool &= (expresión bool)
2) Una coma de más en las secuencias de inicialización: val={ {...},{...}, }

Antes no tenía problemas cuando tenía la compilación 1159. ¿Cuándo podemos esperar correcciones?

 

Error de generación de código

He enviado el código fuente a servicedesk: #1332553

 
Alexander:
Por favor, envíe el código a servicedesk.

error de generación de código


//build 1191
class A {};
class B : public A {};
void f( A& a ) {}
B *h() { return new B; }
void OnStart()
{
        f( h() );
}

Por favor, tenga cuidado de no acabar como he descrito en el bolsillo. Si puedes hacerlo sin * como funciona ahora y funcionaba antes en el siguiente ejemplo

//build 1191
class A {};
void f( A& a ) {}
A *h() { return new A; }
void OnStart()
{
        f(  h() ); //нормально
        f( *h() ); //нормально
}
por favor, hágalo, si no es así - tal vez tenga sentido retroceder todo antes de empezar a usar la innovación

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

Bichos, errores, preguntas

A100, 2015.08.26 10:35

De hecho, está ofreciendo una entrada simple y sencilla

a = (b + c) - d*e + f;
sustituir por
*a = (*b + *c) - *d**e + *f;
¿Y esto para qué? Para que pueda escribir
bool c = *a == *b;

mientras que una función especial puede ser utilizada para comparar punteros a la igualdad, y todas las demás operaciones aritméticas (suma, resta, multiplicación, etc.) con punteros no tienen ningún significado en sí, y son interesantes sólo en términos de poder sobrecargarlos.

Sólo creando una base matemática y una clase derivada, redefiniendo varias (en lugar de una o dos) operaciones aritméticas, haciéndolas virtuales y luego probando expresiones complejas (no sólo a = b + c) en su base - sólo esto te acercará a la comprensión de que todo se hace ahora de manera ÓPTIMA. Mientras tanto, estás razonando en un nivel de entrada.

Si se lleva la comparación de punteros de igualdad a una función separada, sólo queda un (!) cuello de botella

class A {};

A *a = b; //однозначно присвоение указателю значения
a = b;    //неоднозначно
que, sin embargo, también debe tratarse como una asignación y no como una llamada a operator=(), porque actualmente no existe otra sintaxis para asignar un valor a un puntero, mientras que a.operator=( b ) también puede llamarse explícitamente
 
A100:


Otro código - presta atención al tiempo - debe haber crecido 20 veces

Este es un nuevo compilador optimizador para MQL5 (MQL4 no lo tiene).

Hay que pagar por un mejor código de destino con mayor tiempo de compilación. Algunas funciones largas que constan de cientos de líneas son muy difíciles de optimizar.

 
Renat Fatkhullin:

Así es como funciona el nuevo compilador optimizador de MQL5 (está ausente en MQL4).

Para obtener un mejor código de destino hay que pagar por un mayor tiempo de compilación. Algunas funciones largas, que constan de cientos de líneas, son muy obstinadas en su optimización.

¿Es realmente necesario? ¿No es el precio de este "código de alta calidad" demasiado alto? Disminuir la velocidad de compilación decenas de veces en aras de una ganancia de rendimiento relativamente pequeña... Sobre todo porque en muchos casos, esta ganancia no es muy importante, y alargar el tiempo de compilación es una tortura para el programador.

¿No sería mejor hacer las opciones de compilación "Debug" y "Release"?