Discusión sobre el artículo "Desarrollo de un sistema de repetición (Parte 32): Sistema de órdenes (I)"

 

Artículo publicado Desarrollo de un sistema de repetición (Parte 32): Sistema de órdenes (I):

De todas las cosas desarrolladas hasta ahora, esta, como seguramente también notarás y con el tiempo estarás de acuerdo, es la más desafiante de todas. Lo que tenemos que hacer es algo simple: hacer que nuestro sistema simule lo que hace un servidor comercial en la práctica. Esto de tener que implementar una forma de simular exactamente lo que haría el servidor comercial parece simple. Al menos en palabras. Pero necesitamos hacer esto de manera que, para el usuario del sistema de repetición/simulación, todo suceda de la manera más invisible o transparente posible.

Decir que el Expert Advisor debe ser el mismo implica no compilarlo para usarlo en el simulador y luego compilarlo nuevamente para usarlo en el mercado real. Hacer esto sería mucho más fácil y sencillo en términos de programación, pero generaría problemas en cuestiones relacionadas con el hecho de que el usuario tendría que seguir recompilando el EA todo el tiempo. No queremos en absoluto que esto suceda o que sea necesario. Lo que queremos y haremos es crear un Expert Advisor y compilarlo solo una vez. Una vez hecho esto, podremos utilizarlo tanto en el mercado real como en el simulador ya construido.

La parte responsable de utilizar el Expert Advisor en el mercado real, incluso en una cuenta demo, es la parte más fácil de implementar. Entonces comenzaremos con ella. Un detalle: empezaremos por el modelo más básico. Poco a poco iremos complejizando cada vez más el EA, hasta el punto de que podrá hacer lo que realmente queremos, que será usarlo junto con la repetición/simulador, y en una cuenta demo o cuenta real. Lo primero que haremos será tomar prestado gran parte del código que ya he explicado en otros artículos que se han publicado aquí en la comunidad. Estos artículos son míos, por lo que no veo ningún problema al utilizar dicha información. Bien, haremos algunos cambios para que el sistema sea lo más flexible, modular, robusto y estable posible. De lo contrario, podríamos entrar en un laberinto y acabar, en algún momento, en un callejón sin salida, imposibilitando en todos los sentidos que el sistema avance en su desarrollo.

Para empezar y esto será sólo el principio del principio ya que la tarea es muy complicada. En primer lugar, necesitará saber cómo se implementa actualmente el sistema de herencia de clases en el Asesor Experto, que ya estamos recopilando en algunos artículos, en la misma secuencia. Este esquema se puede ver en la figura 01:

Figura 01

Figura 01: Esquema actual de herencia de clases del EA

Pero, aunque este esquema funciona muy bien para lo que se ha hecho hasta ahora, está lejos de ser adecuado a lo que realmente necesitamos. No porque sea complicado agregar la clase C_Orders en este esquema de herencia. En realidad, esto podría hacerse haciendo que la clase C_Orders herede la clase C_Study. Pero no quiero que esto suceda, y la razón se debe a una cuestión muy práctica que a veces es bastante ignorada por la mayoría de los programadores que trabajan con POO (programación orientada a objetos). Esta cuestión se conoce como: Encapsulación. En otras palabras, sólo sepa lo que necesita para hacer su trabajo. Cuando creamos una jerarquía de clases, no debemos (y éste es el término) permitir que algunas clases sepan más de lo que realmente necesitan saber. Siempre debemos dar preferencia a programar todo de tal manera que cada una de las clases sepa sólo lo que realmente necesita saber para poder realizar su tarea. Por eso, mantener la encapsulación y al mismo tiempo agregar la clase C_Orders al esquema mostrado en la figura 01 es prácticamente insostenible. Por lo tanto, la mejor alternativa para solucionar este problema es eliminar la clase C_Terminal del bloque de herencia, como se ve en la figura 01, y enviarla a este mismo bloque como argumento o parámetro que se puede utilizar de una forma mucho más adecuada. Entonces quien tendrá control sobre quién recibirá tal o cual información será el código del Expert Advisor, y esto será importante más adelante, ya que así podremos mantener la encapsulación de la información.

Autor: Daniel Jose