Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
... diciendo lo obvio, si quisieras hacer lo anterior en un EA en lugar de un script [...]
Versión revisada que puede ser utilizada para crear un EA en lugar de un script simplemente des-comentando el #define COMPILE_AS_EA. El código tiene entonces OnTimer (y OnTick) en lugar de OnStart.
El único otro cambio es que el código ahora pone los sockets en modo no-bloqueo. Todavía sondea la disponibilidad de nuevos eventos de socket usando select(), pero ahora evita el peligro de entrar en un estado de bloqueo si select() es de alguna manera erróneo.
Versión revisada que [...]
Estoy seguro de que todo el mundo está ansioso por una actualización de esto...
En el contexto de un EA -que ahora es el predeterminado en el código- resulta que es posible usar WSAAsyncSelect() para hacer un manejo de la actividad del socket basado en eventos. Esto a menudo puede empujar la latencia entre el envío y la recepción de mensajes por debajo del nivel de milisegundos. La velocidad exacta varía dependiendo de lo que esté haciendo MT4, pero en promedio es mucho más rápido, y nunca peor, que usar sólo el temporizador.
No es posible hacer que WSAAsyncSelect() active OnTimer() o OnTick() en el EA. Por ejemplo, se le puede decir a WSAAsyncSelect() que dispare mensajes WM_TIMER, pero MT4 los ignora porque el ID del temporizador wparam de WSAAsyncSelect() no coincide con el ID del temporizador que espera de EventSetMillisecondTimer().
Sin embargo, decirle a WSAAsyncSelect() que envíe WM_KEYDOWN dispara con éxito OnChartEvent() en el EA. Vea los comentarios en el código para los detalles completos de cómo funciona esta adición.
Para divertirse un poco...
Lol. Increíble. Felicidades. No pensé que fuera posible codificar estas funcionalidades en MQL.
Lol. Increíble. Felicidades. No pensé que fuera posible codificar estas funcionalidades en MQL.
Mi instinto es siempre hacer sockets de servidor utilizando multihilo, pero en realidad no puedo pensar en una razón por la que este código no sería viable y seguro para el uso de la vida real.
Hay una cosa en la versión más reciente, arriba, que no es ideal. En lugar de publicar otro gran bloque de código, lo describiré:
Es un pequeño cambio en el código, pero no quiero publicar otro gran bloque en este foro cuando sólo te interesa a ti.
En lugar de publicar otro gran bloque de código [...]
Pensándolo bien...
Otra versión más, con los siguientes cambios:
En lugar de publicar contribuciones SRC tan largas, considera la posibilidad de adjuntar el propio archivo. Te sugiero que EDITES tus posts más largos, eliminando las secciones SRC y adjuntando sólo el archivo fuente.
En lugar de publicar contribuciones SRC tan largas, considera la posibilidad de adjuntar el propio archivo. Te sugiero que EDITES tus mensajes más largos, eliminando las secciones SRC y adjuntando simplemente el archivo fuente en su lugar.
Muchas gracias por tu contribución.
Pero, entre las muchas razones por las que no voy a hacer esto es el hecho de que el código anterior funciona tanto en MT4 y MT5. Si lo subiera como un archivo adjunto, tendría que ser marcado engañosamente como .mq4 o .mq5 mientras que en realidad funciona como ambos.
Pero, entre las muchas razones [...]
Otra de las razones clave es el siguiente escenario, que podría haberse aplicado al PO:
Por lo que sé, ni los motores de búsqueda ni la búsqueda en este sitio pueden mirar dentro de los archivos adjuntos. Por lo tanto, publicar el código como un archivo adjunto lo haría invisible a una búsqueda como "mql4 bind listen htons".
Usted suele decir a la gente que debería haber hecho una búsqueda o haber consultado la documentación; yo estoy tratando de ayudar exactamente con eso.
(Resulta que "mql4 bind listen htons" no encuentra este tema porque Google no ha rastreado la página desde el 14 de septiembre. Pero debería empezar a aparecer en Google pronto).
Muchas gracias por tu aportación.
Pero, entre las muchas razones por las que no voy a hacer esto es el hecho de que el código anterior funciona tanto en MT4 y MT5. Si lo subiera como un archivo adjunto, tendría que ser engañosamente marcado como .mq4 o .mq5 mientras que en realidad funciona como ambos.
Pensándolo bien...
Otra versión, con los siguientes cambios:
GRACIAS de nuevo jjc,
Ahora mismo tengo prisa y no tengo tiempo de probarlo, pero lo haré la semana que viene y te contaré. Creo que no tendré ningún problema para ejecutarlo, pero quizás te pregunte alguna duda. BTW: Por favor, no edites ningún post; todos están perfectos tal y como están (me siento como en StackOverflow =)).