Adiós robot - hola marasmo - página 3

 

Estaba receloso de cambiar a nuevas construcciones, pero resultó que todos los indicadores, EAs y scripts funcionaban tal cual. Sin embargo, se ha compilado con una serie de advertencias. Pero el nuevo código compilado funciona mucho más rápido. Las únicas novedades que utilizo son OnTimer(), las nuevas opciones para trabajar con archivos, el aumento del número de búferes indicadores, algunas funciones nuevas (su aumento es sólo cuestión de tiempo). Muy útil es el control de los desbordamientos de matrices con indicación de la cadena en el código. Antes era: divide por cero y mira donde quieras. Y sería aún peor si el error no se produjera.

"Lo nuevo en MQL4" puede ser escrito para aquellos que recuerdan lo antiguo. ¿No hay más novatos?

Si quieres darles una descripción de MQL4 Lite, puedes dejar fuera de la documentación todo lo que es fundamentalmente nuevo e innecesario: estructuras, clases, recursos, punteros a objetos, OOP, depurador, señales, eventos gráficos, todas las funciones que utilizan este nuevo conocimiento, etc. Todo lo que quedará atrás no será mucho más complicado que el antiguo MQL4. Para modificar ligeramente el libro de texto para el nuevo, que no fue limpiado.

.

 

Renat 09.09.2014 02:55 #

Puedes volver a argumentar metódicamente, explicar sobre la multiplicación de funciones, guardar el código antiguo, arreglar los errores, etc. Esto se ha hecho muchas veces, se ha descrito en artículos y se ha discutido en foros. Pero es más fácil y preciso decir que el autor está absolutamente equivocado y que se inventa problemas de la nada.

¡Respuesta a Renat!

----------------------------------------------------------------

¡Estás tratando de ponerme en ridículo!

Usted, como promotor, sirve a los bancos,

¡no la comunidad! Estás construyendo un coche de carreras

¡con una bicicleta infantil a pedales!

Así que tengo que darte los hechos.

Pregunta:

¿Dónde está User32. dll

con las funciones para llamar al script desde el eXpert, el indicador.

¡Todo ha desaparecido! Abajo está la prueba.

el propio enlazador me hizo un ehpert de pago, que

para llamar al script cuando sea necesario.

ahora el script sólo se llama manualmente.

la llamada en sí está rodeada de diferentes ventanas-permite llamar a

o quiere invocar un segundo script - la ventana "¿quieres dejar el

Sólo es posible la negociación manual.

¿Qué debe hacer un robot? ¿Y todos los escritores robots?

No estoy en contra de la OOP y el rendimiento supuestamente más rápido de MT4.

Si quisieras acelerar MT4, habrías limitado la

¡Uso 5-6 y consigo cientos de citas!

Los símbolos innecesarios son basura.

y sólo vienen! Ahí es donde la velocidad y la capacidad de respuesta

Pero es malo para los bancos.

Pansa

Importación de funciones de User32. Si su propósito no es bastante inmediato

// claro, entonces documentarlo aquí francamente no va a ayuda mucho. Requiere

// "Permitir la importación de DLL" para ser activado.

#importar "user32.dll"

int RegisterWindowMessageA(string MessageName);

int PostMessageA(int hwnd, int msg, int wparam, string Name);

void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#importar

// El parámetro hWnd para todas estas funciones se obtiene mediante WindowHandle().

// Por ejemplo, un EA/script puede obtener el control de su propio gráfico utilizando

// WindowHandle(Symbol(), 0). Si el EA/script sabe que otro gráfico

// está abierto, entonces se puede obtener su mango utilizando el símbolo conocido y

// plazo de tiempo. Comportamiento imprevisible si hay varios gráficos para

// el mismo símbolo y marco temporal. AutomaticallyAcceptDefaults borra

// la ventana de configuración del nuevo indicador/EA/script simulando

// una pulsación de la tecla Enter tras una pequeña espera. Una espera más larga podría

// demuestran ser más robustos. Nada de esto es para los pusilánimes...

void StartStandardIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int NúmeroDeMensaje = RegisterWindowMessageA("MetaTrader4_Mensaje_Interno");

PostMessageA(hWnd, MessageNumber, 13, IndicatorName);

si (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartCustomIndicator(int hWnd, string IndicatorName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 15, IndicatorName);

si (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartEA(int hWnd, string EAName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 14, EAName);

si (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false)

{

int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message");

PostMessageA(hWnd, MessageNumber, 16, ScriptName);

si (AutomaticallyAcceptDefaults) ClearConfigDialog();

}

void ClearConfigDialog()

{

Dormir(100);

keybd_event(13, 0, 0, 0);

}

 
pansa:

Renat 09.09.2014 02:55 #

Puedes volver a argumentar metódicamente, explicar sobre la multiplicación de funciones, guardar el código antiguo, arreglar los errores, etc. Esto se ha hecho muchas veces, se ha descrito en artículos y se ha discutido en foros. Pero es más fácil y preciso decir que el autor está absolutamente equivocado y que se inventa problemas de la nada.

¡Respuesta a Renat!

----------------------------------------------------------------

¡Intentas hablar mal de mí de forma descarada!

¿Por qué alabar cuando estamos en niveles de comprensión completamente diferentes?


user32.dll no va a ninguna parte - es una biblioteca del sistema operativo.

Utilizar variaciones de funciones W(idechar/unicode) en lugar de funciones A(nsi):

#import "user32.dll"

   int  RegisterWindowMessageW(string MessageName);
   int  PostMessageW(int hwnd, int msg, int wparam, string Name);

   void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo);

#import
 
Si elimina el símbolo de la ventana de Observación del Mercado, no entrará ningún tráfico a través de él. Este mecanismo ha funcionado durante 14 años.
 

A la moderadora, Renate.

sobre el nivel de comprensión: es relativo,

Llevo una lanza junto al glorioso caballero Don Quijote

y estoy a la altura.

Usted, por el contrario, tiene que cumplir con mayores

de las necesidades y producir productos de mayor

mayor calidad.

bien user32,dllse refiere a windos.

Tu consejo de pasar de A a W no tuvo ningún efecto.

¡Intenta ejecutar el script desde el eXpert!

La eliminación de los caracteres no afecta a la carga de la CPU o de la red.

¡es una llamada de pantalla y el hilo es el mismo!

Espero que esté de acuerdo conmigo.

Panza

 

Veo que tú también lo haces.

Pero aquí estamos hablando de programación y de programas escritos por programadores. Si no entiendes el código fuente que estás utilizando, tienes que aprender. Hemos hecho mucho para ello: amplia documentación, tutorial, artículos, base de fuentes, freelance, mercado de productos listos, señales, foro, etc.

 
pansa:

Pruebe a cambiar la primera letra del nombre del script/indicador. De alguna manera yo también estaba luchando https://www.mql5.com/ru/forum/152533/page2#982156

P.D: bueno, cambia la cadena por char[]

 

EstimadoRenat, yo también he recibido muchas advertencias después de compilar los EAs, ningún error.

Tengo una pregunta, ¿qué significan estas advertencias (principalmente, están delante de la línea return())? ¿Y no afectarán negativamente al funcionamiento de los Asesores Expertos?

Por supuesto, no quiero aprender el lenguaje de nuevo y rehacer mis EAs (soy un comerciante, no un programador).

 
vasabu2012:

EstimadoRenat, yo también he recibido muchas advertencias después de compilar los EAs, ningún error.

Tengo una pregunta, ¿qué significan estas advertencias (principalmente, están delante de la línea return())? ¿Y no afectarán negativamente al funcionamiento de los Asesores Expertos?

Por supuesto, no quiero aprender el lenguaje de nuevo y rehacer mis EAs (soy un comerciante, no un programador).


Por favor, envíeme los errores o el código del Asesor Experto en el que ha cometido algunos errores.
 
vasabu2012:

Yo también recibí un montón de advertencias después de compilar los EAs - ningún error.

Y la mayoría de las advertencias de basura aparecieron debido al paso perfectamente legal, correcto y estándar de la variable por referencia a la función, cuando el nombre de la plantilla de la función coincide con la propia variable como debería ser en esta construcción en su uso estándar y típico, cuando la propia variable se pasa a la función con su propio nombre.

Desgraciadamente, los MC no pudieron dar una explicación competente y lógica para esto, diciendo que a veces uno puede tener malentendidos en otras construcciones cuando hay nombres similares. Pero aquí está la paradoja, por ejemplo, cuando hay una función con el mismo nombre y diferente número de parámetros, la advertencia no aparecerá.

Así que tenemos que atribuirlo a algunas supersticiones religiosas y creencias oscuras cuando no hay ninguna lógica detrás de esta advertencia. Todavía no considero la versión de la idiotez, como sugiere el autor del hilo para explicar este fenómeno)).