Friday, 10 November 2017

Simple Moving Average Expert Advisor Mt4


MetaTrader 4 - Experts Moving Average - experto para MetaTrader 4 El experto en media móvil para la formación de señales comerciales utiliza una media móvil. La apertura y el cierre de las posiciones se realizan cuando el promedio móvil satisface el precio en la barra recién formada (índice de barras igual a 1). El tamaño del lote se optimizará según un algoritmo especial. El asesor experto analiza la concurrencia de la media móvil y la tabla de precios de mercado. La comprobación se realiza mediante la función CheckForOpen (). Si la media móvil cumple con la barra de tal manera que la primera es superior al precio abierto pero inferior al precio cerrado, se abrirá la posición de COMPRA. Si la media móvil cumple con la barra de tal manera que la primera sea inferior al precio de apertura pero superior al precio de cierre, se abrirá la posición de venta. La gestión del dinero utilizada en el experto es muy simple, pero eficaz: el control sobre cada volumen de posición se realiza en función de los resultados de las transacciones anteriores. Este algoritmo es implementado por la función LotsOptimized (). El tamaño del lote básico se calcula sobre la base del riesgo máximo permitido: El parámetro MaximumRisk muestra el porcentaje de riesgo básico para cada transacción. Por lo general, posee un valor entre 0,01 (1) y 1 (100). Por ejemplo, si el margen libre (AccountFreeMargin) es igual a 20.500 y las reglas de administración de capital prescriben usar el riesgo de 2, el tamaño del lote básico hará 20500 0.02 / 1000 0.41. Es muy importante controlar la precisión del tamaño del lote y normalizar el resultado con los valores permitidos. Normalmente, se permiten lotes fraccionados con paso de 0,1. No se realizará una transacción con un volumen de 0,41. Para normalizar, la función NormalizeDouble () se utiliza con precisión hasta 1 carácter después del punto. Esto resulta en el lote básico de 0,4. El cálculo del lote básico sobre la base del margen libre permite aumentar los volúmenes de operación dependiendo del éxito comercial, es decir, el comercio con la reinversión. Éste es el mecanismo básico con la gestión obligatoria del capital para aumentar la eficacia de los intercambios. DecreaseFactor es la medida en que el tamaño del lote se reducirá después de un comercio no rentable. Los valores normales son 2,3,4,5. Si las transacciones precedentes no eran rentables, los volúmenes posteriores disminuirán por un factor de DecreaseFactor para esperar a través del período no rentable. Este es el principal factor en el algoritmo de gestión de capital. La idea es muy simple: si el comercio está aumentando con éxito, el experto trabaja con el lote básico de obtener el máximo beneficio. Después de la primera transacción no rentable, el experto reducirá la velocidad hasta que se realice una nueva transacción positiva. El algoritmo permite desactivar la reducción de velocidad, para ello, se tiene que especificar DecreaseFactor 0. El importe de las últimas transacciones no rentables sucesivas se calcula en el historial comercial. El lote básico se recalculará sobre esta base: Por lo tanto, el algoritmo permite reducir eficazmente el riesgo que se produce como resultado de una serie de transacciones no rentables. El tamaño del lote se comprueba obligatoriamente para el tamaño de lote mínimo permitido al final de la función porque Los cálculos realizados anteriormente pueden resultar en el lote 0: El experto está principalmente destinado a trabajar con el período diario, y en el modo de prueba - para hacer a precios cerrados. Se comercializará sólo en la apertura de una nueva barra, es por eso que los modos de cada modelo de garrapatas no son necesarios. Los resultados de las pruebas se representan en el informe. Promedio de la media El Indicador técnico de la media móvil muestra el valor medio del precio del instrumento durante un cierto período de tiempo. Cuando se calcula la media móvil, se calcula la media del precio del instrumento para este período de tiempo. A medida que el precio cambia, su promedio móvil aumenta o disminuye. Hay cuatro tipos diferentes de promedios móviles: Simple (también conocido como Aritmética), Exponencial. Suavizado y ponderado. El Promedio móvil puede calcularse para cualquier conjunto de datos secuenciales, incluyendo precios de apertura y cierre, precios más altos y más bajos, volumen de operaciones o cualquier otro indicador. A menudo es el caso cuando se usan promedios móviles dobles. Lo único en que los promedios móviles de diferentes tipos divergen considerablemente entre sí, es cuando los coeficientes de peso, que se asignan a los últimos datos, son diferentes. En el caso de que estamos hablando de Media móvil simple. Todos los precios del período de tiempo en cuestión son iguales en valor. La media móvil exponencial y la media móvil ponderada lineal atribuyen más valor a los precios más recientes. La forma más común de interpretar el precio promedio móvil es comparar su dinámica con la acción del precio. Cuando el precio del instrumento sube por encima de su promedio móvil, aparece una señal de compra, si el precio cae por debajo de su media móvil, lo que tenemos es una señal de venta. Este sistema de comercio, que se basa en la media móvil, no está diseñado para proporcionar la entrada en el mercado justo en su punto más bajo, y su salida a la derecha en el pico. Permite actuar de acuerdo con la siguiente tendencia: comprar poco después de que los precios lleguen al fondo, y venderlo poco después de que los precios hayan alcanzado su pico. Los promedios móviles también pueden aplicarse a los indicadores. Es ahí donde la interpretación de las medias móviles de los indicadores es similar a la interpretación de los promedios móviles de los precios: si el indicador sube por encima de su media móvil, es probable que continúe el movimiento del indicador ascendente: si el indicador cae por debajo de su promedio móvil, Significa que es probable que siga bajando. Estos son los tipos de promedios móviles en el gráfico: Promedio móvil simple (SMA) Promedio móvil exponencial (EMA) Promedio móvil suavizado (SMMA) Promedio móvil ponderado lineal (LWMA) Puede probar las señales comerciales de este indicador creando un Asesor experto En MQL5 Asistente. Cálculo Promedio móvil simple (SMA) Simple, en otras palabras, el promedio móvil aritmético se calcula sumando los precios del cierre del instrumento durante un cierto número de períodos individuales (por ejemplo, 12 horas). Este valor se divide entonces por el número de tales períodos. SMA SUM (CERRAR (i), N) / N SUM SUM CERRAR (i) período actual precio de cierre N número de períodos de cálculo. Promedio móvil exponencial (EMA) La media móvil suavizada exponencialmente se calcula sumando una cuota determinada del precio de cierre actual al valor anterior de la media móvil. Con promedios móviles suavizados exponencialmente, los últimos precios de cierre son de mayor valor. La media móvil exponencial de P por ciento se verá así: EMA (CERRAR (i) P) (EMA (i - 1) (1 - P)) CERRAR (i) De un período anterior P el porcentaje de utilización del valor del precio. Promedio móvil suavizado (SMMA) El primer valor de esta media móvil suavizada se calcula como la media móvil simple (SMA): SUM1 SUM (CLOSE (i), N) La segunda media móvil se calcula de acuerdo con esta fórmula: SMMA (i) (I) (N) () () () () NMA (i - 1) ) / N SUM sum SUM1 suma total de los precios de cierre para N periodos se cuenta desde la barra anterior PREVSUM suma suavizada de la barra anterior SMMA (i-1) media móvil suavizada de la barra anterior SMMA (i) media móvil suavizada de la barra Barra actual (excepto la primera) CERRAR (i) precio de cierre actual N período de suavizado. Después de conversiones aritméticas, la fórmula puede simplificarse: SMMA (i) (SMMA (i - 1) (N - 1) CERRAR (i)) / N Promedio móvil ponderado lineal (LWMA) En el caso de la media móvil ponderada, Tiene más valor que los datos más antiguos. La media móvil ponderada se calcula multiplicando cada uno de los precios de cierre dentro de la serie considerada por un cierto coeficiente de ponderación: LWMA SUM (CLOSE (i) i, N) Suma total (I, N) suma total de los coeficientes de peso N período de suavizado. El Promedio de Media Promedio Asesor experto El promedio móvil de cruce es una de las estrategias comerciales más populares. Utiliza dos o más medias móviles de diferentes períodos para determinar la dirección de la tendencia. Cuando la (s) media (s) más rápida (s) está por encima de la (s) media (s) móvil (es) más lenta, se abre una posición larga y viceversa para una posición corta. La media móvil se destaca en las tendencias largas y sostenidas como estrategia de negociación de mediano / largo plazo. Las estrategias basadas en la media móvil cruzada siempre han sido solicitados frecuentemente por nuestros clientes, y es por eso que ofrecemos el promedio de media móvil asesor experto. Ahora usted puede comprar este asesor experto popular para más de 50 años de antigüedad 45, el asesor de expertos de lujo del índice de media móvil ahora es sólo 19,95 características hasta 3 líneas de media móvil. Utilice dos promedios móviles, o agregue un tercio para filtrar tendencias a largo plazo. Tipos de media móvil. Sencillo . Exponencial. Suavizado o lineal ponderado. Datos de precios. Elija entre Cerrar, Abrir, Alto, Bajo, Mediano, Típico o Ponderado Cerrar. Cambio . Cambie las líneas del promedio móvil hacia delante o hacia atrás. Múltiples marcos temporales. Cada media móvil se puede establecer en cualquier período de tiempo de gráfico. Gestión del dinero: el tamaño del lote se calcula automáticamente para que el riesgo máximo por operación se limite a un porcentaje de su capital. Trailing Stop / Break Even Stop - Ajusta automáticamente la pérdida de stop como el comercio se mueve en beneficio. Establecer los niveles de beneficio mínimo, paso de arrastre en incrementos y más Daily Trade Timer - Limitar su comercio intradía a las horas que el mercado es más activo. Opcionalmente puede cerrar todas las órdenes abiertas al final del día. Manual Order Control - Coloque los pedidos manuales en su carta con un comentario comercial especificado, y el EA Cross EA rastreará la pérdida de parada y cerrar el pedido automáticamente en una cruz opuesta. Ejecutar una vez por barra o cada marca. Elija la frecuencia con la que desea comprobar las condiciones de apertura y cierre del pedido. Usted puede negociar en cada garrapata, o sólo en el cierre de cada barra. Close On Cross - Cierra la posición abierta actualmente en una cruz de media móvil en la dirección opuesta. Si está inhabilitado, los pedidos sólo se cerrarán en una pérdida de stop o manualmente. Robusto. Manejo completo de errores y notificación, reintento en requotes, y mucho más. Totalmente compatible con ECN y corredores de 5 dígitos. Alertas: elija entre alertas de audio, el cuadro de diálogo de alerta integrada, alertas por correo electrónico o notificaciones enviadas a su teléfono inteligente. Usted puede comprar la media móvil de Cross EA instantáneamente para sólo 19.95Simple Expert Advisor Problema 29. Crear un experto en comercio de asesoramiento. Argumentos Preliminares Antes de comenzar a programar un Asesor Experto en comercio, es necesario definir los principios generales de un programa futuro. No hay un programa estricto que crea reglas. Sin embargo, una vez que ha creado un programa, un programador por lo general sigue mejorando. Para poder entender fácilmente el programa en el futuro, debe crearse de acuerdo con un esquema bien pensado y fácil de entender (es especialmente importante si un programa va a ser mejorado por otro programador). El programa más conveniente es el que consiste en bloques funcionales, cada uno de los cuales es responsable de su parte de cálculos. Para crear un algoritmo de un asesor experto en comercio, vamos a analizar lo que un programa operativo debe hacer. Uno de los datos más importantes en la formación de órdenes comerciales es la información sobre los pedidos que ya existen en un terminal cliente. Algunas de las estrategias de negociación permiten un solo orden unidireccional. Generalmente, si una estrategia de negociación permite, varias órdenes pueden estar abiertas en un terminal al mismo tiempo, aunque su número debería ser razonablemente limitado. Cuando se utiliza cualquier estrategia, las decisiones comerciales deben tomarse teniendo en cuenta la situación actual. Antes de que se tome una decisión comercial en un programa, es necesario saber qué órdenes comerciales ya se han abierto o colocado. En primer lugar, un programa debe contener un bloque de órdenes de contabilidad que está entre los primeros en ejecutarse. Durante una ejecución de EA se deben tomar decisiones comerciales, cuya implementación conduce a la ejecución de operaciones comerciales. La parte del código responsable de la formación de órdenes comerciales se escribe mejor en un bloque separado. Un asesor experto puede formar una solicitud de comercio para abrir una nueva orden pendiente o de mercado, cerrar o modificar cualquiera de las órdenes existentes o no realizar ninguna acción. Una EA también debe calcular los precios de pedido en función del deseo de los usuarios. Las decisiones comerciales deben tomarse en un programa sobre la base de criterios comerciales. El éxito de todo el programa depende de la corrección de la detección de criterios comerciales en el programa. Al calcular los criterios comerciales, un programa puede (y debe) tener en cuenta toda la información que pueda ser útil. Por ejemplo, un Asesor experto puede analizar la combinación de valores de indicadores técnicos, el tiempo de los comunicados de prensa importantes, la hora actual, los valores de algunos niveles de precios, etc. Por conveniencia, la parte del programa responsable del cálculo de los criterios de negociación debe escribirse en un bloquear. Un Asesor Experto debe contener necesariamente un bloque de procesamiento de errores. El análisis de los errores que pueden producirse en la ejecución de la operación comercial permite, por un lado, repetir una solicitud comercial y, por otro lado, informar al usuario sobre una posible situación de conflicto. Estructura de un Asesor Experto Simple A continuación se muestra un esquema estructural de un Asesor Experto simple construido sobre la base de varios bloques funcionales, en cada bloque una cierta parte separada de los cálculos. En la etapa de desarrollo de EA siguiente todavía no hay código de programa. Al mismo tiempo, el algoritmo de un programa se forma en gran medida. Cómo se construirá la EA sobre las bases del esquema ofrecido puede ser fácilmente entendido simplemente mirando el esquema y orientándose sobre nombres de bloques y matrices de relaciones (control passing) entre ellos. Después del control de arranque del programa se pasa al bloque de procesamiento preliminar. En este bloque se pueden analizar algunos parámetros generales. Por ejemplo, si no hay suficientes barras en una ventana (barras necesarias para calcular parámetros de indicadores técnicos), una EA no podrá funcionar adecuadamente. En tal caso, una EA debe terminar la operación informando preliminarmente al usuario sobre ella e informando sobre el motivo de la terminación. Si no hay contraindicadores de carácter general, se pasa el control al bloque de contabilidad del pedido. En el bloque de órdenes de contabilidad se detecta el número y la calidad de los pedidos existentes en un terminal cliente para una seguridad (a la ventana de la que está conectada la EA). En este bloque deben eliminarse los pedidos de otros valores. Si una estrategia de negociación programada requiere el uso de sólo órdenes de mercado (y no utiliza órdenes pendientes) debe detectarse el hecho de la presencia de órdenes pendientes. Si una estrategia admite sólo una orden de mercado y hay realmente varias órdenes, este hecho también debe ser conocido. La tarea del bloque de contabilidad de órdenes (en este esquema) consiste en definir si la situación comercial actual se corresponde con una esperada, es decir, aquella en la que la EA puede funcionar adecuadamente. Si la situación se corresponde, el control debe pasar al siguiente bloque para continuar la operación de EAs si no, la operación de EA debe ser terminada y este hecho debe ser reportado a un usuario. Si no hay órdenes en el terminal o el número y la calidad de las órdenes existentes corresponde a lo que se esperaba, el control se pasa al bloque de definir los criterios de negociación. En este bloque se calculan todos los criterios necesarios para tomar decisiones comerciales, es decir, los criterios de apertura, cierre y modificación de órdenes. El control adicional se pasa al bloque de órdenes de cierre. Es fácil entender por qué en el esquema ofrecido el bloque de órdenes de cierre se ejecuta antes que el bloque de órdenes de apertura. Siempre es más razonable procesar las primeras órdenes existentes (cerrar o modificar) y sólo después de eso abrir órdenes nuevas. Generalmente, es correcto estar guiado por el deseo de tener tan pocos pedidos como sea posible. Durante la ejecución de este bloque se deben cerrar todos los pedidos, para los que se ha activado el criterio de cierre. Después de que todas las órdenes necesarias han sido cerradas, el control se pasa a un bloque de nuevo cálculo de tamaño de órdenes. Hay un montón de algoritmos para calcular un volumen de pedido. La más simple de ellas es usar un tamaño de lote constante y fijo. Es conveniente utilizar este algoritmo en un programa para probar estrategias. Un método más popular de definir un tamaño de orden es establecer el número de lotes dependiendo de la cantidad de margen libre, por ejemplo 30-40 de la misma. Si el margen libre no es suficiente, el programa termina su operación informando al usuario sobre la razón. Después de definir el número de lotes para la apertura de nuevos pedidos, el control se pasa al bloque de apertura del pedido. Si alguno de los criterios calculados anteriormente señala la necesidad de abrir una orden de cierto tipo, se forma en este bloque una solicitud de negociación para abrir una orden. También hay un bloque de análisis de errores en un asesor experto. Si falla alguna operación comercial, el control (sólo en este caso) se pasa al bloque de procesamiento de errores. Si un error devuelto por un servidor o un terminal de cliente no es crucial, se hace un intento más para realizar una operación comercial. Si se devuelve un error crucial (por ejemplo, una cuenta se bloquea), un EA debe finalizar su operación. Recuerde que en MQL4 no hay posibilidad de que el programa termine una operación de EA en una ventana de seguridad (a diferencia de los scripts, vea Funciones especiales). Lo que se puede hacer de una manera programada es la terminación de start (). En un nuevo comienzo de la función start () en una nueva marca el valor de una determinada bandera variable que prohíbe la negociación (en este caso habilitada como resultado de un error crítico) puede ser analizado y el control puede ser pasado para la terminación de la Operación de la función especial así la formación de la nueva petición del comercio no se permite. En el esquema ofrecido se analiza el valor del indicador en el bloque de procesamiento preliminar. Estrategia de negociación Los precios de mercado se están moviendo constantemente. El estado del mercado en cualquier momento puede caracterizarse condicionalmente como una tendencia - fuerte cambio de precio unidireccional (subida o bajada), o como un movimiento de precio plano - lateral con desviaciones débiles de una cierta media. Estas características del mercado son condicionales, porque no existen criterios claros, según los cuales se pueda identificar la tendencia o el plano. Por ejemplo, movimientos laterales largos con fuertes desviaciones que no se pueden rastrear ni a un plano ni a una tendencia. En general se supone que el mercado se encuentra principalmente en el estado de movimiento lateral y las tendencias suelen tener lugar 15-20 de tiempo. Todas las estrategias comerciales también se pueden dividir convencionalmente en dos grupos principales. El primer grupo contiene estrategias planas. La idea principal de estas estrategias es que después de una evidente desviación el precio debe volver a la posición anterior, es por eso que las órdenes se abren en la dirección contraria al último movimiento de precios. Las estrategias del segundo grupo son estrategias de tendencia, cuando los pedidos se abren en la misma dirección que el movimiento del precio del sal. Hay estrategias más complicadas (combinadas). Tales estrategias tienen en cuenta muchos factores diferentes que caracterizan el mercado como resultado de comercio se puede ejecutar tanto en plano y tendencia. No es difícil implementar el comercio de acuerdo con esta o aquella estrategia técnicamente - MQL4 contiene todos los medios necesarios para ello. El trabajo principal en la creación de una vez estrategia propia consiste en la búsqueda de criterios comerciales. Criterios de Negociación En este ejemplo trataremos de construir un asesor experto en tendencias, es decir, el que abrirá órdenes en la dirección de movimiento de precios. Por lo tanto, tenemos que encontrar entre varios indicadores técnicos los que detectan una tendencia de inicio. Uno de los métodos más simples de búsqueda de criterios comerciales se basa en el análisis de la combinación de MA con diferentes períodos de promedio. Higo. 111 y la fig. 112 muestran la posición de dos MA diferentes (con períodos de promedio 11 y 31) en diferentes partes del mercado. Los promedios con un pequeño período de promedio (líneas rojas) están más cerca de un gráfico de precios, twisty y movible. Los promedios móviles con mayor período de promediación (línea azul) son más inertes, tienen mayor retraso y están situados más lejos de los precios de mercado. Vamos a prestar atención a los lugares donde MA con diferentes períodos de promediación cruzar y tratar de decidir, si el hecho de MA cruzamiento se puede utilizar como un criterio de lectura. Higo. 111. Cruce de MA (11) y MA (31) cuando cambia la dirección del movimiento del precio. En la Fig. 111 vemos una parte del mercado en la que se justifican las órdenes de apertura en el sentido de movimiento de precios en el cruce MA. En el punto A la línea roja cruza la azul de abajo hacia arriba, después de que el precio de mercado continúa creciendo durante algún tiempo. El avance inverso del MA indica el cambio de dirección del movimiento del precio. Si abrimos una orden de Compra en el punto A y la cerramos en B, obtendremos un beneficio proporcional a la diferencia de los precios de A y B. Higo. 112. Cruce de MA (11) y MA (31) cuando cambia la dirección de movimiento del precio. Al mismo tiempo hay otros momentos en el mercado cuando se cruzan MA, pero esto no conduce a una subida o caída de precios aún más considerable (Fig. 112). Las órdenes abiertas en el cruce de MA en tales momentos darán lugar a pérdidas. Si Sell se abre en A y se cierra en B, dicha negociación traerá pérdidas. Lo mismo puede decirse de una orden de compra abierta en B y cerrada en C. El éxito de toda la estrategia implementada sobre la base del cruce de MA depende del número de piezas que se pueden caracterizar como tendencia y plana. En plano, a menudo MA crossing es un evento regular que interfiere con cualquier estrategia de tendencia. Numerosas señales falsas, por regla general, conducen a pérdidas. Esta es la razón por la que este cruce de signos de MA con diferentes períodos de promedio puede ser utilizado para la construcción de estrategias comerciales sólo en combinación con otros signos que demuestran una tendencia. En este ejemplo (para la construcción de un asesor experto simple) tendremos que rechazar el uso de este signo. Usaremos otra señal. Analizando visualmente el carácter de los cambios de precios en el mercado, podemos ver que una larga subida o caída de una dirección de precios a menudo aparece como resultado de un movimiento corto y fuerte. En otras palabras, si en un corto período se produjera un fuerte movimiento, podemos esperar su continuación en un período de mediano plazo. Higo. 113 muestra el período de mercado cuando un movimiento fuerte dio lugar a la continuación del cambio de precio en la misma dirección. Como el movimiento fuerte de cuota podemos utilizar la diferencia de MAs con diferentes períodos de promedio. Cuanto más fuerte sea el movimiento, mayor será el retraso de MA con un período promedio más grande de MA con un pequeño período de promedio. Además, incluso fuertes movimientos de precios discontinuos con retorno adicional no dan lugar a una gran diferencia entre MAs, es decir, no aparecen numerosas señales falsas. Por ejemplo, el salto de precios por 50 puntos con un retorno adicional (en el centro en la figura 113) implicó un aumento de la diferencia entre MAs sólo en 20 puntos. Al mismo tiempo, un movimiento realmente fuerte (que no suele acompañarse de una corrección considerable) en el punto A dio lugar a que la diferencia aumentara hasta 25-30 puntos. Si se abre el pedido de compra cuando se alcanza un cierto valor de diferencia entre MA, por ejemplo en A, lo más probable es que el pedido sea rentable cuando un precio alcanza un valor de orden de parada preestablecido. Utilice este valor como criterio de negociación en nuestro asesor experto. Número de órdenes En este ejemplo, analizamos un asesor experto que admite la presencia de una única orden de mercado, no se proporcionan órdenes pendientes. Este enfoque se justifica no sólo en este ejemplo, sino que puede servir de base para cualquier estrategia. Los pedidos pendientes usualmente se usan cuando un desarrollador tiene un criterio bastante confiable para pronosticar el cambio de precio futuro con alta probabilidad. Si no existe tal criterio, no hay necesidad de utilizar órdenes pendientes. La situación cuando varias órdenes opuestas para una seguridad están abiertas también no puede considerarse razonable. Se escribió anteriormente que desde el punto de vista económico se considera que los órdenes opuestos son insensatos, especialmente si los precios del pedido son iguales (ver Cierre y Supresión de Órdenes). En tal caso debemos cerrar un orden por otro y esperar una señal para abrir un orden de mercado en una determinada dirección. Relación de Criterios de Negociación Desde esta posición se hace evidente qué relaciones son posibles entre los criterios de negociación. Higo. 114 muestra tres variantes de correlación de criterios de negociación, cuando cada criterio es importante (válido). Las acciones (apertura y cierre de órdenes de mercado) se realizan en el sentido de las agujas del reloj en las siguientes imágenes. Higo. 114. Ordene la correlación de los criterios de apertura y cierre (a y b - correcta, c - incorrecta). La variante más popular de un criterio de negociación correctamente formado es la variante a. Después de abrirse una orden de mercado la compra se mantiene hasta el momento en que el criterio que requiere su cierre dispara. Después de esto se produce una pausa cuando no se abren órdenes. Además, se puede abrir una venta en el mercado. Las condiciones para cerrar una orden de venta (de acuerdo con los criterios correctamente formados) se producen antes, que las condiciones para abrir una orden de compra. Sin embargo, una orden de compra se puede abrir una vez más, si un criterio de negociación requiere esto. Pero de acuerdo con esta variante no se puede abrir una orden de mercado si hay un orden de mercado abierto en la dirección contraria. La correlación de criterios similar se encuentra en la variante b. La diferencia es que un criterio para abrir cualquier orden de mercado es al mismo tiempo un criterio para cerrar el orden opuesto. Esta variante como la variante a no permite varias órdenes abiertas en el terminal al mismo tiempo en una seguridad. La variante de correlación de criterios es incorrecta. De acuerdo con esta variante se permite la apertura de una orden de mercado cuando las órdenes contrarias no se cierran todavía, lo cual es insensato. Puede haber casos raros cuando esta variante está parcialmente justificada. La apertura de una orden opuesta a veces es aceptable para compensar las pérdidas que ocurren con pequeñas correcciones después de fuertes movimientos de precios. En tales casos se puede abrir un orden opuesto del mismo valor o menor que el existente y luego cerrarse cuando la corrección ha terminado. Tal táctica permite no interferir con el orden quotmainquot abierto en la dirección de la tendencia. En general, también son posibles varias órdenes de una dirección. Esto puede justificarse cuando un orden abierto anterior está protegido por una orden Stop y el criterio que apunta a la evolución de los precios en la misma dirección se activa de nuevo. Sin embargo, al crear una estrategia de este tipo, un desarrollador debe ser plenamente consciente de que en caso de un cambio brusco de movimiento de precios, las órdenes de stop colocadas pueden no ser ejecutadas por algunos corredores al primer toque de precio. Y la pérdida será proporcional al valor total de las órdenes de mercado unidireccionales. En nuestro ejemplo utilizamos la variante b de la correlación de criterios de negociación. Todas las órdenes de mercado abiertas están cerradas por una orden de stop o después de un criterio de apertura de una orden en sentido contrario desencadenantes (aquí criterio de cierre de compra coincide con el de apertura de venta y viceversa). Tamaño de las órdenes abiertas En cualquier estrategia de negociación los tamaños de la orden deben ser razonablemente limitados. En un caso simple, se utiliza un tamaño de pedido fijo en un asesor experto. Antes de que comience la operación EA, un usuario puede establecer cualquier tamaño de órdenes futuras y dejarlo sin cambios durante algún tiempo. Además, si el balance cambia, un usuario puede configurar un nuevo valor de números de lote de pedidos abiertos. Un tamaño de pedido demasiado pequeño proporciona más confianza en la operación ante el imprevisible cambio de mercado, pero el beneficio en caso de éxito no será tan grande. Si el tamaño del pedido es demasiado grande, se pueden obtener grandes ganancias, pero tal EA será demasiado arriesgada. Por lo general, el tamaño de las órdenes abiertas se establece de tal manera que los requisitos de margen no excedan de 2-35 por ciento del saldo o margen libre (si una estrategia permite sólo un orden abierto, el equilibrio y el margen libre en el momento antes de la apertura de la orden será igual). En este ejemplo se implementan ambas variantes. Un usuario puede elegir indicar directamente valores de órdenes o establecer el valor en porcentaje del margen libre. Detalles de programación Una tendencia simple Asesor experto tradingexpert. mq4 construido sobre la base de argumentos anteriores puede tener este aspecto: Describiendo variables Un criterio más en la estimación del programa es su legibilidad. Un programa se considera que está escrito correctamente, si puede ser leído fácilmente por otros programadores, es por eso que todas las partes del programa principal y los principales momentos que caracterizan la estrategia deben ser comentados. También es por eso que se recomienda declarar y comentar todas las variables al inicio del programa. En el bloque 1-2 se describen variables externas y globales. De acuerdo con las reglas, las variables externas y globales deben ser abiertas antes de su primer uso (ver Tipos de Variables), es por eso que se declaran en la parte de la cabeza del programa. Todas las variables locales de la función start () se recogen y se describen en la parte superior de la función (bloque 2-3) inmediatamente después de la cabecera de la función. Las reglas de declarar variables locales no lo requieren, pero tampoco lo prohíben. Si un programador se enfrenta a dificultades para entender el significado de una variable al leer el programa, puede referirse a la parte superior del programa y averiguar el significado y el tipo de cualquier variable. Es muy conveniente en la práctica de la programación. Bloque de tratamiento preliminar En este ejemplo, el preproceso consiste en dos partes (bloque 3-4). El programa termina la operación si no hay suficientes barras en una ventana de seguridad en tal caso es imposible detectar correctamente (en el bloque 5-6) los valores de las medias móviles necesarias para calcular los criterios. Además aquí se analiza el valor de la variable Trabajo. En la operación EA normal, el valor de la variable es siempre verdadero (se establece una vez durante la inicialización). Si se produce un error crítico en la operación del programa, se asigna false a esta variable y start () finaliza su operación. Este valor no cambiará en el futuro, es por eso que no se ejecuta el código siguiente. En tal caso, la operación del programa debe ser detenida y el motivo del error crítico debe ser detectado (si es necesario, se debe contactar a un centro de negociación). Una vez solucionada la situación, se puede iniciar de nuevo el programa, es decir, el EA se puede conectar a una ventana de seguridad. Órdenes de contabilidad El consejero experto descrito permite trabajar sólo con una orden de mercado. La tarea del bloque de contabilización de órdenes (bloque 4-5) es definir las características de un orden abierto, si lo hay. En el bucle que va a través de las órdenes para todo el mercado existente y las órdenes pendientes se comprueban, a saber de la primera (int i1) a la última (iampltOrdersTotal ()). En cada ciclo de iteración el siguiente orden es seleccionado por la función OrderSelect (). La selección se realiza desde una fuente de órdenes abiertas y pendientes (SELECTBYPOS). Si la selección se ejecuta con éxito (es decir, hay una orden más en el terminal), además este orden y la situación debe ser analizada: si el orden se abre para la seguridad, en la que la EA opera, si el orden es de mercado o pendiente También debe tenerse en cuenta al contar órdenes. En la línea: se eliminan todas las órdenes abiertas para otra seguridad. El operador continúa detiene la iteración y las características de tal orden no se procesan. Pero si se abre el pedido para la seguridad, a la ventana de la que se adjunta la EA, se analiza más a fondo. Si OrderType () devuelve un valor mayor que 1 (consulte Tipos de transacciones), la orden seleccionada es una pendiente. Sin embargo, en este Asesor experto gestionar órdenes pendientes no se proporciona. Significa que la ejecución de start () debe terminar, porque se produjo una situación de conflicto. En tal caso después de un mensaje sobre la operación start () la terminación start () la ejecución es detenida por el retorno del operador. Si el último cheque mostró que la orden analizada es una orden de mercado, se calcula y analiza el número total de pedidos para un valor. Para la primera de estas órdenes se definen todas las características necesarias. Si en la siguiente iteración el contador de órdenes (variable Total) encuentra la segunda orden de mercado, también se considera que la situación es conflictiva, ya que la EA no puede administrar más de una orden de mercado. En tal caso, la ejecución start () se detiene después de mostrar un mensaje correspondiente. Como resultado de la ejecución del bloque de contabilidad de pedido (si todas las comprobaciones tuvieron éxito) la variable Total conserva su valor cero si no hay órdenes de mercado o obtiene el valor 1 si existe una orden de mercado para nuestra seguridad. En este último caso, algunas variables establecidas en correspondencia con las características de orden (número, tipo, precio de apertura, niveles de parada y valor de pedido) también obtienen sus valores. Cálculo de los criterios de negociación En el ejemplo analizado, la definición de los criterios de negociación (bloque 5-6) se calcula sobre la base de la diferencia entre las medias móviles con diferentes períodos de promediación. De acuerdo con los criterios aceptados, un gráfico es dirigido al toro si el valor actual del MA con un período menor es mayor que el valor del MA con un período mayor y la diferencia entre los valores es mayor que un cierto valor. En un movimiento de oso MA con período menor es menor que MA con un período mayor y la diferencia es también mayor que un cierto valor crítico. A los valores de comienzo de bloque de MAs con periodos de promedio PeriodMA1 y PeriodMA2 se calculan. El hecho de significación de cualquier criterio de negociación se expresa a través del valor de una variable correspondiente. Las variables OpnB y OpnS indican el criterio de activación para la apertura de las órdenes de compra y venta, las variables Cls y ClsS para el cierre. Por ejemplo, si un criterio para la apertura de Buy no se ha activado, el valor de OpnB sigue siendo falso (establecido en la inicialización de la variable) si se ha activado, OpnB obtiene el valor true. En este caso el criterio para cerrar Sell coincide con el de apertura Buy, el criterio de apertura Sell coincide con el de closing Buy. Los criterios de negociación aceptados en este ejemplo se usan únicamente con fines educativos y no deben considerarse como una guía cuando se cotiza en una cuenta real. Órdenes de Cierre Se escribió anteriormente que este Asesor Experto está destinado a la operación sólo con una orden de mercado abierta para una seguridad, a la que se adjunta la EA. Hasta el momento en que el control en el programa se pasa al bloque de cierre de pedido se sabe con certeza que en el momento actual no hay órdenes para la seguridad, o sólo hay una orden de mercado. Es por eso que el código en el bloque de cierre de órdenes se escribe para que sólo una orden se puede cerrar con éxito. Este bloque se basa en el bucle infinito, mientras que el cuerpo del mismo consta de dos partes análogas: una para cerrar una orden de compra, otra para cerrar una orden de venta. Mientras que se utiliza aquí con el propósito de que en caso de un fracaso operación comercial podría repetirse una vez más. En la cabecera del primer operador si se calcula la condición para cerrar una orden de compra (las órdenes de venta se cierran de manera análoga). Si el tipo de un pedido abierto anterior corresponde a Buy (consulte Tipos de transacciones) y el signo para cerrar Buy es relevante, el control se pasa al cuerpo del operador si se forma una solicitud de cierre. Como precio de cierre de pedido en la función OrderClose () se indica el valor de una cotización a dos caras correspondiente al tipo de pedido (ver Requisitos y limitaciones en la realización de transacciones). Si una operación comercial se ejecuta correctamente, después de que se muestre un mensaje sobre el cierre del pedido, la corriente mientras la iteración se detiene y la ejecución del bloqueo de cierre de órdenes ha terminado. Pero si la operación falla, se llama a la función definida por el usuario para procesar errores FunError () (bloque 10-11). Procesamiento de errores Como un parámetro pasado en FunError () se utiliza el último código de error calculado por GetLastError (). Dependiendo del código de error, FunError () devuelve 1 si el error no es crítico y la operación puede repetirse, y 0 si el error es crítico. Los errores críticos se dividen en dos tipos: aquellos, después de los cuales se puede continuar con la ejecución de un programa (por ejemplo, un error común) y después se debe detener la ejecución de cualquier operación comercial (por ejemplo, cuenta bloqueada). Si después de una operación comercial fracasada la función definida por el usuario devuelve 1, la corriente mientras la iteración termina y durante la siguiente iteración se hace otro intento de ejecutar la operación para cerrar la orden. Si la función devuelve 0, la ejecución start () actual se detiene. En el siguiente tick start () el terminal del cliente iniciará de nuevo y si se mantienen las condiciones para cerrar el pedido, se realizará otro intento de cerrar el pedido. Si durante el procesamiento de errores se descubre que la ejecución del programa adicional no tiene sentido (por ejemplo, el programa funciona en una versión de terminal antiguo) durante el próximo inicio, la ejecución de la función especial start () finalizará en el bloque de procesamiento preliminar cuando Analizando el valor de la variable Trabajo. Cálculo del monto de lotes para nuevas órdenes La cantidad de lotes se puede calcular de acuerdo con una configuración de usuario que sigue una de las dos variantes. La primera variante es un cierto valor constante establecido por un usuario. Según la segunda variante, la cantidad de lotes se calcula sobre la base de una suma igual a un cierto porcentaje (fijado por un usuario) de un margen libre. Al comienzo del bloque de definición de la cantidad de lotes para nuevas órdenes (bloque 7-8) se calculan los valores necesarios de algunas variables - cantidad mínima permitida de lotes y paso de cambio de lote establecido por un corredor, margen libre y precio de Un lote para la seguridad. En este ejemplo se proporciona lo siguiente. Si un usuario ha establecido un cierto valor distinto de cero de la variable externa Lts, por ejemplo 0,5, se acepta como la cantidad de lotes Lts cuando se crea una petición de comercio para abrir una orden. Si se asigna 0 a Lts, el número de lotes Lts se define a partir de la variable Prots (porcentaje), margen libre y condiciones establecidas por un corredor. Después de calcular Lts, se realiza un chequeo. Si este valor es inferior al valor mínimo permitido, se acepta el valor mínimo permitido. Pero si el margen libre no es suficiente, después de un mensaje correspondiente la ejecución start () se termina. Apertura de órdenes El bloque de órdenes de apertura (bloque 8-9) como el tipo de órdenes de apertura es un bucle infinito mientras. En el encabezado del primer operador si se calculan las condiciones para abrir una orden de compra: si no hay pedidos para la seguridad (la variable Total es igual a 0) y el signo para abrir una orden de compra es relevante (OpnB es cierto), el control Se pasa a si el cuerpo del operador para abrir una orden. En tal caso, después de actualizar las tarifas se calculan los precios de los niveles de parada. Los valores de los niveles de parada son establecidos inicialmente por un usuario en las variables externas StopLoss y TakeProfit. En un caso general, un usuario puede establecer valores para estos parámetros más pequeños que un corredor lo permita. Además, un corredor puede cambiar la distancia mínima permitida en cualquier momento (es un caso a menudo en movimientos fuertes del mercado, por ejemplo, antes del lanzamiento de noticias importante). Es por eso que antes de cada orden los niveles de parada de apertura deben calcularse teniendo en cuenta los valores establecidos por un usuario y el valor mínimo permitido establecido por un corredor. Para calcular los niveles de parada, la función definida por el usuario NewStop () se utiliza como parámetro pasado, se utiliza el valor de nivel de parada establecido por un usuario. En NewStop () primero se calcula la distancia mínima permitida actual. Si el valor establecido por un usuario corresponde a los requisitos de un corredor, se devuelve este valor. Si es menor que el valor permitido, se utiliza el valor permitido por un intermediario. Los precios de las solicitudes de parada se calculan a partir de la cotización bilateral correspondiente (consulte Requisitos y limitaciones en la realización de transacciones). Una solicitud comercial para abrir una orden se forma utilizando la función OrderSend (). Para el cálculo del precio de apertura de pedidos y los precios de las solicitudes de parada se utilizan los valores de cotización de dos caras correspondientes al tipo de pedido. Si una operación comercial fue exitosa (es decir, un servidor devolvió el número de una orden abierta) después de que se muestre un mensaje sobre una apertura satisfactoria del pedido. Start () finaliza. If an order was not opened and the client terminal returned an error, the error is processed according to the algorithm described earlier. Some Code Peculiarities The analyzed Expert Advisor code is oriented to the implementation of a certain strategy. Note, some program lines contain variables and calculations that would be changed, if the strategy were changed. For example, according to the accepted strategy the Expert Advisor is developed to work only with one order. This allowed to use the variable Ticket both for the identification of a closing order number (in block of closing 6-7) and for the identification of a success of a trade operation execution when opening an order (in the block of opening 8-9). In this case such a solution is acceptable. However, if we take the analyzed code as the basis for the implementation of another strategy (for example allow opposite orders) we will have to introduce one or several variables to be able to recognize numbers of opened orders and identify the success of trade operations. In further strategy modifications we will have to change come program lines containing part of logics contained in the source strategy. Namely in the order accounting block we will not have to terminate the program operation if there are several open orders for a security. Besides, conditions for opening and closing orders will alslo change. This will entail the code changing in blocks of opening and closing orders. On the basis of this analysis we can easily conclude that the described simple Expert Advisor is not perfect. In a general case, for the implementation of order accounting one should use a universal function based on using data arrays and not containing logics of a certain strategy. The same can be said about the blocks of opening and closing orders. A more complete program must contain a main analytical function, all other user-defined functions must be subordinate to it. This analytical function must contain a program code, in which all conditions for the implementation of any strategy are analyzed all subordinate functions must perform limited actions. The function of accounting orders must only account orders, functions of opening and closing orders must only open and close orders, and the analytical function must quotthinkquot and manage all other functions, i. e. call them when needed. Moving Average EA 2.0 About the Moving Average The Moving Average is the most used indicator and is by default included in Metatrader 4 and 5. A Simple Moving Average is calculated on the Average of the desired Close Prices of each candle. El indicador de Promedio móvil tiene 4 métodos diferentes de cálculo. Simple, Exponencial, Suavizado y Lineal. El valor predeterminado del período es 14. La lógica comercial de este robot forex El promedio móvil EA es un robot forex y utiliza una media móvil para el comercio. Si una vela cruza el promedio móvil desde abajo, el EA entrará en una posición larga. Vice Versa para la posición corta. MA Trend Filter El EA móvil promedio tiene la función normal MA Trend Filter incluida en la versión 3 y tiene 3 ajustes adicionales. Active este filtro para obtener mejores señales de entrada. Ajustes avanzados del filtro de la tendencia de MA: Precio: Oficios solamente si el precio actual está sobre / debajo del filtro de la tendencia de MA. Señal MA: Trades sólo si el Promedio de Señal está por encima / debajo del Filtro de Tendencias MA. Inclinación: Trades sólo si la pendiente de la MA Trend Filte en una dirección hacia arriba / hacia abajo. Invertir en la señal opuesta Desde la versión 2.00, la versión PRO tiene una función de señal inversa en la señal opuesta. Si esta función está activa, el EA tiene una posición larga abierta y hay una señal corta, el EA cerrará la posición larga y entrará en una posición corta. Parámetros para el promedio de movilidad del marco de tiempo de EA El período de tiempo en el que debe trabajar la EA sin importar el periodo de tiempo en el que se haya establecido el gráfico. Período promedio Período promedio del promedio móvil (el valor predeterminado es 80) Cambio El desplazamiento del indicador en relación con el gráfico (el valor predeterminado es 0) Método de promedio Los métodos de la serie de precios Precio aplicado Los valores del precio. En el que se realizarán los cálculos. Descripción general de las versiones Todas las versiones tienen un número mágico variable, tomar ganancias, pérdida de parada, tamaño de lote y deslizamiento. Changelog 25 de agosto de 2016 Tweak: Reescribió la estrategia para más estabilidad Actualización: El filtro MA está ahora disponible en toda la versión Añadido: 8220Reverse On Oppsite Signal8221 (sólo la versión pro) Añadido: Nuevo 8220Additional MA Trend Filter settings8221 en todas las versiones Eliminado: La estrategia 8220high / low8221 en todas las versiones Retirada: 8220máx. Una vez por bar8221 (por razones de seguridad con esta EA) 13 de enero de 2016 Actualizaciones y correcciones menores en todas las versiones de MT4 24 de septiembre de 2015 Versión inicial MT4 Pro 11 de abril de 2015 Algunas mejoras en todas las versiones MT4 Añadido 8220Max una vez por función Bar8221 a MT4 Avanzado y Pro 09 Feb 2015 Bug fijado al abrir una orden de apertura / cierre y alta / baja opción añadida Feb 07, 2015 Versión inicial MT4 Basic y MT4 Avanzado Hola Yannick, ¿sale la versión básica de salida de la misma manera que en la La versión original (antes de añadir algunas características) Por último, I8217m preguntándose si la caducidad de la licencia de alguna manera afecta a las operaciones abiertas Gracias por su gran trabajo y para sus regalos I8217ll estar comprando algo más tarde. La versión básica no tiene una estrategia de salida y por lo tanto sólo sale en SL o TP TradeMode: Elija si desea ingresar un comercio si el HighLow cruza el MA o si el CloseOpen cruza el MA. No, la EA sólo comprobará la licencia en la inicialización, significa cuando se inicia MT, cuando se adjunta la EA al gráfico o si cambia el marco de tiempo. Hola, ¿Hay alguna manera de cerrar la posición con la cruz Quiero decir, abrir en la cruz (como lo está haciendo ahora) y cerrar en otra cruz

No comments:

Post a Comment