Me pueden decir si es posible copiar el texto del EA al portapapeles, por ejemplo, por condición, el texto del allert.
Si es así, ¿cómo hacerlo?
No. El trabajo con el portapapeles es una función del sistema (API de Windows). En MQL5 no hay acceso directo a la WinAPI. ¿Y por qué trabajar con el portapapeles? Al fin y al cabo, usted mismo está generando el mensaje, lo que significa que tiene el texto fuente del mensaje.
Karputov Vladimir: No. El trabajo con el portapapeles es una función del sistema (API de Windows). En MQL5 no hay acceso directo a la WinAPI. ¿Y por qué deberías trabajar con el portapapeles? Al fin y al cabo, tú mismo generas el mensaje, por lo que tienes el texto fuente del mismo.
Sí, el código fuente está ahí, pero lo necesito, por una determinada condición, en el portapapeles.
Lo siento, no he especificado, necesito la implementación en MQL4.
¿Es posible abrir el portapapeles de alguna manera usando #import "user32.dll"?
Sí, el código fuente está ahí, pero lo necesito, por una determinada condición, en el portapapeles.
Lo siento, no he especificado, necesito la implementación en MQL4.
¿Tal vez puedas abrir el portapapeles de alguna manera usando #import "user32.dll"?
Es hora de escribir en MQL5. Usar dll es la cima de la imprudencia.
Según tengo entendido, quieres leer la información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Ya desde este directorio se puede leer el archivo con un programa de terceros.
Ya es hora de escribir en MQL5. Usar un dll es el colmo de la locura.
Según tengo entendido, quieres leer información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Desde ese directorio puedes leer el archivo con un programa de terceros.
Gracias por las recomendaciones, pero ahora necesito copiar el texto al portapapeles desde el programa MQL4.
Adjúntela al gráfico y una captura de pantalla del gráfico en el estudio, así como las entradas de las pestañas "Registro" y "Asesores" (si aparecen allí).
¡¡¡Hola !!!
Para empezar, he reiniciado la plataforma MT5. Compilación de su plantilla. El resultado de la compilación se muestra a continuación. Tuve que tirar las capturas de pantalla debido al gran volumen
Tengo el icono de EA en el gráfico en lugar de una cara sonriente
Aquí hay un extracto del registro 2016.05.11 12:44:47.139 Expert Expert Test (GBPUSD,H1) cargado con éxito
A continuación se muestra el contenido del mensaje sobre la carga del EA:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 iniciado HD 0 10:35:45.020 Terminal Windows 8.1 (PC basado en x64), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00 ND 0 10:35:45.020 Terminal C:\NUsers\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C LI 0 10:35:47.200 Red '50016841': autorizada en Alpari-Ltd-MT5 vía mt5.nl.3 (ping: 57.34 ms) NG 0 10:35:47.200 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.10 23:47:58 FK 0 10:35:47.617 Red '50016841': terminal sincronizada con Alpari Limited RM 0 10:35:47.617 Red '50016841': se ha activado la negociación - modo de red OH 0 10:35:48.253 Red '50016841': escaneando la red en busca de puntos de acceso CL 0 10:35:51.446 Red '50016841': finalizado el escaneo de la red ND 1 12:00:49.011 Red '50016841': conexión con Alpari-Ltd-MT5 perdida MR 0 12:01:08.842 Red '50016841': autorizada en Alpari-Ltd-MT5 a través de mt5.nl.3 (ping: 56.41 ms) HR 0 12:01:08.842 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.11 10:35:52 PQ 0 12:01:08.907 Red '50016841': terminal sincronizado con Alpari Limited PH 0 12:01:08.907 Red '50016841': se ha activado el comercio - modo de red KL 0 12:41:45.169 Prueba de Asesor Experto (GBPUSD,H1) cargada con éxito
Por favor, échale un vistazo. Tal vez encuentre la causa. Estoy perplejo, ¿quizás sea un problema de la construcción?
Para empezar, he reiniciado la plataforma MT5. Compilación de su plantilla. El resultado de la compilación se muestra a continuación. Tuve que tirar las capturas de pantalla debido al gran volumen
Tengo el icono de EA en el gráfico en lugar de una cara sonriente
Aquí hay un extracto del registro 2016.05.11 12:44:47.139 Expert Expert Test (GBPUSD,H1) cargado con éxito
A continuación se muestra el contenido del mensaje sobre la carga del EA:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 iniciado HD 0 10:35:45.020 Terminal Windows 8.1 (PC basado en x64), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00 ND 0 10:35:45.020 Terminal C:\NUsers\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C LI 0 10:35:47.200 Red '50016841': autorizada en Alpari-Ltd-MT5 vía mt5.nl.3 (ping: 57.34 ms) NG 0 10:35:47.200 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.10 23:47:58 FK 0 10:35:47.617 Red '50016841': terminal sincronizada con Alpari Limited RM 0 10:35:47.617 Red '50016841': se ha activado la negociación - modo de red OH 0 10:35:48.253 Red '50016841': escaneando la red en busca de puntos de acceso CL 0 10:35:51.446 Red '50016841': finalizado el escaneo de la red ND 1 12:00:49.011 Red '50016841': conexión con Alpari-Ltd-MT5 perdida MR 0 12:01:08.842 Red '50016841': autorizada en Alpari-Ltd-MT5 a través de mt5.nl.3 (ping: 56.41 ms) HR 0 12:01:08.842 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.11 10:35:52 PQ 0 12:01:08.907 Red '50016841': terminal sincronizado con Alpari Limited PH 0 12:01:08.907 Red '50016841': se ha activado el comercio - modo de red KL 0 12:41:45.169 Prueba de Asesor Experto (GBPUSD,H1) cargada con éxito
Por favor, échale un vistazo. Tal vez encuentre la causa. Estoy perplejo, ¿quizás sea un problema de la construcción?
¡¡¡Gracias!!!
¡¡¡Gracias por la ayuda !!!
Instale el terminal encima de este defectuoso. Se puede curar.
Ya es hora de que escribamos en MQL5. Usar un dll es el colmo de la locura.
Según tengo entendido, quieres leer información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Ya desde este directorio se puede leer el archivo con un programa de terceros.
Si fuera "el colmo de la locura", estaría prohibido.
WinAPI amplía enormemente las capacidades de MQL. Y puedes hacer una estupidez incluso sin dll.
Y aquí hay un ejemplo de pasar una cadena al portapapeles:
#define CF_UNICODETEXT 13#define GHND 0x0042#import "User32.dll"int OpenClipboard( uint );
int EmptyClipboard();
int CloseClipboard();
uint SetClipboardData( uint uFormat, uint hMem );
#import "Kernel32.dll"uint GlobalAlloc( uint uFlags, uint dwBytes );
uint GlobalLock( uint hMem );
int GlobalUnlock( uint hMem );
#import "msvcrt.dll"uint memcpy( uint dest, string src, uint count );
#import
string str = "АБВГД";
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
uint hwnd = (uint)ChartGetInteger( 0, CHART_WINDOW_HANDLE );
int strSize = StringLen( str ) * 2 + 2; // Получаем размер строки в байтахif( OpenClipboard( hwnd ) ) // Открываем буфер
{
EmptyClipboard(); // Очищаем буферuint hMem = GlobalAlloc( GHND, strSize ); // Выделяем памятьuint pMem = GlobalLock( hMem ); // Получаем адрес выделенной памяти
memcpy( pMem, str, strSize ); // Копируем строку в память
GlobalUnlock( hMem );
SetClipboardData( CF_UNICODETEXT, hMem ); // Передаём память со строкой в буфер
CloseClipboard(); // Закрываем буфер
}
}
Artem, dime, si introduzco todo esto de debajo de la función On Start en la función On Tick, el script se ejecutará igual, sólo que en cada tick, ¿no?
¿O hay que cambiar algo?
Dado que las velas anteriores, excepto la actual, no cambian en cada tick, supongo que deberíamos añadir una condición para comprobarlo una vez, por ejemplo 1 - 2 segundos antes de que se cierre la vela actual? ¿O no tiene sentido y podemos dejar el control en cada tilde?
Artem, dime, si inserto todo esto de debajo de la función On Start en la función On Tick, el script se ejecutará igual, sólo que en cada tick, ¿no?
¿O hay que cambiar algo?
Dado que las velas anteriores, excepto la actual, no cambian en cada tick, supongo que deberíamos añadir una condición para comprobarlo una vez, por ejemplo 1 - 2 segundos antes de que se cierre la vela actual? ¿O no tiene sentido y podemos dejar el control en cada tilde?
Pues bien, yo lo plasmaría todo en una función y la llamaría cuando la necesitara - en cada tick (si es razonable y necesario), o en la apertura de una nueva vela - una vez por hora, por ejemplo, si trabajamos con H1.
Hola.
Me pueden decir si es posible copiar el texto del EA al portapapeles, por ejemplo, por condición, el texto del allert.
Si es así, ¿cómo hacerlo?
Hola.
Me pueden decir si es posible copiar el texto del EA al portapapeles, por ejemplo, por condición, el texto del allert.
Si es así, ¿cómo hacerlo?
No. El trabajo con el portapapeles es una función del sistema (API de Windows). En MQL5 no hay acceso directo a la WinAPI. ¿Y por qué deberías trabajar con el portapapeles? Al fin y al cabo, tú mismo generas el mensaje, por lo que tienes el texto fuente del mismo.
Sí, el código fuente está ahí, pero lo necesito, por una determinada condición, en el portapapeles.
Lo siento, no he especificado, necesito la implementación en MQL4.
¿Es posible abrir el portapapeles de alguna manera usando #import "user32.dll"?
Sí, el código fuente está ahí, pero lo necesito, por una determinada condición, en el portapapeles.
Lo siento, no he especificado, necesito la implementación en MQL4.
¿Tal vez puedas abrir el portapapeles de alguna manera usando #import "user32.dll"?
Es hora de escribir en MQL5. Usar dll es la cima de la imprudencia.
Según tengo entendido, quieres leer la información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Ya desde este directorio se puede leer el archivo con un programa de terceros.
Ya es hora de escribir en MQL5. Usar un dll es el colmo de la locura.
Según tengo entendido, quieres leer información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Desde ese directorio puedes leer el archivo con un programa de terceros.
Gracias por las recomendaciones, pero ahora necesito copiar el texto al portapapeles desde el programa MQL4.
Tomémoslo en orden. Esta es la plantilla:
Adjúntela al gráfico y una captura de pantalla del gráfico en el estudio, así como las entradas de las pestañas "Registro" y "Asesores" (si aparecen allí).
¡¡¡Hola !!!
Para empezar, he reiniciado la plataforma MT5. Compilación de su plantilla. El resultado de la compilación se muestra a continuación. Tuve que tirar las capturas de pantalla debido al gran volumen
Ha aparecido un EA en el navegador:
Puso el EA en el gráfico y permitió el comercio en 3 lugares:
Tengo el icono de EA en el gráfico en lugar de una cara sonriente
Aquí hay un extracto del registro 2016.05.11 12:44:47.139 Expert Expert Test (GBPUSD,H1) cargado con éxito
A continuación se muestra el contenido del mensaje sobre la carga del EA:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 iniciado
HD 0 10:35:45.020 Terminal Windows 8.1 (PC basado en x64), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\NUsers\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Red '50016841': autorizada en Alpari-Ltd-MT5 vía mt5.nl.3 (ping: 57.34 ms)
NG 0 10:35:47.200 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.10 23:47:58
FK 0 10:35:47.617 Red '50016841': terminal sincronizada con Alpari Limited
RM 0 10:35:47.617 Red '50016841': se ha activado la negociación - modo de red
OH 0 10:35:48.253 Red '50016841': escaneando la red en busca de puntos de acceso
CL 0 10:35:51.446 Red '50016841': finalizado el escaneo de la red
ND 1 12:00:49.011 Red '50016841': conexión con Alpari-Ltd-MT5 perdida
MR 0 12:01:08.842 Red '50016841': autorizada en Alpari-Ltd-MT5 a través de mt5.nl.3 (ping: 56.41 ms)
HR 0 12:01:08.842 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.11 10:35:52
PQ 0 12:01:08.907 Red '50016841': terminal sincronizado con Alpari Limited
PH 0 12:01:08.907 Red '50016841': se ha activado el comercio - modo de red
KL 0 12:41:45.169 Prueba de Asesor Experto (GBPUSD,H1) cargada con éxito
Por favor, échale un vistazo. Tal vez encuentre la causa. Estoy perplejo, ¿quizás sea un problema de la construcción?
¡¡¡Gracias!!!
¡¡¡Gracias por la ayuda !!!
¡¡¡Hola !!!
Para empezar, he reiniciado la plataforma MT5. Compilación de su plantilla. El resultado de la compilación se muestra a continuación. Tuve que tirar las capturas de pantalla debido al gran volumen
Ha aparecido un EA en el navegador:
Puso el EA en el gráfico y permitió el comercio en 3 lugares:
Tengo el icono de EA en el gráfico en lugar de una cara sonriente
Aquí hay un extracto del registro 2016.05.11 12:44:47.139 Expert Expert Test (GBPUSD,H1) cargado con éxito
A continuación se muestra el contenido del mensaje sobre la carga del EA:
CO 0 10:35:45.020 Terminal Alpari Limited MT5 x64 build 1325 iniciado
HD 0 10:35:45.020 Terminal Windows 8.1 (PC basado en x64), IE 11.00, UAC, Intel Core i5-2320 @ 3.00GHz, RAM: 2209 / 4078 Mb, HDD: 45023 / 149999 Mb, GMT+03:00
ND 0 10:35:45.020 Terminal C:\NUsers\Boris\AppData\Roaming\MetaQuotes\Terminal\73D45AFCBD5653CAF29C407A081F030C
LI 0 10:35:47.200 Red '50016841': autorizada en Alpari-Ltd-MT5 vía mt5.nl.3 (ping: 57.34 ms)
NG 0 10:35:47.200 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.10 23:47:58
FK 0 10:35:47.617 Red '50016841': terminal sincronizada con Alpari Limited
RM 0 10:35:47.617 Red '50016841': se ha activado la negociación - modo de red
OH 0 10:35:48.253 Red '50016841': escaneando la red en busca de puntos de acceso
CL 0 10:35:51.446 Red '50016841': finalizado el escaneo de la red
ND 1 12:00:49.011 Red '50016841': conexión con Alpari-Ltd-MT5 perdida
MR 0 12:01:08.842 Red '50016841': autorizada en Alpari-Ltd-MT5 a través de mt5.nl.3 (ping: 56.41 ms)
HR 0 12:01:08.842 Red '50016841': autorización anterior realizada con éxito desde 79.172.69.175 el 2016.05.11 10:35:52
PQ 0 12:01:08.907 Red '50016841': terminal sincronizado con Alpari Limited
PH 0 12:01:08.907 Red '50016841': se ha activado el comercio - modo de red
KL 0 12:41:45.169 Prueba de Asesor Experto (GBPUSD,H1) cargada con éxito
Por favor, échale un vistazo. Tal vez encuentre la causa. Estoy perplejo, ¿quizás sea un problema de la construcción?
¡¡¡Gracias!!!
¡¡¡Gracias por la ayuda !!!
Ya es hora de que escribamos en MQL5. Usar un dll es el colmo de la locura.
Según tengo entendido, quieres leer información de un programa de terceros. A continuación, utilice la escritura en un archivo, en un directorio común de todos los terminales de cliente \Terminal\Common\Files. Ya desde este directorio se puede leer el archivo con un programa de terceros.
Si fuera "el colmo de la locura", estaría prohibido.
WinAPI amplía enormemente las capacidades de MQL. Y puedes hacer una estupidez incluso sin dll.
Y aquí hay un ejemplo de pasar una cadena al portapapeles:
Artem, dime, si introduzco todo esto de debajo de la función On Start en la función On Tick, el script se ejecutará igual, sólo que en cada tick, ¿no?
¿O hay que cambiar algo?
Dado que las velas anteriores, excepto la actual, no cambian en cada tick, supongo que deberíamos añadir una condición para comprobarlo una vez, por ejemplo 1 - 2 segundos antes de que se cierre la vela actual? ¿O no tiene sentido y podemos dejar el control en cada tilde?
Artem, dime, si inserto todo esto de debajo de la función On Start en la función On Tick, el script se ejecutará igual, sólo que en cada tick, ¿no?
¿O hay que cambiar algo?
Dado que las velas anteriores, excepto la actual, no cambian en cada tick, supongo que deberíamos añadir una condición para comprobarlo una vez, por ejemplo 1 - 2 segundos antes de que se cierre la vela actual? ¿O no tiene sentido y podemos dejar el control en cada tilde?