AutoGraf Serie 4 - Funciones MQL. - página 34

 

Si incluyes el archivo a través de include, puedes declarar variables externas y no necesitas pasar ningún parámetro. Para evitar confusiones con los nombres de las variables y las funciones, es necesario utilizar diferentes prefijos en los nombres para cada estrategia.

Perdón por la interrupción, pero una agonía tan larga por una pregunta tan sencilla no deja indiferente:)

 
Integer >> :

Si incluyes el archivo mediante include, puedes declarar variables externas y no necesitas pasar ningún parámetro. Para evitar confusiones con los nombres de las variables y las funciones, es necesario utilizar diferentes prefijos en los nombres para cada estrategia.

Lo siento, pero estas largas agonías sobre una cuestión tan sencilla no dejan indiferente:)

>> Gracias. >> Lo intentaremos.

 
Integer писал(а) >>

Si incluyes el archivo a través de include, puedes declarar variables externas y no necesitas pasar ningún parámetro. Para evitar confusiones con los nombres de las variables y las funciones, es necesario utilizar diferentes prefijos en los nombres para cada estrategia.

Perdona que te interrumpa, pero estas largas agonías por una pregunta tan sencilla no te dejan indiferente:)

Estamos hablando de la importación de funciones en el EA compilado (ex4).
 
SK. писал(а) >>
Estamos hablando de la importación de funciones en el EA compilado (ex4).

Lo siento, como siempre no estoy hablando de... ¿Qué tal la importación desde una biblioteca compilada?

-

Si el módulo principal está compilado, entonces no es un problema usar inculcator con la estrategia, todo será compilado. Si el módulo principal es de código abierto, pero la estrategia se compila, entonces usted puede hacer un adaptador en forma de código abierto inculdnik.

 

Estimados señores.

Estoy considerando el siguiente diagrama de cadena de conexión:



La función AG_AT es un conmutador para seleccionar las estrategias a unir.

 

¡Señoras y señores!

Por favor, responda a una pregunta.

Si la función AT no es un interruptor, sino que contiene código de estrategia, entonces (aunque entiendo que no hay diferencia), ¿cómo distingue la aplicación que la función AT le está dando una instrucción (por ejemplo, refiriéndose al terminal), en lugar de operar ella misma?

De la descripción a la aplicación:

Исполнение функции АТ связано с двумя основными возможностями.

La primera es que la función AT puede negociar por sí misma: generar órdenes de negociación y enviarlas al servidor. Al mismo tiempo, la función no puede procesar ningún dato recibido de la aplicación (o procesar una parte de dichos datos), pero puede realizar sus propios cálculos utilizando todas las capacidades de MQL4, incluyendo la llamada al terminal para procesar las órdenes, obtener las cotizaciones actuales, calcular los criterios de negociación, gestionar los objetos gráficos, etc.

La segunda función está directamente relacionada con la aplicación AutoGraf 4. Esta función puede ordenar a la aplicación AutoGraf 4 que instale las herramientas necesarias con ajustes preestablecidos en órdenes específicas o en un gráfico de precios, que cambie los ajustes generales de la aplicación, que elimine herramientas, que muestre mensajes al usuario, etc. (parámetros de salida). (parámetros de salida).

Si la función AT genera una orden de negociación y no hay ninguna línea de código que tenga en cuenta en la aplicación, se negociará sola. La aplicación, en este caso, se limita a transmitir la orden al terminal sin ningún tipo de contabilidad o procesamiento.

Si lo hay, la orden pasa por la aplicación en los parámetros de la función AT que se pasan por el enlace.

¿Lo he entendido bien?

 
Integer писал(а) >>

Lo siento, no me refería a eso, como siempre... ¿Qué tal la importación desde una biblioteca compilada?

-

Si el módulo principal está compilado, entonces no es un problema usar inculcator con la estrategia, todo será compilado. Si el módulo principal es de código abierto, pero la estrategia está compilada, entonces puede hacer un adaptador en forma de inculcador de código abierto.

No hay que disculparse, la discusión está en su punto.

--

Un poco de terminología. Hay dos conceptos espejo: exportación e importación. Se utilizan en relación con nuestro propio territorio.

Las exportaciones son de nosotros fuera de nuestras fronteras. Por ejemplo, las exportaciones de gas de Rusia a Europa.

La importación es desde el extranjero hacia nuestras fronteras. Por ejemplo, importar arena a Siberia desde África.

En este caso se trata de importaciones. Nuestro territorio aquí es el experto AG_exp.ex4. Esta es la base de la aplicación AutoGraf 4 que se suministra al usuario como archivo compilado. El código fuente del Asesor Experto no se suministra (por supuesto, ya que la aplicación se distribuye comercialmente, aunque es gratuita) y, por lo tanto, no se pueden añadir módulos al Asesor Experto a través de inclide (por el usuario-programador).

--

La tarea consistía en permitir al usuario adjuntar a la aplicación AutoGraf 4 sus propios algoritmos de negociación escritos en MQL4 y ejecutados como archivos .ex4 de estrategias. Para resolver este problema, el Asesor Experto AG_exp.ex4 incluye un código que importa en el Asesor Experto la función de trading automático AG_AT que está disponible tanto en archivos .ex4 como mq4. Más adelante, el usuario puede decidir por sí mismo cómo organizar los códigos. Una de las dos variantes es la más conveniente:

1. Para escribir su propio código directamente en la función AG_AT() y compilar el archivo AG_AT.mq4 con el mismo nombre, obteniendo AG_AT.eq4.

Пример: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15: http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm

2. Escriba su propio código para la nueva función en un archivo de estrategia separado, por ejemplo, My_Strategy() en el archivo My_Strategy.mq4. Escriba en AG_AT() la importación de la función Mi_estrategia() del archivo Mi_estrategia.eq4 (versión moderna). Примеры http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

.

En ninguna de estas variantes es posible escribir variables externas para que estén disponibles para el usuario. La única posibilidad de especificar variables externas es escribirlas en AG_exp.ex4 durante la fase de diseño, lo cual está hecho. Los valores de las variables se pasan en tránsito a través de AG_AT() al usuario My_Strategy() en la matriz Instrument. Esta es la tecnología adoptada en la última versión de AutoGraf 4 y funciona bien.

--

¿Qué significa todo esto para el usuario? Esto significa que cualquier usuario puede escribir su propia estrategia y ejecutarla en un entorno de AutoGraf 4. Al mismo tiempo, su propia estrategia funcionará y todas las características de AutoGraf 4 estarán disponibles para el usuario. En particular, cualquier herramienta de AutoGraf 4 (¡!), como los tirones, los vuelcos, los sonidos, etc., puede controlarse desde la estrategia.

Para los programadores profesionales, la tecnología ofrece la posibilidad de pasar una variable de contraseña personalizable en el archivo de estrategia. Esto significa que los programadores pueden escribir estrategias para AutoGraf 4 y distribuirlas de forma comercial (por ejemplo, sólo para una cuenta específica).

 
LeonidSB писал(а) >>

Estimados señores.

Estoy considerando el siguiente diagrama de cadena de conexión:

La función AG_AT es un conmutador para seleccionar las estrategias a unir.

Sí. Correcto.

 
LeonidSB писал(а) >>

¡Señoras y señores!

Por favor, responda a una pregunta.

Si la función AT no es un interruptor, sino que contiene un código de estrategia, entonces (aunque entiendo que no hay diferencia), ¿cómo distingue la aplicación que la función AT le está dando instrucciones (por ejemplo, refiriéndose al terminal), en lugar de operar ella misma?

La estrategia puede pasar a la aplicación:

- valores de los parámetros comunes ajustables (SL, TP, Lots, etc.)

- Parámetros de los instrumentos que se van a instalar o eliminar

La estrategia no transmite las órdenes de apertura y cierre a la aplicación (esto está previsto en AG 5 sobre la base de las capacidades de MQL 5) y actualmente (en AG 4) esto no es estrictamente necesario. La estrategia puede y debe abrir/cerrar órdenes utilizando el algoritmo propio del usuario.

Si la función AT genera una orden de negociación y no hay ninguna línea de código que registrar en la aplicación, la estrategia negociará por sí misma. La aplicación, en este caso, se limita a transmitir la orden al terminal sin ningún tipo de contabilidad o procesamiento.

Si lo hay, la orden pasa por la aplicación en los parámetros de la función AT pasados por enlace.

¿Lo he entendido bien?

No está muy claro a qué llamas "una línea de código que hay que contabilizar en la aplicación".

La aplicación contabiliza las órdenes siempre que recibe el control de vuelta. En cada iteración de un ciclo grande, la matriz de órdenes recalculada se pasa a AG_AT y luego a la estrategia. Basándose en el recuento de órdenes, la estrategia puede calcular las acciones de control adecuadas. La aplicación de la estrategia debería actualizarse con más frecuencia para que la estrategia tenga siempre una serie de órdenes frescas.

Una orden de negociación desde cualquier parte del programa (aplicación o AG_AT o una estrategia) va directamente al terminal MT4 y directamente al servidor. Tras la ejecución de la orden en el servidor, el control vuelve de la misma manera al punto de envío de la orden comercial. Mientras se procesa la orden en el servidor todo queda en silencio y a la espera de la respuesta - no pasa nada (si no me equivoco, en MT5 se cambiará esta tecnología - no vamos a esperar, vamos a trabajar:)

 
Gracias.