Discusión sobre el artículo "Biblioteca para el desarrollo rápido y sencillo de programas para MetaTrader (Parte XXV): Procesando los errores retornados por el servidor comercial" - página 2

 
Artyom Trishkin:

Sobre la información registrada en el valor Magic Number:

puedes utilizar un número mágico diferente para cada grupo para crear diferentes grupos. Por ejemplo, si el número mágico del asesor es 123, entonces el número mágico del primer grupo será 124, el número mágico del segundo grupo será 125, el número mágico del tercer grupo será 126, y así sucesivamente.
La biblioteca ofrece una forma diferente de crear diferentes grupos - el número de cada subgrupo se almacena directamente en el valor del Número Mágico. Entonces el número mágico del EA es también un identificador de grupo, pero se coloca en un grupo independiente llamado MagicID - el identificador del número mágico del EA. Y hay dos grupos más. Cada uno de ellos tiene 15 subgrupos. Y cada uno de los subgrupos puede tener su propio identificador.

Esto darámás flexibilidad a la hora de trabajar con grupos.

Por ejemplo: Queremos mover una rejilla de órdenes pendientes detrás del precio - añadirlas al grupo 1 en el subgrupo 1. El grupo 1 se mueve detrás del precio. El subgrupo 1 se mueve a lo largo de la MA. Ahora queremos mover algunas de esas órdenes que se mueven detrás del precio (grupo 1) por el SAR Parabólico. Les damos el subgrupo 2. Entonces el grupo 1 se mueve detrás del precio, pero el subgrupo 1 se mueve por MA, y el subgrupo 2 se mueve por SAR Parabólico.

Las órdenes se activan, convirtiéndose en posiciones - usted puede establecer sus propios grupos para la modificación de stoplosses, y sus propios subgrupos en este grupo para la modificación por diferentes valores. Los algoritmos de modificación se escriben en subgrupos.

En general - un vuelo de la fantasía. También puede utilizar un magik simple, pero usted tendrá que inventar la lógica de seguimiento de los diferentes grupos a ti mismo.

En cuanto a la segunda pregunta:

Hay una clase CSelect. Está disponible en el programa, y proporciona métodos de selección y búsqueda sobre los que estás escribiendo de todas las colecciones existentes: Account, Event, Order, Symbol.

Puede seleccionar los objetos de cada colección en una lista basada en todos los criterios. En la lista creada, puede volver a seleccionar refinando los criterios, puede encontrar los valores máximos y mínimos para el criterio de selección.

Sin embargo, más adelante habrá funciones personalizadas (mucho más adelante) para acceder rápida y cómodamente a todas las propiedades de todas las colecciones y buscar en ellas.

Pero por ahora - sólo a través de CSelect, y cuando lo necesite. La clase es estática, por lo que el acceso a sus métodos a través de ":::" Por ejemplo, CSelect::ByOrderProperty().

Sí, por cierto, hay un ejemplo de su uso en el programa justo en la prueba EA - por ejemplo, en sus funciones de arrastre:

Me di cuenta de CSelect, pero resulta que tengo que hacer una elección en cada lugar donde necesitamos valores agregados: digamos, tengo que calcular el beneficio total de una red de posiciones con el fin de trailing, esta es una función. Y en otra estoy, digamos, ajustando la toma total de una cuadrícula después de abrir, o cerrar una de las órdenes - y para eso necesito el beneficio total y el volumen agregado.

Y en otro lugar necesito tomar una decisión sobre si abrir una nueva cuadrícula o continuar con la actual - necesito saber cuántas órdenes ya he abierto en este grupo.

Todos estos valores se calculan con una pasada por la lista, que se puede seleccionar mediante una serie de CSelects. Pero como los necesito en diferentes lugares, tendría que iniciar una construcción agregada cada vez, recalcular al principio de un tick y luego utilizarlos en todas partes.

Pensé que sería bueno añadir una construcción de este tipo a la biblioteca, con la capacidad de asignarla por un conjunto de criterios de selección, como símbolo, magick (con grupos), tipo de orden.

Y que recoja estadísticas sencillas: número de órdenes, volumen total, beneficio total... una colección de órdenes, por cierto, puesto que ya la hemos seleccionado.

Si no, o crear una estructura auxiliar cada vez, o CSelects e iteración en cada sitio.

 
rigal:

Me las arreglé con CSelect, pero resulta que tengo que hacer una elección en cada lugar donde necesitamos valores agregados: digamos, necesito calcular el beneficio total de una cuadrícula de posiciones para arrastrarla, esa es una función. Y en otra, digamos, estoy ajustando la toma total de una rejilla después de abrir o cerrar una de las órdenes - y para eso necesito el beneficio total y el volumen agregado.

Y en otro lugar necesito tomar una decisión sobre si abrir una nueva parrilla o continuar con la actual: necesito saber cuántas órdenes tengo ya abiertas en este grupo.

Todos estos valores se calculan con una sola pasada por la lista, que se puede seleccionar mediante una serie de CSelects. Pero como se necesitan en diferentes lugares, tengo que iniciar una construcción de agregación cada vez, recalcularla al principio de un tick y luego utilizarla en todas partes.

Pensé que sería bueno añadir una construcción de este tipo a la biblioteca, con la posibilidad de asignarla por un conjunto de criterios de selección, por ejemplo, símbolo, magick (con grupos), tipo de orden.

Y dejar que recoja estadisticas simples: numero de ordenes, volumen total, beneficio total... una coleccion de ordenes, por cierto, ya que la hemos muestreado.

Por lo demás, o crear una estructura auxiliar cada vez, o CSelects e iteración en cada lugar.

¿Y propones hacer más pesados los cálculos en la propia librería? Ya hay muchas cosas que calcular ahí.

¿Por qué no hacer lo que propones directamente en el EA en vez de en la librería? No hay diferencia donde calcularlo todo. Pero alguien lo necesita (tú) y alguien no. ¿Y para qué necesita cálculos innecesarios?

Para no contar siempre lo mismo en diferentes funciones, debe crear listas globales en el Asesor Experto, donde puede poner la información que necesita en todas partes. Y en funciones separadas, y sólo cuando sea necesario, tomar estas listas públicas, y de ellos obtener los datos necesarios sólo dentro de la función, y devolverlos.
La librería proporciona un conjunto de datos, da la posibilidad de seleccionar estos datos en cualquier combinación, y da herramientas para resolver tareas que no son lo suficientemente rápidas de hacer desde cero.

 
Artyom Trishkin:

¿Y sugieres que se ponderen los cálculos en la propia biblioteca? Ahí ya se cuenta mucho.

¿Por qué no hacer lo que sugieres directamente en el EA en lugar de en la biblioteca? No hay ninguna diferencia donde calcularlo todo. Pero alguien lo necesita (tú) y alguien no. ¿Y por qué necesita cálculos adicionales?

Para no contar siempre lo mismo en diferentes funciones, deberías crear listas globales en el Asesor Experto, donde puedas poner la información que necesitas en todas partes. Y en funciones separadas, y sólo cuando sea necesario, tomar estas listas públicas, y de ellos obtener los datos necesarios sólo dentro de la función, y devolverlos.
La biblioteca proporciona un conjunto de datos, proporciona la posibilidad de seleccionar estos datos en cualquier combinación, y da herramientas para resolver tareas que no son lo suficientemente rápidas para hacer desde cero.

Propongo que sea opcional.

Iniciar una "suscripción".

Pero si esta idea no os parece digna de consideración, desde luego escribiré yo mismo el wrapper.

Gracias de nuevo por lo que ya se ha hecho - y adelante por todo lo que todavía está en los planes (yo aquí y allá encuentro reservas sobre los planes para continuar el desarrollo de la biblioteca).

 
rigal:

Bueno, sugiero que se cuente opcionalmente.

Hacer una "suscripción".

Pero si usted no encuentra esta idea digna de consideración, sin duda voy a escribir la envoltura a mí mismo.

Gracias de nuevo por lo que ya está hecho - y adelante para cualquier otra cosa que esté en proyecto (he visto reservas aquí y allá sobre los planes para continuar desarrollando la biblioteca)

Habrá una funcionalidad similar en los planes. Y, sí, todavía hay mucho que planificar - menos de un tercio está hecho.
 
Estoy observando de cerca :)