Dmitry, ¿qué es esto? ¿Por qué es el artículo en forma de un libro de referencia y tablas de macros?
y ¿dónde están los ejemplos de código, ¿dónde está la esencia de la idea del programador?
Los capítulos que explican el principio y la identificación - por desgracia no arrojó ninguna luz sobre lo que está pasando.
tal impresión que lo escribieron para sí mismos no olvidar la lista de posibles macros.
¿puedes explicar para todos el propósito de lo que está sucediendo en el código? (No estoy interesado en la aplicación, pero sólo en la organización de algoritmos MQL).
Ejem...
Parece un artículo "de un programador para programadores". Sólo que no está claro quién (salvo el autor) lo va a usar. "Aprende mql5" vs "Aprende eIntepretar".
Pero el trabajo realizado es simplemente colosal, es admirable.
Dmitry, ¿qué es esto? ¿Por qué es el artículo en forma de un libro de referencia y tablas de macros?
y ¿dónde están los ejemplos de código, ¿dónde está la esencia de la idea del programador?
Los capítulos que explican el principio y la identificación - por desgracia no arrojó ninguna luz sobre lo que está pasando.
tal impresión que lo escribieron para sí mismos no olvidar la lista de posibles macros.
¿puedes explicar para todos el propósito de lo que está sucediendo en el código? (No estoy interesado en la aplicación, pero sólo en la organización de algoritmos MQL).
Hay 3 o 4 tablas de referencia. El resto son macros con comentarios. El artículo es muy rico informativamente, deberías leerlo sin saltarte ni una sola palabra, no pases al siguiente, si hay aunque sea una idea poco clara (por supuesto, si es necesario y si quieres). Una sola lectura probablemente no le servirá de nada. Si intentas destacar la idea central, no es tan grande y complicada: cualquier estrategia sobre pedidos debe descomponerse en todas las fases de estados posibles, pero se trata de un proceso creativo personal, no formalizado. Aunque, si se desea, se puede formalizar, pero habrá que escribir mucho.
La idea del programador... es tan antigua como el propio ordenador: un programa en lenguaje humano, mediante el cual funciona una máquina de hierro.
Ejemplos de código. Funciones StringFind() y StringSubstr(). En general, puede ser útil estudiar las funciones de cadena en PHP - realmente puede expandir tu creatividad...
Si tratas de poner toda la cantidad de información presentada en el artículo de alguna otra manera, podría ser 5-10 veces más voluminoso...
Lo que sucede en el código... Leemos el archivo línea por línea, separamos los comentarios con el signo "#", dividimos en campos de fase y acción con el signo "|", dividimos los comandos con el signo ";". Luego buscamos subcadenas <, >, <=, <=, etc. en expresiones de comparación. Si encontramos una, anotamos su índice, y la expresión se divide en partes izquierda y derecha por él. Queda la expresión aritmética. Si empieza por + o -, hacemos una sangría de un carácter y buscamos + o - antes de los cuales no haya signo *. Dividimos + o - en subcadenas, y dividimos estas dos subcadenas por el signo *. Después tenemos cuatro argumentos (y uno más a la izquierda de la expresión). Estos argumentos pueden ser comandos. Comprobamos si es un número, o un número con p al final, o una variable de usuario o una variable de usuario con p al final, si es así, lo sustituimos por un número. Si no, es un comando. Separamos el comando en sí y sus argumentos por el signo (.
Lo más interesante es el cálculo de expresiones. Hay estructuras, cinco estructuras con valores en cada estructura, la estructura de valor especifica si el valor es directamente numérico o un comando. Para cada estructura con un valor, se llama a una función para calcular el valor. Si el valor es numérico, la función no hace nada, si es un comando, se llama a la función apropiada (seleccionada mediante switch). Después de rellenar los valores, se calcula la expresión aritmética, allí en la estructura se especifican los signos para los valores y la acción aritmética.... Sólo todo se especifica por números (índices), y la acción necesaria se selecciona a través de switch.
El propio proceso de interpretación de trabajo es de dos niveles de switch: un comando y anidado para el identificador de los datos recibidos sobre el comando. Si usted está interesado, cavar en el código de la función OnTick(), no hay una gran cantidad de código de la misma. La mayor cantidad de código proviene de OnInit() función, pero no es tan interesante allí, se puede hacer como es más conveniente para alguien - sólo StringFind() y StrSubstr() funciones.
- www.mql5.com
Apoyo, necesito un ejemplo de como programar un TS simple, al menos operando en cruces de MAs lentas y rápidas
Khe... Primero deberías leer el artículo completo.
...ser diseñador visual de estrategias.....
Es una buena idea, eso eliminaría un problema... pero uno menor, todavía tendrías que pensar en la estrategia, analizarla, dividirla en fases.
Ejem...
Parece un artículo "de un programador para programadores". Sólo que no está claro quién (salvo el autor) lo va a usar. "Aprende mql5" vs "Aprende eIntepretar".
Y el trabajo realizado es sencillamente colosal, es admirable.
Bueno, hay un poco, ala "Crazy scientist"..... Como premio de consolación, hay una descripción de varias estrategias de orden, aunque no muy detallada, pero con imágenes.... Alguien, tal vez, al menos esto será útil ...
Если постараться изложить весь объем информации представленный в статье как-то иначе, она бы могла поучиться раз в 5-10 объемней...
Podrías poner las tablas de referencia en un dock y simplemente adjuntarlas al artículo.
He vuelto a leer el artículo. Incluso he decidido hacerme una declaración de tesis para entender de qué trata el artículo. Probablemente estoy cerca de entenderlo.
Dimitri, corrígeme si me equivoco.
Entonces, el trabajo del experto será comprobar los estados. Todos ellos. Punto por punto.
Y si alguno de los estados es relevante en este momento - entonces hacemos lo que la macro prescribe para este estado.
La tarea no es crear contradicciones - hacer que varias macros manejen el mismo estado, o evitar conflictos entre dos macros (por ejemplo, una se cierra y la segunda se abre inmediatamente, y habrá una "pelea")
Es decir, la tarea del experto es ejecutar constantemente en un bucle y comprobar TODAS las macros especificadas (lo que escribimos en el archivo o algo más) y hacer lo que prescriben cuando cumplen su condición.
Por ejemplo, digamos que tenemos una estrategia simple (incluso una estrategia de indicador).
Necesitamos abrir una orden cuando MA cruza. Luego pasarla. Y cerrarla forzosamente en algún prefijo.
Lo que hace un programador en este caso.
Él escribe TRES funciones (como macros en su caso)
- la función de comprobación del indicador y apertura de una orden, si el indicador ha dado el OK y no hay pose.
- la función de arrastre, si hay pose
- la función de cierre, si hay una orden y hay beneficio
El orden de llamada de estas funciones puede ser cualquiera. Basta con colocarlas en el check de OnTick por ejemplo
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
Es decir, las funciones son independientes por sí mismas.
Significa que TralPos es independiente por sí misma y la presencia de otras dos funciones no afecta su trabajo de ninguna manera. Todas las comprobaciones necesarias se realizan en ella (búsqueda de una pose, modificación de un stop, etc.)
Del mismo modo, CloseProfit es independiente.
Así que has escrito varias docenas de funciones de este tipo, que son independientes y realizan operaciones atómicas del algoritmo.
Y usted hizo una manera de establecerlos a través de un archivo de prueba con parámetros, de modo que usted podría cambiar los parámetros de las funciones (y por lo tanto del Asesor Experto) sin volver a compilarlo.
¿así?
Sería posible poner las tablas de referencia en un doc y simplemente adjuntarlas al artículo
Es cuestión de gustos, pero si están dentro del artículo, no se pierden.
He vuelto a releer el artículo, incluso he decidido hacerme un enunciado de tesis para entender de qué va el artículo, y probablemente estoy cerca de entenderlo.
Dimitri, corrígeme si me equivoco.
Entonces, el trabajo del experto será comprobar los estados. Todos ellos. Punto por punto.
Sí. En cada tic, se comprueba la relevancia de todas las fases.
Y si alguno de los estados es relevante en el momento - entonces hacemos lo que la macro prescribe para este estado.
Sí. Pero hay algunos matices. Si se realiza una acción de mercado, debe ser una y debe venir primero. Si se establece una orden pendiente, el Asesor Experto comprueba su existencia antes de establecerla.
La tarea es no crear contradicciones - varias macros deben procesar el mismo estado, o dos macros no deben entrar en conflicto (por ejemplo, una se cierra y la segunda se abre inmediatamente, y habrá una "pelea").
No debe haber conflicto. Pero puede haber varias macros para la misma fase, si es más conveniente. Por ejemplo, una fase es la presencia de una posición de mercado, en un lado puede haber una orden Limit y en el otro una orden Stop, o puede escribir tanto una orden Stop como una Limit en una sola línea.
Es decir, la tarea del Asesor Experto es recorrer constantemente el bucle y comprobar TODAS las macros especificadas (que hemos escrito en el archivo o algo más) y hacer lo que prescriben cuando se cumple su condición.
Sí.
Por ejemplo, digamos que tenemos una estrategia simple (incluso una estrategia de indicador).
Necesitamos abrir una orden cuando la MA cruza. Luego pasarla. Y luego cerrarla forzosamente en algún prefijo.
Sí.
Lo que hace un programador en este caso.
Él escribe TRES funciones (como macros en su caso)
- la función de comprobación del indicador y la apertura de una orden si el indicador ha dado una señal y no hay posiciones.
Esta es una fase: hay señal del indicador, pero no hay posiciones. En este caso, su acción es abrir una posición.
- función de arrastre, si hay una posición.
Esto se puede registrar como una fase separada. Identificación de fase - presencia de una posición de mercado. La acción correspondiente es la llamada de la función dearrastre.
- función de cierre, si hay una orden y la orden tiene un beneficio.
Esta es la tercera fase. Hay una posición y su beneficio es superior al valor especificado. La acción es cerrar la posición.
El orden de llamada a estas funciones puede ser cualquiera. Basta con colocarlas en la comprobación en OnTick, por ejemplo.
Y en el fichero con el metaprograma se pueden colocar las líneas en diferente orden.
OnTick()
{
OpenOrder()
TralPos()
CloseProfit()
}
Es decir, las funciones en sí son independientes.
Resulta que las líneas del fichero con el metaprograma también son independientes.
Significa que TralPos es independiente por sí misma y la presencia de otras dos funciones no afecta a su trabajo. En él se realizan todas las comprobaciones necesarias (búsqueda de pose, modificación de parada, etc.).
Una línea del metaprograma también es autosuficiente.
Del mismo modo, CloseProfit es autosuficiente.
Así que usted ha escrito varias docenas de tales funciones que son independientes y realizan la operación atómica del algoritmo.
Y usted ha hecho una manera de establecerlos a través de un archivo de prueba con parámetros, de modo que usted podría cambiar los parámetros de las funciones (y por lo tanto el Asesor Experto) sin volver a compilarlo.
Estas funciones se pueden combinar. La fase se puede determinar no sólo por la presencia de una posición de mercado ... pero muchas variantes, los comandos en la tabla de comandos de acceso.
así?
Una cosa que puede causar malentendidos. De alguna manera he difuminado la diferencia entre acción y estado en el artículo. Si es necesario realizar una acción de mercado al identificar una fase, debería llamarse acción. Y cuando es necesario establecer órdenes pendientes, es más probable que se llame descripción de un estado. Una fase se identifica principalmente por un comentario en una posición de mercado, y esta fase corresponde a una acción (apertura/cierre de una posición de mercado) o a un estado (presencia de algunas órdenes pendientes). Si se trata de una acción de mercado, se supone que tras su ejecución habrá una transición a otra fase. Es importante marcar las órdenes correctamente. Pero en una fase puede haber tanto una acción de mercado como el establecimiento de órdenes. Si la acción de mercado no tiene éxito, todo lo que venga después no se ejecutará. Y si tiene éxito, se ejecutará, en caso de que intente hacer lo máximo posible en un tick. Hay que tener en cuenta que las órdenes pueden no establecerse, pero la acción de mercado se completa, es decir, hay una transición a otra fase.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Estrategias con órdenes Expert Advisor multiuso:
Este artículo se centra en torno a las estrategias que activamente usan órdenes pendientes, un metalenguaje que puede usarse para describir formalmente tales estrategias, así como en el uso de un Expert Advisor multiuso cuya operativa se basa en dichas descripciones.
Pero además, las estrategias pueden requerir otro tipo de análisis. A este último lo llamaremos análisis de la situación actual de trading. Comprende el análisis del estado de la posición y de cualquier orden pendiente disponible u omitida (si se usa alguna en una estrategia). Los resultados de este análisis nos plantean la toma de decisiones sobre si es necesario llevar a cabo determinadas acciones relativas a órdenes y posiciones, como por ejemplo órdenes Stop Loss móvil, cursar y eliminar órdenes pendientes, etc. En otras palabras, este análisis incluye el estudio de la actividad del mercado, las acciones relativas a la situación que hemos creado (o a un Expert Advisor) y las reglas de la estrategia que se está usando.
La orden conocida habitualmente como Trailing Stop puede considerarse, al menos hasta cierto punto, una segunda categoría de elementos presentes en una estrategia de trading. Consideremos el siguiente análisis: si hay una posición abierta con el beneficio mayor que el valor establecido, mientras que Stop Loss no está fijada o se aleja del precio actual, Stop Loss será desplazada.
Trainling Stop es una sencilla función especialmente interesante. Además, puede ser clasificada como una categoría completamente distinta de elementos estratégicos de trading, siendo una función para la gestión de posiciones. De esta forma, una estrategia de trading puede comprender tres categorías de elementos:
Análisis del mercado y acciones relacionadas.
Análisis de la situación actual de trading y acciones relacionadas.
Gestión de las posiciones.
Este artículo se centra en las estrategias que usan activamente órdenes pendientes (las llamaremos estrategias de órdenes para abreviar), un metalenguaje que puede utilizarse para describir dichas estrategias y su desarrollo, así como en el uso de una herramienta multiuso (Expert Advisor) cuya operación se basa en tales descripciones.
Autor: Dmitry Fedoseev