error 4756 - página 3

 
BHC:

Mi EA está trayendo u errores extraños con la construcción 778. El volumen de 0.1 es normalizado y claramente no es inválido.

Puede comprobar las propiedades del símbolo de la plata y háganos saber lo que elSYMBOL_VOLUME_MIN y SYMBOL_VOLUME_STEP son por favor. No siempre es suficiente sólo para normalizar, por ejemplo, si su paso de volumen fueron 0,5 entonces normalizar no le ayudará.
 
RaptorUK:
Puedes comprobar las propiedades del símbolo de Silver y hacernos saber cuales son losSYMBOL_VOLUME_MIN y SYMBOL_VOLUME_STEP por favor. No siempre es suficiente con Normalizar, por ejemplo si tu Volume Step fuera 0.5 entonces Normalizar no te ayudaría.

Esta fuente

Print(" volume step: ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_STEP),", volume minimum: ",", ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_MIN)); return;
         

Da esto en los registros del probador...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 paso de volumen: 0.1, volumen mínimo: , 0.1

 
BHC:

Esta fuente

Da esto en los registros del probador...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 paso de volumen: 0.1, volumen mínimo: , 0.1

El problema puede estar en tu informe de errores, no lo he comprobado con mql5 pero esto no funcionará con mql4. ...

if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

en su lugar prueba esto . .

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
Así se han eliminado los errores. Gracias
 
BHC:
Así se han eliminado los errores. Gracias
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

¿Hay algún lenguaje en el que esta sintaxis sea válida?

 
Yo tampoco me lo había encontrado nunca... Creo que lo saqué de la aplicación de alguien de ordercheck. Fue en este sitio...
 
angevoyageur:

¿Hay algún idioma en el que esta sintaxis sea válida?

Quizás, si las variables fueran de tipo bool podría tener algún sentido. He visto a algunas personas hacer cosas similares en el foro de mql4, es un error simple de hacer.
 
RaptorUK:
¿Este fue el hilo que encontraste?https://www.mql5.com/en/forum/10850 reporta el mismo problema que yo estoy teniendo

No había visto este hilo.

La solución es como te dije, con el manejador de eventos OnTradeTransaction() (NO UTILICES ESTE CÓDIGO TAL CUAL, ES DE PRUEBA):

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
                        {

    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {

        if (execution == SYMBOL_TRADE_EXECUTION_MARKET) {
            if (!trade.PositionModify(_Symbol, _sl, _tp))
                if (debugMode) {
                    Print("Modify SL & TP failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
                    Print("Deal ticket : ", trans.deal);
                }
            else
                if (debugMode) Print("Modify SL & TP executed successfully. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(),")");
        }

    }
}   

Esto funciona. _sl y _tp son variables globales, seguramente es mejor procesarlas localmente. trade es de la clase CTrade. Supongo que puedes hacer lo mismo con OrderSend().

 
angevoyageur:

No había visto este hilo.

La solución es como te dije, con el manejador de eventos OnTradeTransaction() (NO UTILICES ESTE CÓDIGO TAL CUAL, ES DE PRUEBA):

Eso funciona. _sl y _tp son variables globales, seguramente es mejor procesarlas localmente. trade es de la clase CTrade. Supongo que se puede hacer lo mismo con OrderSend().

Me mantengo alejado de la clase CTrade en un intento de aprender lo básico, nunca he usado POO así que las clases, estructuras, etc son parte de mi curva de aprendizaje con mql5.

Estoy seguro de que OnTradeTransaction() ofrecería una solución, pero me parece que es bastante horrible de usar incluso para el simple EA en el que estoy trabajando, tampoco se menciona la necesidad de usarlo en la documentación de OrderSend() y creo, lo confirmaré, que he visto el mismo problema en el Probador de Estrategias, no estoy seguro de cómo podría ocurrir exactamente, lo probaré de nuevo con algún informe de error más añadido para asegurarme.

 
RaptorUK:

Me mantengo alejado de la clase CTrade en un intento de aprender lo básico, nunca he usado OOP así que las clases, estructuras, etc son parte de mi curva de aprendizaje con mql5.

Estoy seguro de que OnTradeTransaction() ofrecería una solución, pero me parece que es bastante horrible para el uso, incluso para el simple EA en el que estoy trabajando, tampoco se menciona la necesidad de usarlo en la documentación de OrderSend() y creo, lo confirmaré, que he visto el mismo problema en el Probador de Estrategias, no estoy seguro de cómo podría ocurrir exactamente, lo probaré de nuevo con algún informe de error más añadido para asegurarme.

Entiendo su posición acerca de OOP.Siempre lleva más tiempo que el enfoque "tradicional" y es realmente útil para proyectos grandes (o medianos).

Estoy muy interesado en saber si existe una solución "clásica" para nuestro problema.

Razón de la queja: