Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte II): Colección de órdenes y transacciones históricas"

 

Artículo publicado Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte II): Colección de órdenes y transacciones históricas:

En el primer artículo, comenzamos a crear una gran biblioteca multiplataforma, cuyo cometido es facilitar la creación de programas para las plataformas MetaTrader 5 y MetaTrader 4. Creamos el objeto abstracto COrder, que es el objeto básico para guardar los datos de las órdenes y transacciones históricas, así como de las órdenes y posiciones de mercado. Ahora, vamos a crear todos los objetos necesarios para guardar los datos de la historia de la cuenta en colecciones.

Colecciones de las órdenes y transacciones históricas

Siempre resulta útil tener la historia de la cuenta a mano. Sí, el terminal la ofrece y nos da las herramientas para obetenerla en los programas. Pero, para nuestras necesidades, es imprescindible tener una lista propia que podamos clasificar y reorganizar según la solicitud para retornar a nuestros programas los datos deseados. Por consiguiente, es necesario comprobar en cada tick el cambio del anterior estado de la historia de la cuenta y, cuando este cambie, recalcular nuestra lista de órdenes y transacciones históricas. Por desgracia, reorganizar toda la historia en cada tick resulta demasiado laborioso. Por eso, crearemos solo una adición a nuestra lista de nuevos datos, mientras que los antiguos siguen estando calculados y guardados en la lista.

Vamos a crear la nueva clase CHistoryCollection en la carpeta Collections:

Pulsamos el botón derecho en la carpeta Collections y seleccionamos el punto "Nuevo archivo"; en la ventana del Wizard MQL, elegimos "Nueva clase" y pulsamos "Continuar". Introducimos el nombre de la clase CHistoryCollection, dejamos vacío el campo de la clase básica y pulsamos "Listo".

Autor: Artyom Trishkin

 
Buen artículo. Es muy detallado. Incluso los principiantes pueden entenderlo, todo es paso a paso con imágenes.
 
Alexander Fedosov:
Buen artículo. Es muy detallado. Incluso los principiantes pueden entenderlo, todo es paso a paso con imágenes.

Gracias. Trato de hacerlo claro para todos.

 

Sí, los artículos son excelentes y están bien descritos.

Incluso tengo artefactos para recordar)

Artículo nº 1 = taza

Artículo #2 = olla

Como habrá una serie de artículos, aún no compraré una nueva taza para hervir agua para el té, limpiaré la olla y seguiré usándola).

Archivos adjuntos:
1.JPG  818 kb
2.JPG  1043 kb
 
Vitaly Muzichenko:

Sí, los artículos son excelentes y están bien descritos.

Incluso tengo artefactos para recordar)

Artículo nº 1 = taza

Artículo #2 = olla

Como habrá una serie de artículos, no compraré todavía una nueva taza para hervir agua para el té, limpiaré la olla y seguiré usándola).

Gracias. Vitaly, tengo un montón de golosinas y cosas interesantes listas en el tercer artículo, así que puedo enviarte un juego de tazas y ollas

 
Artyom Trishkin:

Gracias. Vitaly, tengo un montón de golosinas y cosas interesantes listo en el tercer artículo, así que puedo enviarle un conjunto de tazas y sartenes

Cool CKruzhka?)
 

Bien hecho.

Lo estás haciendo bien.

Es una pena. Aún no he visto el primer artículo. Pero lo veré. Ya veo por dónde desapareciste. Supongo que soy yo quien ha desaparecido. Eso sería más exacto

 
Victor Nikolaev:

Me alegro por ti.

Lo estás haciendo bien.

Es una pena. Aún no he visto el primer artículo. Pero lo veré. Ya veo dónde te has perdido. Supongo que soy yo el que está perdido. Eso sería más exacto

Gracias, Vitya, me alegra saber de ti, aunque sea tan raro....
 
Victor Nikolaev:

...

Oh, tenemos un montón de gente que viene. ¡Wow! Me alegro de que no te hayas olvidado del camino a nuestra casa).

 
De hecho, es un ejemplo de cómo no programar (no hablamos de funcionalidad, sino de implementación): se mete todo en la clase base, se hacen un montón de flags y plugs en los herederos para determinar qué se soporta dónde, una hoja de copypastes.... Antipatrones. Está claro que es todo "vivo", pero ya pretende ser un rework completo, si por un buen razonamiento.
 
Stanislav Korotky:
De hecho, es un ejemplo de cómo no programar (no hablamos de funcionalidad, sino de implementación): se mete todo en la clase base, se hacen un montón de flags y plugs en los herederos para determinar qué se soporta dónde, una hoja de copypastes.... Antipatrones. Está claro que está todo "vivo", pero ya pretende ser un rediseño completo, si bueno.
Gracias por vuestra opinión. No voy a discutir ni cambiar el concepto.