MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 49

 
Interesting:
Y sin código ¿cómo ayudar?

El código es de 200 líneas, + está sin comentar en absoluto (traduje la función y su referencia a los rieles OOP).

Pensé que alguien se había encontrado con algo similar (yo mismo sospecho de los constructores y destructores, los tengo tanto en la clase base como en las descendientes por defecto (no se especifica en absoluto))

Publicaré el código si lo necesito, de todas formas lo comentaré para mí,

Pero lo publicaré mañana, ahora me voy a dormir.

 

Cuando se llama a ShellExecuteA desde shell32.dll, aparece este mensaje:

Podría llamar a "shell32.dll :: ShellExecuteA, DLL no permitido
Violación de acceso escribir 0x00000000

Yo lo llamo así:

#importar"shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#importar

P.D. se me olvidó habilitar el permiso de llamada a dll, pero si se habilita el permiso de llamada a dll, el terminal se bloquea cuando se ejecuta el probador

 
VOLDEMAR:

Oppa, una voz del pasado .... Por casualidad no tendrás la primera construcción, ¿verdad?

Bild 541, por supuesto.
 
Barbarian:

Cuando se llama a ShellExecuteA desde shell32.dll, aparece este mensaje:

Podría llamar a "shell32.dll :: ShellExecuteA, DLL no permitido
Violación de acceso escribir 0x00000000

Yo lo llamo así:

#importar"shell32.dll"
int ShellExecuteA(int a0,string a1,string a2,string a3,string a4,int a5);
#importar

PS. se olvidó de activar el permiso para llamar a la dll, pero si se activa el permiso para la dll, el terminal se bloquea cuando se ejecuta el probador


Las cadenas son ahora unicode.

Es necesario utilizar la versión unicode de la función

#import "shell32.dll"
int ShellExecuteW(int a0,string a1,string a2,string a3,string a4,int a5);
#import

 
ALXIMIKS:

El código es de 200 líneas, + está sin comentar en absoluto (traduje la función y su referencia a los rieles OOP).

Pensé que alguien se había encontrado con algo similar (yo mismo sospecho de los constructores y destructores, los tengo tanto en la clase base como en las descendientes por defecto (no se especifica en absoluto))

Publicaré el código si lo necesito, de todas formas lo comentaré para mí,

Pero lo publicaré mañana, esta noche duermo.


Si no hay nada secreto, publique el código y los pasos para reproducir o para servicedesk. Gracias

 
stringo:

Las cadenas son unicode.

Es necesario utilizar la versión unicode de la función

Sí, no es tan sencillo, parece que todavía tienes que escribir L delante de los literales de cadena.
 
digits:

ayúdame a entender por qué este código compilado en 509 funciona cuando se llama desde un EA

en EA, el código se llama y se maneja así:

pero si el código se compila en ME desde la compilación 540 entonces el archivo de registro de EA escribe:

Y EA no funciona correctamente o no funciona en absoluto.


¿Has probado en la compilación 541?

He intentado reproducirlo basándome en sus fuentes hasta ahora sin éxito. ¿Puedes publicar todas las fuentes y los detalles (sistema operativo, símbolo, broker, carpeta de instalación, permisos, etc.) en el servicedesk

 
ALXIMIKS:

¿Puede decirme la posible causa del accidente?)

La función principal de cálculo en el indicador la he hecho mediante POO (lo he estado estudiando durante unos días).

Todo funciona bien (a 3000 bares la velocidad de cálculo ha aumentado 2-3 veces).

Pero cuando trato de ejecutar 2 indicadores se bloquea y todo se bloquea ......


Es mejor ir directamente a servicedesk con todas las fuentes y una descripción.
 
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| El script muestra información sobre la herramienta ||
//+------------------------------------------------------------------+
Print("Símbolo=",Símbolo());
Print("Tamaño del punto en la moneda de cotización=",MarketInfo(Symbol(),MODE_POINT));
Print("Paso mínimo de cambio de precio del valor en puntos=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: eliminado

2013.11.15 12:43:11.716 ttt EURUSD,M1: Paso mínimo de cambio de precio del valor en puntos=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Tamaño del pip en la cotización currency=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: cargado con éxito


 
HIDDEN:
void OnStart()
{
//---
//+------------------------------------------------------------------+
//| El script muestra información sobre la herramienta ||
//+------------------------------------------------------------------+
Print("Símbolo=",Símbolo());
Print("Tamaño del punto en la moneda de cotización=",MarketInfo(Symbol(),MODE_POINT));
Print("Paso mínimo de cambio de precio del valor en puntos=",MarketInfo(Symbol(),MODE_TICKSIZE));
}

LOG:

2013.11.15 12:43:11.716 ttt EURUSD,M1: eliminado

2013.11.15 12:43:11.716 ttt EURUSD,M1: Paso mínimo de cambio de precio del símbolo en puntos=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Tamaño del pip en la cotización currency=1e-005.0

2013.11.15 12:43:11.716 ttt EURUSD,M1: Symbol=EURUSD

2013.11.15 12:43:11.707 ttt EURUSD,M1: cargado con éxito


¿Confundido por el formato científico de la salida de datos?

1e-005.0 = 0.00001. Cinco dígitos, después de todo.
Para imprimir en representación decimal, utilice DoubleToStr dentro de Print o vaya a la nueva versión de Print: PrintFormat.

Razón de la queja: