Errores, fallos, preguntas - página 896

 

¡Saludos!

MT5 Optimizer - ¿Calcula CustomMax correctamente?

Estoy ejecutando el optimizador (optimización genética) en MT5 5.00 build 722 y accidentalmente noté que los resultados de la optimización se calculan de una manera inesperada.

El Asesor Experto devuelve OnTester():

Profit * Trades * (1/(MaxEquityDDPercent+1)) * RecoveryFactor

Dónde:

   double Profit = TesterStatistics(STAT_PROFIT);

   double Trades = TesterStatistics(STAT_TRADES);

   double MaxEquityDDPercent = TesterStatistics(STAT_EQUITY_DDREL_PERCENT);

   double RecoveryFactor = MathAbs(TesterStatistics(STAT_RECOVERY_FACTOR));

Se esperaba que con un factor de beneficio y recuperación más pequeño el resultado sería menor, pero no es así - ver la captura de pantalla.


¿Es algo que no he entendido bien?

Archivos adjuntos:
 
MetaDriver:

Bueno, vamos a moverlo:

Pero me temo que no te va a gustar. A mí, por ejemplo, no me gusta: el gráfico se mueve y se duplica. Y quería hacerlo mejor: moverlo suavemente al lugar correcto...

// Lo interesante es que funciona el doble de rápido con ChartRedraw() que sin él. Al mismo tiempo, se tuerce más.

Sigue habiendo un problema con ChartNavigate(). ¿Se arreglará algún día? ¿O no se considera un error?

¿Existe ya un post sobre este tema en Service Desk? ¿O para añadir más? ))

 

Error de ejecución: desbordamiento de pila

class A {
        static  bool OrderSend( const MqlTradeRequest& request, MqlTradeResult& result, bool async_mode = false )
	void function();
};
void A::function()
{...
	OrderSend(...) // ошибка выполнения возникает здесь
	A::OrderSend(...) // не помогает
...}

Si sustituimos OrderSend por cualquier otro nombre, todo va bien

la presencia de estática no afecta al error

llamando a A::OrderSend()- el error no se ve afectado

 
A100:

Error de ejecución de desbordamiento de pila

Si sustituyes OrderSend por cualquier otro nombre, no pasa nada


porque el contexto debe ser resuelto

::Envío de pedidos

 

Creo que no estoy llamando a ::OrderSend, sino a A::OrderSend()

debería funcionar

 
A100:

Creo que no estoy llamando a ::OrderSend, sino a A::OrderSend()

¿en qué línea estás pensando?

que acaba de

void A::function()
{...
	OrderSend(...) // ошибка выполнения возникает здесь
вызывается именно ваша A::OrderSend
Si quieres llamar a la terminal, haz :: antes de Ordersend
 
Gracias, he encontrado la razón - retiro la pregunta - yo mismo la he cerrado
 
A100:
Gracias, he encontrado la razón - quito la pregunta - lo he puesto en bucle yo mismo

Entiendo que te llamaste a ti mismo en tu Ordersend sin ::

A mí me pilló enseguida, cuando redefiní Imprimir y Comentar en la clase. ahora lo hago siempre :)

 
sergeev:

Tengo entendido que te llamaste a ti mismo en tu Ordersend sin ::

Bueno, sí, aunque A::OrderSend tiene 3(tres) parámetros, peroeste último es el predeterminado y el compilador no podría (ni debería) distinguir de ::OrderSend por el número de parámetros
 
¿Pueden decirme cómo crear una encuesta en el foro?