Simulación de mercado: iniciando SQL en MQL5 (II)
Aunque muchos creen que podemos incluir sin problemas código SQL dentro de otro código, por lo general esto no es así. El motivo es que el código SQL siempre se incorpora al ejecutable como un string. Y este hecho de colocar el código SQL como string, si bien no genera inconvenientes en fragmentos pequeños, puede terminar provocándonos bastantes dolores de cabeza.
Simulación de mercado (Parte 19): Iniciando SQL (II)
Como expliqué en el primer artículo sobre SQL, no tiene sentido que pierdas el tiempo programando rutinas para conseguir hacer algo que SQL ya incluye. Sin embargo, si no sabes lo más básico, no lograrás hacer nada con SQL para aprovechar lo que esta herramienta tiene para ofrecernos. Por ello, en este artículo veremos cómo ejecutar tareas fundamentales en bases de datos.
Simulación de mercado (Parte 07): Sockets (I)
Sockets. ¿Sabes para qué sirven o cómo usarlos en MetaTrader 5? Si la respuesta es no, comencemos aprendiendo un poco sobre ellos. Este artículo trata de lo más básico. Pero, como existen diversas maneras de hacer lo mismo, y lo que realmente nos interesa es siempre el resultado, quiero mostrar que sí, existe una forma sencilla de pasar datos desde MetaTrader 5 hacia otros programas, como, por ejemplo, Excel. Sin embargo, la idea principal no es transferir datos de MetaTrader 5 a Excel, sino hacer lo contrario. Es decir, transferir datos desde Excel, o desde cualquier otro programa, hacia MetaTrader 5.
Simulación de mercado: Iniciando SQL en MQL5 (I)
En este artículo, comenzaremos a explorar el uso de SQL dentro de un código MQL5. Veremos cómo podemos crear una base de datos. O, mejor dicho, cómo podemos crear un archivo de base de datos en SQLite, utilizando, para ello, recursos o procedimientos incluidos en el lenguaje MQL5. Veremos también cómo crear una tabla y, después, cómo crear una relación entre tablas mediante una clave primaria y una clave foránea. Todo esto usando, nuevamente, MQL5. Veremos lo sencillo que es crear un código que, en el futuro, podrá portarse a otras implementaciones de SQL, usando una clase que nos ayude a ocultar la implementación creada. Y, lo más importante de todo, veremos que, en diversos momentos, podemos correr el riesgo de que algo no salga bien al usar SQL. Esto se debe a que, dentro del código MQL5, un código SQL siempre se colocará dentro de una STRING.
Simulación de mercado (Parte 18): Iniciando SQL (I)
Da igual si vamos a usar uno u otro programa de SQL, ya sea MySQL, SQL Server, SQLite, OpenSQL o cualquier otro. Todos tienen algo en común. Ese algo en común es el lenguaje SQL. Aunque no vayas a usar una WorkBench, podrás manipular o trabajar con una base de datos directamente en MetaEditor o a través de MQL5 para hacer cosas en MetaTrader 5, pero necesitarás tener conocimientos de SQL. Así que aquí aprenderemos, al menos, lo básico.
Simulación de mercado: Position View (VII)
En este artículo, comenzaremos a realizar algunas mejoras en el indicador de posición, para poder interactuar con él y modificar las líneas de precio, o cerrar una posición directamente mediante la interacción con el indicador de posición. Antes de entrar realmente en la implementación, conviene aclarar algo, sobre todo para quienes no estén al tanto. No es posible, de ninguna manera, usar un indicador para modificar algo en el servidor de trading. Esto se debe a que MetaTrader 5 cuenta con un sistema de seguridad que permite únicamente a los Asesores Expertos actuar sobre una orden o una posición. Ninguna otra aplicación que no sea un Asesor Experto podrá manipular órdenes o posiciones.
Simulación de mercado: Position View (II)
En este artículo, mostraré, de la forma más simple y práctica posible, cómo podrás usar un indicador como forma de observar posiciones abiertas en el servidor de trading. Lo hago así, y poco a poco, precisamente para mostrar que no necesitas incorporar necesariamente todo esto en un Asesor Experto. Muchos de ustedes ya deben de estar bastante acostumbrados a hacer esto, por un motivo u otro. La verdad es que eso es una tontería, ya que, a medida que avancemos en esta implementación, quedará claro que podrás crear o implementar diversos tipos de indicadores para este propósito.
Desarrollo de un sistema de repetición (Parte 64): Presionando play en el servicio (V)
En este artículo, mostraré cómo corregir dos errores presentes en el código. Sin embargo, he intentado explicarlas de manera que tú, aspirante a programador, entiendas que las cosas no siempre ocurrirán como habías previsto. Pero esto no debe ser motivo de desesperación, sino una oportunidad para aprender. El contenido expuesto aquí tiene como único propósito ser didáctico. En ningún caso debe interpretarse como una aplicación cuya finalidad sea distinta al aprendizaje y estudio de los conceptos presentados.
Simulación de mercado: Position View (XVIII)
En este artículo mostré, de la forma más didáctica posible, cómo puedes modificar y desarrollar un código capaz de cumplir determinados objetivos alterando lo mínimo posible un código ya existente. Añadiremos un indicador de volumen y, al mismo tiempo, impediremos que el usuario u operador elimine los objetos que se están creando por el indicador de posición.
Simulación de mercado: Position View (III)
En estos últimos artículos, he mencionado que, en algunos momentos, necesitamos definir un valor para la propiedad ZOrder. ¿Pero por qué?!?! El motivo es que muchos de los códigos que agregan objetos al gráfico simplemente no usan, o mejor dicho, no definen un valor para esa propiedad. Bien, no estoy aquí para decir qué debe o no debe hacer cada programador, ni cómo debe o no debe escribir su código. Estoy aquí para mostrarte, estimado lector e interesado en comprender realmente cómo funcionan las cosas, lo que ocurre entre bastidores.
Simulación de mercado: Position View (VIII)
En el artículo anterior, vimos cómo podíamos implementar el indicador de posición para cerrar una posición abierta directamente desde el gráfico, interactuando con un objeto disponible en él. Una vez concluido y funcionando el primer mecanismo, comenzamos a hacer algunas modificaciones para que también fuera posible eliminar las líneas de take profit y stop loss de una posición abierta. Sin embargo, como los cambios necesarios requerían una explicación adecuada, en ese mismo artículo solo mostré los cambios que debían realizarse en el Asesor Experto y aún era necesario mostrar los cambios que debían realizarse en el Indicador de posición.
Simulación de mercado (Parte 24): Iniciando SQL (VII)
En el artículo anterior terminamos de hacer las debidas presentaciones sobre SQL. Así, lo que me había propuesto mostrar y explicar sobre SQL, a mi juicio, quedó debidamente explicado. Esto, para que todos los que vengan a ver el sistema de repetición/simulador en construcción consigan, como mínimo, tener alguna noción de lo que puede estar ocurriendo allí. Esto se debe a que no tiene sentido programar diversas cosas que SQL puede cubrir perfectamente.
Simulación de mercado: La unión hace la fuerza (III)
En este artículo presentaré nuestro sistema para simular operaciones a mercado. Aunque está prácticamente terminado, todavía quedan algunas cosas por implementar y unos pocos cambios por realizar. Sin embargo, confieso que, después de todo lo que ya hemos desarrollado, estoy cansado de seguir atrapado en la implementación de este sistema.
Simulación de mercado: Position View (V)
A pesar de lo visto en el artículo anterior, esto parece algo simple. Allí tenemos diversos problemas y muchas cosas por resolver y hacer. Tú, estimado lector, puedes imaginar que todo es fácil y simple. De manera inocente, vas aceptando simplemente lo que se te presenta. Esto es un error del que tú, estimado lector, deberás intentar librarte. Peor que aceptar es simplemente no entender e intentar usar algo sin comprender realmente qué se está usando. No es raro, entre principiantes, pasar por la fase de copiar y pegar. Si no quieres quedarte siempre en esa fase, conviene aprender a usar ciertas herramientas. Una de las herramientas más utilizadas por los programadores es la documentación. La segunda herramienta está formada por las pruebas y los archivos de log. Aquí veremos cómo hacerlo.
Simulación de mercado: Iniciando SQL en MQL5 (IV)
Muchos suelen infrautilizar SQL, o incluso no utilizarlo, porque no comprenden bien cómo funciona en realidad. Al consultar una base de datos SQL, no siempre buscamos una respuesta genérica; en algunos casos queremos una respuesta muy concreta y práctica. Si tú creas una base de datos con cierta estructuración y modelado, podrás introducir prácticamente cualquier tipo de información en ella.
Simulación de mercado: Position View (VI)
En este artículo, haremos diversas mejoras para que el indicador de posición refleje lo que realmente ocurre en el servidor de trading, en términos de posiciones y del estado actual de estas. Debo recordar que estas aplicaciones, que se mostrarán aquí, no pretenden en ningún caso sustituir ningún elemento disponible en MetaTrader 5. Tampoco deben usarse sin los debidos cuidados y criterios, ya que su objetivo es presentar un código didáctico, es decir, con fines de aprendizaje sobre cómo funciona el sistema. El motivo por el que digo que el código es didáctico es que el uso de mensajes, en algunos casos, no es la mejor forma de implementar ciertas funcionalidades.
Simulación de mercado: Position View (XIX)
Una de las cuestiones que más me ha incomodado es que la clase C_ElementsTrade contenga código que permite acceder a las posiciones. No lo interpretes como un fallo, porque en realidad no lo es. Sin embargo, hace que algunas de las tareas que deberemos realizar más adelante sean algo más propensas a errores. Todo el trabajo destinado a implementar el indicador de posición se ha desarrollado pensando en utilizarlo dentro del sistema de repetición/simulador. Sin embargo, cuando se ejecute en ese entorno, no tendremos acceso alguno a una posición real. Por tanto, cualquier llamada a la biblioteca de MQL5 destinada a consultar datos de una posición no tendrá ningún efecto en el código.
Simulación de mercado: La unión hace la fuerza (II)
Hasta ahora, la aplicación desarrollada a lo largo de esta serie de artículos se centraba exclusivamente en simular la parte gráfica. Sin embargo, para disponer de un sistema más completo, en el que podamos probar un Asesor Experto dentro del servicio de repetición/simulador, también debemos simular el servidor de trading. Observarás que esta simulación incluirá únicamente los elementos imprescindibles. No obstante, tú, estimado lector, podrás completar las partes que falten. Como esos componentes adicionales no influyen en lo que pretendo mostrar, ya contamos con más que suficiente para desarrollar lo que hemos planificado.
Simulación de mercado: Position View (XI)
En este artículo, te mostraré, querido y estimado lector, cómo puedes modificar el indicador de posición para que sea capaz de hacer muchas más cosas de las que podía hacer originalmente. Veremos cómo incorporar la capacidad de mover los precios y crear líneas de precio directamente en el gráfico. Algo que muchos considerarían extremadamente complicado y difícil de resolver. Sin embargo, verás que lo haremos con mucha facilidad y con un mínimo de esfuerzo. Solo hará falta detenerse y pensar un poco.
Simulación de mercado: La unión hace la fuerza (I)
Estamos llegando a la recta final. El desarrollo del sistema de repetición/simulador está casi terminado. Es cierto que aún tendremos que completar algunas cosas, pero, en comparación con todo lo que ya hemos hecho, implementar lo que falta será sencillo. Sin embargo, todo lo que se mostrará en este artículo deberá asimilarse y comprenderse adecuadamente. Quiero que tú, estimado lector y entusiasta...
Simulación de mercado: Position View (IV)
Aquí comenzaremos a unir diversos componentes o aplicaciones que antes estaban completamente aisladas entre sí. Aunque Chart Trade, el Indicador de Mouse y el Asesor Experto ya mantenían cierta relación, todavía no había una forma de observar directamente en el gráfico las posiciones abiertas en el servidor de trading, muchas veces usando un sistema de órdenes cruzadas. A partir de este momento, esto empieza a ser posible, abriendo diversas puertas a nuevas ideas e implementaciones futuras. Aunque apenas estamos comenzando a poner estos componentes en funcionamiento, ya tendremos un rumbo que seguir.
Simulación de mercado: Position View (XIII)
En este artículo mostraré cómo implementar, sin mucho esfuerzo, una indicación que muestre si una posición genera pérdidas o beneficios. El procedimiento es sencillo y eficaz. Incluso sin grandes conocimientos, este indicador te permitirá reconocer con facilidad cuándo conviene cerrar una posición. Así evitarás resultados inesperados, ya que el cálculo refleja el resultado efectivo que produciría el cierre de la posición.
Simulación de mercado: Position View (IX)
En este artículo, que será un punto de inflexión, comenzaremos a explorar de manera un poco más profunda la interacción entre las aplicaciones que desarrollamos para dar soporte total al sistema de repetición/simulación. Aquí vamos a analizar un problema que, por un lado, resulta bastante molesto, pero, por otro, es muy interesante de explicar y resolver. El problema es: cómo añadir las líneas de take profit y stop loss después de que fueron eliminadas, y hacerlo sin usar el terminal, sino realizando la operación directamente en el gráfico. Bien, esto, a primera vista, parece algo simple. Sin embargo, hay algunos obstáculos que superar.
Simulación de mercado: Position View (X)
Necesitamos un medio para manejar los objetos gráficos que se crearán. La propuesta mostrada en el artículo anterior encaja perfectamente en algunos escenarios. Aquí necesitamos algo un poco más elaborado, debido a la naturaleza del problema que estamos tratando. Por lo tanto, no intentaremos sustituir los mecanismos presentes en MetaTrader 5 para manejar ZOrder ni, por supuesto, comprobar qué objeto está en primer plano o queda oculto por otro objeto. Haremos algo completamente diferente. Aquí mostraré qué modificaciones hay que hacer en el código para aprovechar parte de lo que MetaTrader 5 ya hace por nosotros.
Simulación de mercado: Position View (XVII)
En el artículo anterior hicimos que el indicador mostrara el resultado financiero. Sin embargo, no a todos les gusta utilizar este modo de visualización. El motivo puede variar de un operador a otro, aunque en algunos casos me parece bastante razonable y justificable. Adaptar el código para ofrecer esta posibilidad no es, ni mucho menos, una de las tareas más complejas. En realidad, se trata de algo bastante sencillo. En este artículo veremos cómo hacerlo.
Simulación de mercado: Position View (XIV)
Ahora implementaremos esta solución porque MQL5 sigue el mismo principio que la programación basada en eventos. Los desarrolladores utilizan este modelo con frecuencia al crear DLL. Sé que, al principio, el funcionamiento basado en eventos parecerá confuso y carente de lógica. Pero, en este artículo, presentaré los principios de la programación basada en eventos con mayor claridad para que tú, que estás empezando, comprendas adecuadamente su funcionamiento. Entender lo que comenzaré a explicar en este artículo te ayudará en tu vida como programador.
Repetición y simulación de mercado: Gran final
Sé que muchos podrían haber imaginado que publicaría más artículos para explicar otros aspectos del sistema. Los elementos que faltan son sencillos de implementar. Aun así, su desarrollo te permitirá comprobar hasta qué punto estás realmente preparado.
Simulación de mercado: Position View (XII)
En este artículo, aprenderás a crear una señal visual en tu plataforma de trading para identificar directamente en el gráfico si la posición es larga o corta, sin necesidad de acceder al terminal. Además, el texto aborda la implementación de una funcionalidad que mejora la visualización al mover las líneas de take profit y stop loss, ocultando la línea horizontal que sigue al cursor del mouse mientras se reposicionan dichas líneas para evitar confusiones. La lectura ofrece conocimientos prácticos para personalizar sistemas de simulación de mercado.
Simulación de mercado: Position View (XVI)
En este artículo realizaremos las modificaciones necesarias para que el indicador de posición muestre un resultado financiero. De este modo, el operador podrá hacerse una idea del resultado financiero que se obtiene con una posición abierta. Además, compartiré contigo algo que muchos desconocen, incluso quienes llevan mucho tiempo utilizando MQL5: cómo utilizar variables estáticas para compartir memoria y evitar declarar una variable global en el código principal.
Simulación de mercado: Position View (XX)
En este artículo veremos cómo modificar el código del indicador de posición para crear una especie de sombra que nos permita visualizar dónde se encuentra actualmente el precio que continúa vigente en el servidor de trading. Este mecanismo pretende facilitar la planificación de operaciones en las que desplazamos las líneas de stop loss o take profit. Añadir esta función, es decir, las sombras de precio, puede parecer extremadamente complejo. En este artículo mostraré que puedes implementarla de una forma muy sencilla y práctica.
Simulación de mercado: Position View (XV)
En este artículo intentaré explicar, de la forma más sencilla posible, cómo puedes utilizar el intercambio de mensajes entre aplicaciones. El objetivo es que puedas desarrollar algo funcional de la manera más simple y eficaz, siempre que sea posible. No sé si lograré transmitir la idea que sustenta este concepto, pues no resulta fácil de asimilar para quien lo encuentra por primera vez. También aprovecharé para mostrarte cómo modificar el sistema de repetición/simulador, de modo que puedas depurar un Asesor Experto o cualquier otro código que estés desarrollando. Todo ello de una forma igualmente sencilla y directa.