Trading Sistemático

Cómo Calcular el Número de Rebotes para Estrategias de Grid y Martingale en MetaTrader 4
MetaTrader4
Cómo Calcular el Número de Rebotes para Estrategias de Grid y Martingale en MetaTrader 4

El tamaño de lote y el número de operaciones son aspectos clave en estrategias como Grid y Martingale. Siempre nos preguntamos qué ha pasado en la historia de un símbolo durante las zonas de rango y ¿Cuántas veces ha rebotado el precio entre dos niveles dentro de una Zona de Rango? Esto es lo que llamo el Número de Rebotes. Se puede calcular mediante un análisis estadístico de la historia de cualquier símbolo en el mercado. Para aclarar, veamos la imagen No. 1. Imagen No. 1: Definición del Número de Rebotes, su objetivo y aplicaciones. La imagen ilustra cómo el movimiento del precio genera estadísticas a través de la herramienta del Número de Rebotes. Para evitar retrasos en la herramienta, la generé como un Asesor Experto (o EA) que utiliza una función de pausa. Esta función ayuda a prevenir caídas en el gráfico debido a un alto número de velas configuradas en la entrada de la herramienta. La otra imagen (Imagen No. 2) muestra la estructura gráfica breve de la herramienta y el significado de sus objetos. Imagen No. 2: Estadísticas del Número de Rebotes. Uso de la herramienta: A partir de la Imagen No. 2, si configuramos la Altura Media del Canal de Rebote en 600 puntos: Hay 6 números de rebote diferentes, del 1 al 6, para este símbolo.El número de rebote 2 significa que el precio comienza desde el medio del canal de rebote (altura 2 * 600 = 1200 puntos) y se mueve hacia arriba y hacia abajo, tocando una vez la línea roja y una vez la línea azul antes de alcanzar el TP=1200 puntos. Para el número de rebote 5, esto significa que el precio comienza desde el punto medio del canal y toca 2 veces la línea roja y 3 veces la línea azul, o 3 veces la línea roja y 2 veces la línea azul, antes de alcanzar el TP=1200 puntos. Lo mismo se aplica para otros números de rebote.No tenemos el número de rebote 7, lo que significa que no hubo 7 rebotes entre las líneas rojas y azules (con una distancia de 1200 puntos) en toda la historia seleccionada en la entrada de la herramienta. Ten en cuenta que si seleccionas más datos históricos (Número máximo de velas de retroceso), la posibilidad de encontrar 7 rebotes aumentará. Sin embargo, como vemos, incluso la posibilidad de 6 rebotes es 22 en 9020 elementos totales donde el precio alcanzó los TP. ¿Qué hay en la entrada de la herramienta? Número máximo de velas de retroceso: Al igual que con otras herramientas de escaneo, ten cuidado con el número que configuras para esta celda. No lo aumentes drásticamente para evitar cualquier caída de memoria.Marco de tiempo: Marco de tiempo de las velas que queremos usar para encontrar rebotes en los límites del canal y también para tocar las líneas de TP. Usa un marco de tiempo más bajo para canales estrechos. Si no sabes qué configurar, es mejor usar el marco de tiempo M1.Altura Media del Canal de Rebote: Esta es la distancia de la línea verde desde las líneas roja y azul. Se mide en puntos.Color de fondo del gráficoColor de las barras 1/Color de las barras 2: para hacer que las barras estadísticas sean un poco más atractivas.Color de las celdas de conteoColor de las celdas del número de reboteColor de la barra de carga: Durante el cálculo, esta barra de carga ayudará al usuario a saber si está funcionando o no, así como la velocidad de los cálculos. - Se añadió un botón para iniciar y ingresar el número de velas históricas desde la pantalla.

2024.01.12
Alerta de Sonido por Conexión y Desconexión en MetaTrader 5
MetaTrader5
Alerta de Sonido por Conexión y Desconexión en MetaTrader 5

En este artículo, te muestro cómo añadir una alerta de sonido sencilla para los eventos de conexión y desconexión en MetaTrader 5. ¡Es muy práctico! Para comenzar, necesitas colocar los archivos de sonido .wav en la carpeta MQL5\Files\Sounds de tu terminal. A continuación, copia el código que te muestro más abajo y compila el Asesor Experto. Ten en cuenta que el archivo adjunto tiene líneas comentadas, ya que el uso de #resource hace que la carga sea imposible. //+------------------------------------------------------------------+ //|                               Connect_Disconnect_Sound_Alert.mq5 | //|                                Copyright 2024, Rajesh Kumar Nait | //|                  https://www.mql5.com/en/users/rajeshnait/seller | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, Rajesh Kumar Nait" #property link      "https://www.mql5.com/en/users/rajeshnait/seller" #property version   "1.00" #include <Trade/TerminalInfo.mqh> bool     first             = true; bool     Now_IsConnected   = false; bool     Pre_IsConnected   = true; datetime Connect_Start = 0, Connect_Stop = 0; CTerminalInfo terminalInfo; //--- Archivos de sonido #resource "\\Files\\Sounds\\CONNECTED.wav" #resource "\\Files\\Sounds\\DISCONNECTED.wav" //+------------------------------------------------------------------+ //| Función de inicialización del Asesor Experto                                   | //+------------------------------------------------------------------+ int OnInit()   { //---       ResetLastError();       while ( !IsStopped() ) {          Pre_IsConnected = Now_IsConnected;          Now_IsConnected = terminalInfo.IsConnected();          if ( first ) {             Pre_IsConnected = !Now_IsConnected;          }          if ( Now_IsConnected != Pre_IsConnected ) {             if ( Now_IsConnected ) {                Connect_Start = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav"))                      Print("Error: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\\Sounds\\CONNECTED.wav"))                   Print("Error: ",GetLastError());         } else {                Connect_Stop = TimeLocal();                if ( !first ) {                   if(!PlaySound("::Files\\Sounds\\CONNECTED.wav"))                      Print("Error: ",GetLastError());                }                if ( IsStopped() ) {                   break;                }                if(!PlaySound("::Files\\Sounds\\DISCONNECTED.wav"))                   Print("Error: ",GetLastError());         }     }          first = false;          Sleep(1000);       } //---    return(INIT_SUCCEEDED);   } //+------------------------------------------------------------------+ Además, aquí tienes un video explicativo para que puedas ver el proceso en acción:

2024.01.08
Herramientas Avanzadas de MQL5 para Traders: Parte 7 - Programación Efectiva en MetaTrader 5
MetaTrader5
Herramientas Avanzadas de MQL5 para Traders: Parte 7 - Programación Efectiva en MetaTrader 5

Parte 7: Herramientas Avanzadas de MQL5 "Parte 7: Herramientas Avanzadas de MQL5" del libro "Programación MQL5 para Traders" nos adentra en las capacidades avanzadas de la API de MQL5, ideales para desarrollar programas en MetaTrader 5. Aquí se incluyen símbolos financieros personalizados, eventos del calendario económico incorporados y tecnologías versátiles como redes, bases de datos y criptografía. En esta sección, exploraremos las bibliotecas, un tipo especial de programa que ofrece API listas para conectar con otros programas MQL. También abordaremos la posibilidad de desarrollar paquetes de software y combinar programas interconectados lógicamente en proyectos. Finalmente, veremos cómo se pueden integrar con otros entornos de software, incluyendo Python. Comenzaremos estudiando los recursos, que son archivos de cualquier tipo que pueden ser incorporados en el código del programa. Estos recursos pueden contener: Elementos multimedia Ajustes "duros" de programas externos Otros programas MQL5 en forma compilada El entorno de desarrollo de MQL5 permite incluir arreglos de datos de la aplicación, imágenes, sonidos y fuentes en el archivo fuente, haciendo que el programa sea un producto autosuficiente y cómodo para el usuario final. Prestaré especial atención a los recursos gráficos con imágenes rasterizadas en formato BMP: aprenderás a crear, editar y mostrarlas dinámicamente en el gráfico. Cerraremos esta parte del libro estudiando la integración de OpenCL en MQL5. OpenCL es un estándar abierto para la programación paralela en sistemas multiprocesador, incluyendo procesadores gráficos (GPUs) y unidades centrales de procesamiento (CPUs). Este estándar permite acelerar tareas computacionales intensivas siempre que los algoritmos puedan ser paralelizados. Esto puede incluir el entrenamiento de redes neuronales, transformadas de Fourier y la resolución de sistemas de ecuaciones. El uso de OpenCL en programas MQL requiere la presencia de controladores especiales del fabricante y soporte para OpenCL versión 1.1 o superior. La presencia de una tarjeta gráfica no es obligatoria, ya que el procesador central también puede ser utilizado para computación paralela.

2023.12.16
Automatización del Trading en MetaTrader 5: Todo lo que Necesitas Saber
MetaTrader5
Automatización del Trading en MetaTrader 5: Todo lo que Necesitas Saber

Parte 6. Automatización del Trading En "Parte 6. Automatización del Trading" del libro "Programación MQL5 para Traders", vamos a estudiar un componente clave del lenguaje MQL5. Comenzaremos con una descripción de las entidades fundamentales, como las especificaciones de los instrumentos financieros y la configuración de la cuenta de trading. Estos son requisitos previos para crear Asesores Expertos que funcionen correctamente. Luego, pasaremos a las funciones integradas y estructuras de datos, eventos específicos de los robots, así como aspectos clave del funcionamiento de los Asesores Expertos en el probador de estrategias. El Probador de Estrategias de MetaTrader 5 es un componente crucial en el desarrollo de robots de trading, ya que permite evaluar el rendimiento financiero y optimizar estrategias de trading. El probador ofrece herramientas indispensables para la depuración en varios modos, incluyendo pruebas visuales utilizando barras o ticks, con ticks modelados o reales. También permite la reproducción visual del flujo de cotizaciones y pruebas simples sin ventana visual. Ya hemos visto cómo probar indicadores en modo visual, pero solo se permiten un conjunto limitado de configuraciones para ellos. Al desarrollar Asesores Expertos, tendremos acceso a toda la gama de capacidades del probador. También exploraremos una representación diferente de los datos del mercado: la Profundidad de Mercado y su interfaz de software. MetaTrader 5 ofrece la capacidad de analizar y operar con instrumentos financieros (símbolos), que forman la base de todos los subsistemas del terminal. Los usuarios pueden seleccionar símbolos de la lista proporcionada por el bróker y monitorearlos en el Observador del Mercado. Con la API de MQL5, puedes ver y analizar las características de todos los símbolos, añadiéndolos o eliminándolos del Observador del Mercado. Además de los símbolos estándar que ofrecen los brókers, MetaTrader 5 soporta la creación de símbolos personalizados, cargando sus propiedades e historial de cotizaciones desde fuentes de datos arbitrarias o calculándolos utilizando fórmulas y programas en MQL5.

2023.12.16
Programación MQL5 para Traders: Creación de Aplicaciones en MetaTrader 5
MetaTrader5
Programación MQL5 para Traders: Creación de Aplicaciones en MetaTrader 5

Parte 5. Creación de programas de aplicación en MQL5 En "Parte 5. Creación de programas de aplicación" del libro sobre Programación MQL5 para Traders, profundizaremos en las APIs relacionadas con el trading algorítmico, incluyendo el análisis y procesamiento de datos financieros, la visualización de gráficos, la automatización y las interacciones con el usuario. Comenzaremos con los principios generales de la creación de programas en MQL y abordaremos los tipos de eventos, características y modelos en la terminal. Luego, exploraremos el acceso a series temporales, operaciones con gráficos y objetos gráficos, así como los principios para crear y aplicar cada tipo de programa MQL de forma individual. La terminal de MetaTrader 5 admite cinco tipos de programas: indicadores técnicos, Asesores Expertos (EAs) para trading automático o semi-automático, scripts para realizar tareas puntuales, servicios para operaciones en segundo plano y bibliotecas para módulos funcionales individuales. Nos adentraremos en el trabajo con indicadores y gráficos y aprenderemos técnicas que también son aplicables a los Asesores Expertos. El desarrollo de Asesores Expertos se tratará en la próxima parte del libro, donde exploraremos la ejecución automática de órdenes, la formalización de estrategias de trading, así como su prueba y optimización utilizando datos históricos. Aprenderemos a utilizar indicadores estándar integrados y cómo crear nuestras propias aplicaciones desde cero o basándonos en otros indicadores. Todos los programas compilados se muestran en el Navegador de MetaTrader 5, excepto las bibliotecas EX5, que son utilizadas por otros programas pero no tienen una representación separada en el Navegador. Como resultado, obtendremos una comprensión más amplia de las capacidades del lenguaje MQL5 y su aplicación en el trading algorítmico. Esto nos permitirá trabajar de manera efectiva con datos financieros y crear indicadores de trading y Asesores Expertos.

2023.12.16
Domina la Programación MQL5: APIs Comunes para Traders
MetaTrader5
Domina la Programación MQL5: APIs Comunes para Traders

Parte 4: APIs Comunes de MQL5 En las secciones anteriores de este libro, exploramos los fundamentos del lenguaje de programación MQL5, analizando su sintaxis, reglas de uso y conceptos clave. Sin embargo, para desarrollar programas que manejen datos y realicen trading automatizado, es esencial utilizar muchas de las funciones integradas que nos ofrece el terminal MetaTrader 5. En esta "Parte 4: APIs Comunes de MQL5", nos enfocaremos en dominar las funciones integradas (API de MQL5) y, poco a poco, nos adentraremos en subsistemas especializados. Cualquier programa en MQL5 puede aprovechar una gran variedad de tecnologías y funcionalidades. Por lo tanto, es lógico comenzar con las funciones más sencillas y útiles que se pueden implementar en la mayoría de los programas. Entre los temas principales, estudiaremos operaciones con arreglos, procesamiento de cadenas, interacciones con archivos, conversión de datos y funciones de interacción con el usuario. También exploraremos funciones matemáticas y la gestión del entorno del programa. A diferencia de otros lenguajes de programación, el uso de las funciones integradas del API de MQL5 no requiere directivas de preprocesador adicionales. Los nombres de todas las funciones del API de MQL5 están disponibles en el contexto global (namespace) y siempre se pueden acceder sin condiciones. También discutiremos la posibilidad de utilizar nombres similares en diferentes contextos de programas, como los nombres de métodos de clases o namespaces personalizados. En esos casos, deberás emplear el operador de resolución de contexto para llamar a la función global, que ya discutimos en la sección sobre tipos anidados, namespaces y el operador de contexto '::'. La programación a menudo requiere operaciones con diversos tipos de datos. En secciones previas, ya hemos visto los mecanismos para la conversión explícita e implícita de tipos de datos integrados. Sin embargo, estas conversiones no siempre son adecuadas por diferentes razones. Para proporcionar una conversión de datos más precisa entre diferentes tipos, el API de MQL5 incluye un conjunto de funciones de conversión. Se presta especial atención a las funciones para convertir entre cadenas y otros tipos, como números, fechas y horas, colores, estructuras y enumeraciones.

2023.12.15
Programación OOP en MQL5: Mejora tu Trading con Objetos
MetaTrader5
Programación OOP en MQL5: Mejora tu Trading con Objetos

Parte 3: Programación Orientada a Objetos en MQL5 "Parte 3: Programación Orientada a Objetos en MQL5" te sumerge en el fascinante mundo de la programación orientada a objetos (OOP) utilizando el lenguaje MQL5. En el desarrollo de software, a menudo enfrentamos la complejidad de gestionar múltiples entidades, lo que requiere tecnologías avanzadas para mejorar la conveniencia, productividad y calidad en la programación. La tecnología OOP se basa en el concepto de objetos, que son variables de un tipo personalizado definidas por el programador aprovechando las herramientas de MQL5. Crear tipos personalizados permite modelar objetos y simplifica la escritura y el mantenimiento de programas. En esta sección, exploraremos diversas formas de definir nuevos tipos, incluyendo clases, estructuras y uniones. Estos tipos personalizados pueden combinar datos y algoritmos para describir el estado y comportamiento de los objetos en la aplicación. El autor se centra en el principio de "divide y vencerás", mostrando que los objetos son mini-programas, cada uno responsable de resolver una tarea pequeña pero lógicamente completa. Puedes combinar objetos en un único sistema y crear productos y servicios de una complejidad arbitraria. Para ayudar a los usuarios a estudiar las capacidades de MQL5, la sección de "Programación Orientada a Objetos en MQL5" introduce los principios de OOP junto con ejemplos prácticos de implementación. El libro también abarca plantillas, interfaces y espacios de nombres, revelando la flexibilidad y el poder de OOP para desarrollar programas en MQL5.

2023.12.15
Introducción a MQL5: Todo lo que Necesitas Saber para Programar en MetaTrader 5
MetaTrader5
Introducción a MQL5: Todo lo que Necesitas Saber para Programar en MetaTrader 5

Parte 1. Introducción a MQL5 y el entorno de desarrollo En esta primera parte del libro, titulada "Introducción a MQL5 y el entorno de desarrollo", vamos a explorar los fundamentos del lenguaje MQL5 y su entorno de desarrollo. Una de las características más interesantes que trae MQL5, en comparación con MQL4 (el lenguaje de MetaTrader 4), es el soporte para la programación orientada a objetos (POO). Esto hace que se asemeje al lenguaje C++. Aunque algunas funciones de POO ya han sido trasladadas de MQL5 a MQL4, muchos usuarios que no están familiarizados con la programación pueden encontrar esta característica un poco complicada. El objetivo de este libro es hacer que este enfoque sea comprensible y accesible para todos. Además, sirve como un complemento a la referencia de MQL5, abarcando todos los aspectos de la programación en MQL5 y explicando cada proceso en detalle. Los desarrolladores pueden optar por estilos de programación orientada a objetos o procedural, e incluso combinar ambos. Si ya tienes experiencia en programación, puedes saltarte los conceptos básicos. Los programadores de C++ encontrarán más fácil dominar MQL5, pero es importante prestar atención a las diferencias del lenguaje para evitar errores comunes. Con MQL5, puedes crear diversos tipos de programas, como indicadores para mostrar gráficamente los datos, Asesores Expertos para automatizar el trading, scripts para acciones únicas y servicios para tareas en segundo plano. Una característica destacada de MetaTrader 5 es la gestión de todo el sistema de trading desde el terminal del cliente, donde se ejecutan los programas MQL5 y se envían las órdenes de trading al servidor. Importante recordar que las aplicaciones MQL5 no se instalan en el servidor. En esta Parte 1, también explicamos cómo editar, compilar y ejecutar programas, además de cubrir varios tipos de datos, variables, expresiones, arreglos, depuración y salida.

2023.12.15
Cómo usar un modelo ONNX para reconocer dígitos escritos a mano en MetaTrader 5
MetaTrader5
Cómo usar un modelo ONNX para reconocer dígitos escritos a mano en MetaTrader 5

Asesor Experto que Reconoce Dígitos Escritos a Mano La base de datos MNIST contiene 60,000 imágenes para entrenamiento y 10,000 para pruebas. Estas imágenes fueron creadas al "remixear" un conjunto original de NIST de muestras en blanco y negro de 20x20 píxeles, las cuales fueron obtenidas del Buró del Censo de EE.UU. y complementadas con muestras de estudiantes de secundaria americanos. Las muestras fueron normalizadas a un tamaño de 28x28 píxeles y se les aplicó un filtro antialiasing, lo que introdujo niveles de escala de grises. El modelo entrenado de reconocimiento de dígitos manuscritos mnist.onnx fue descargado de Github del Model Zoo (opset 8). Aquellos interesados pueden descargar y probar otros modelos, excluyendo aquellos con opset 1, que ya no es compatible con la última ejecución de ONNX. Curiosamente, el vector de salida no fue procesado con la función de activación Softmax, como es común en los modelos de clasificación. Pero, no te preocupes, que esto lo podemos implementar fácilmente nosotros mismos. int PredecirNumero(void)  {   static matrixf imagen(28,28);   static vectorf resultado(10);   PrepararMatriz(imagen);   if(!OnnxEjecutar(ModeloExt,ONNX_DEFAULT,imagen,resultado))     {      Imprimir("Error en OnnxEjecutar ",ObtenerUltimoError());      return(-1);     }   resultado.Activacion(resultado,AF_SOFTMAX);   int predecir=int(resultado.ArgMax());   if(resultado[predecir]<0.8)      Imprimir(resultado);      Imprimir("valor ",predecir," predicho con probabilidad ",resultado[predecir]);   return(predecir);  }  Dibuja los dígitos en una cuadrícula especial usando el ratón, manteniendo presionado el botón izquierdo. Para reconocer el dígito dibujado, presiona el botón CLASIFICAR. Si la probabilidad obtenida para el dígito reconocido es menor a 0.8, el vector resultante con probabilidades para cada clase se imprime en el registro. Por ejemplo, prueba a clasificar un campo de entrada vacío sin llenar. [0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267] valor 5 predicho con probabilidad 0.11471312493085861Por alguna razón, la precisión del reconocimiento es notablemente inferior para el número nueve (9). Los dígitos inclinados hacia la izquierda son reconocidos con mayor precisión.

2023.11.23
Gestiona tu Take Profit Basado en el Beneficio Actual con MetaTrader 4
MetaTrader4
Gestiona tu Take Profit Basado en el Beneficio Actual con MetaTrader 4

Introducción La mayoría de los asesores expertos suelen cerrar órdenes en el take profit basándose en la distancia en pips desde el precio de compra. Sin embargo, el código utilizado por EA Perceptron se centra principalmente en el beneficio actual. Este enfoque te permite gestionar fácilmente el take profit con múltiples posiciones abiertas, monitoreando el beneficio total basado en el número mágico, en caso de que uses varias instancias de bots o diferentes EAs al mismo tiempo. ¡Agrega a mis amigos! y sigue mi feed para mantenerte al tanto de las novedades. Utilizar este código también puede tener un impacto positivo en algunos problemas que pueden surgir al usar un take profit basado en pips. Por ejemplo, un take profit basado en pips podría variar dependiendo del deslizamiento de tu corredor, limitando así las ganancias. Al usar un código basado en el beneficio actual, puedes evitar este inconveniente y tener más control sobre tus operaciones. Si deseas aprender más sobre cómo configurar un take profit basado en el beneficio actual, puedes usar el código de EA SwingBot como referencia. … Total de Órdenes Comencemos con el código que calcula el total de órdenes abiertas con el mismo número mágico. El número mágico es un identificador único asignado a una orden por el trader o un EA (Asesor Experto). El código inicializa una variable total_orders en cero. Luego, recorre todas las órdenes abiertas utilizando un bucle for y selecciona cada orden usando la función OrderSelect(). Si una orden se selecciona correctamente, incrementa la variable total_orders en uno. //-----------------    int total_orders = 0;    for(int i = 0; i < OrdersTotal(); i++)      {       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))         {          if(OrderMagicNumber() == MagicNumber)          {          total_orders++;         }         }      } … Calculando el Beneficio Actual El código inicializa dos variables: ProfittoMinimo y Profit. La variable ProfittoMinimo se utiliza para activar el take profit en este nivel, el valor se expresa en la moneda de la cuenta. La variable Profit se utiliza para acumular el beneficio actual de todas las posiciones abiertas que tienen el mismo número mágico. La variable StopLoss se utiliza para el stop loss. El código utiliza un bucle for para iterar a través de todas las posiciones abiertas usando la función OrdersTotal(). Para cada posición abierta, se selecciona la orden correspondiente usando la función OrderSelect(). Si la orden se selecciona correctamente y tiene el mismo número mágico, se suma el beneficio de la orden a la variable Profit.       double ProfittoMinimo = 3; // beneficio objetivo       double Profit = 0; // beneficio actual              for(int i=0; i<OrdersTotal(); i++)         {          if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))            {             if(OrderMagicNumber() == MagicNumber) // Si usas múltiples EAs, puedes eliminar el filtro de MagicNumber para mantener la función en todas las órdenes               {                Profit += OrderProfit();               }            }         } El beneficio mínimo puede configurarse como una variable externa y ajustarse en las opciones del EA: … Cerrando Posiciones si se Alcanza el Beneficio El código utiliza un bucle for para iterar a través de todas las órdenes abiertas usando la función OrdersTotal(). El bucle comienza desde la última orden y va hacia la primera. Para cada orden, se selecciona el trade correspondiente usando la función OrderSelect(). Si el trade seleccionado tiene el mismo símbolo que el gráfico actual, es de tipo OP_BUY, y tiene el mismo número mágico que se especifica en el código, se verifica si el Profit del trade es mayor o igual a ProfittoMinimo. Si es así, se cierra el trade al precio de compra usando la función OrderClose() y se imprime un mensaje indicando que la orden de compra ha sido cerrada. De manera similar, si el trade seleccionado tiene el mismo símbolo que el gráfico actual, es de tipo OP_SELL, y tiene el mismo número mágico que se especifica en el código, se verifica si el Profit del trade es mayor o igual a ProfittoMinimo. Si es así, se cierra el trade al precio de venta usando la función OrderClose() y se imprime un mensaje indicando que la orden de venta ha sido cerrada.       for(int e = OrdersTotal() - 1; e >= 0; e--)         {          if(OrderSelect(e, SELECT_BY_POS, MODE_TRADES))            {             if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) // La orden se modifica solo si el MagicNumber coincide con el de la orden en curso.               {                if(Profit >= ProfittoMinimo)                  {                   OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // Precio de compra                   Print("Orden de compra cerrada", Profit, " - Stoploss mínimo: ",MarketInfo(Symbol(), MODE_STOPLEVEL));                  }           }             if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber)               {                if(Profit >= ProfittoMinimo)                  {                   OrderClose(OrderTicket(), OrderLots(), ND(OrderClosePrice()), 3); // Precio de venta                   Print("Orden de venta cerrada", Profit, " - Stoploss mínimo: ",MarketInfo(Symbol(), MODE_STOPLEVEL));                  }           }         } … Conclusión Este código puede ser útil para todas aquellas estrategias de cierre de posiciones basadas en el take profit, pero también podría combinarse con un trailing stop en función del aumento del beneficio actual. El sistema también es útil en caso de múltiples Asesores Expertos. Si excluyes la condición if sobre el MagicNumber, puedes establecer niveles de take profit generales para controlar simultáneamente todas las posiciones abiertas de todos los EAs activos.

2023.10.27
Estrategia de Doble Banda de Bollinger en MT4: Guía para Traders
MetaTrader4
Estrategia de Doble Banda de Bollinger en MT4: Guía para Traders

1. Visión GeneralLa estrategia de Doble Banda de Bollinger utiliza dos bandas de Bollinger para filtrar las entradas y salidas en el mercado de divisas. Este enfoque busca abrir posiciones de compra (o venta) cuando el precio cruza por encima (o por debajo) de la banda de 3 desviaciones estándar (3σ).Además, se considera el nivel de 2 desviaciones estándar (2σ) para tomar decisiones de trading. Parámetros por defecto:Bandas de Bollinger 2σ (20,2): media móvil simple (20) y número de desviaciones estándar (2).Bandas de Bollinger 3σ (20,3): media móvil simple (20) y número de desviaciones estándar (3).Parámetros de entrada:2. Entrada LargaAbrir una orden de compra cuando se cumplan estas 2 condiciones:Condición 1: El precio Ask cruza por encima de la banda superior 3σ (BB3UP).Condición 2: Si la condición 1 se cumple, verifica si el precio actual está dentro del rango de la banda superior 2σ (BB2UP) y la banda inferior 2σ (BB2LO).3. Entrada CortaAbrir una orden de venta cuando se cumplan estas 2 condiciones:Condición 1: El precio Bid cruza por debajo de la banda inferior 3σ (BB3LO).Condición 2: Si la condición 1 se cumple, verifica si el precio actual está dentro del rango de la banda inferior 2σ (BB2LO) y la banda superior 2σ (BB2UP).4. Órdenes de SalidaUtilizando un formato de órdenes OCO (One Cancels Other), se establecen tanto el stop-loss como el take-profit a N pips.※N: Parámetros de entrada establecidos.

2023.10.02
Asesor Experto Breakout Martin Gale para MQL4 - Tu aliado en MetaTrader 4
MetaTrader4
Asesor Experto Breakout Martin Gale para MQL4 - Tu aliado en MetaTrader 4

La estrategia de "Breakout Martin Gale" es un Asesor Experto (AE) diseñado para operar en el mercado Forex. Este AE combina un enfoque de trading de breakout con elementos del sistema de gestión de dinero Martin Gale, optimizando así tu rendimiento en las operaciones.Parámetros de Entrada:PuntosTakeProfit: Este parámetro te permite establecer el nivel de Take Profit en puntos para cada operación.PorcentajeBalanceDisponible: Especifica el porcentaje de tu saldo de cuenta que se utilizará para operar.TP_PorcentajeDelSaldo: Determina el porcentaje de tu saldo que se usará como Take Profit en cada operación.SL_PorcentajeDelSaldo: Este parámetro establece el porcentaje de tu saldo que se destinará como Stop Loss para las operaciones.IniciarLaRecuperación: Este parámetro juega un papel crucial en el proceso de recuperación, controlando cuándo y cómo se activan las medidas de recuperación.MultiplicadorPuntosTP: Un multiplicador para los puntos de Take Profit, que permite estrategias de toma de ganancias más flexibles.NúmeroMágico: Un identificador único para este AE, asegurando que pueda gestionar sus propias operaciones de forma independiente.Aspectos Destacados de la Estrategia:Trading de Breakout: El AE se especializa en identificar oportunidades de breakout en el mercado, donde los movimientos de precios rompen niveles clave.Tamaño de Lote Dinámico: Los tamaños de lote se ajustan dinámicamente basados en tu saldo de cuenta y tus preferencias de riesgo, siguiendo los principios de gestión de dinero de Martin Gale.Recuperación de Pérdidas: El AE incluye un potente mecanismo de recuperación diseñado para recuperar pérdidas mediante la modificación adaptativa de los parámetros de operación cuando sea necesario.La función principal que se utiliza en este AE es la función CalcLotWithTP() que tiene 3 parámetros de entrada: TakeProfit, PrecioInicio, PrecioFin. Esta función calcula el volumen necesario para la operación, de modo que se logre el objetivo de ganancia al entrar en una operación en el PrecioInicio y salir en el PrecioFin.Todo en el código está comentado, facilitando así su comprensión.He creado un video en YouTube al respecto:

2023.09.26
Asesor Experto Breakout Martin Gale para MT5: Optimiza tu Trading
MetaTrader5
Asesor Experto Breakout Martin Gale para MT5: Optimiza tu Trading

La estrategia "Breakout Martin Gale" es un Asesor Experto (AE) diseñado para operar en el mercado Forex. Este AE combina un enfoque de trading de ruptura con elementos del sistema de gestión de dinero Martin Gale para optimizar el rendimiento en las operaciones. Parámetros de Entrada: TakeProfPoints: Permite establecer el nivel de Take Profit en puntos para cada operación. BalancePercentageAvailable: Especifica el porcentaje de tu saldo de cuenta que se utilizará para operar. TP_Percentage_of_Balance: Determina el porcentaje de tu saldo que se usará como Take Profit en cada operación. SL_Percentage_of_Balance: Establece el porcentaje de tu saldo que se destinará como Stop Loss para las operaciones. Start_The_Recovery: Este parámetro juega un papel crucial en el proceso de recuperación, controlando cuándo y cómo se activan las medidas de recuperación. TP_Points_Multiplier: Un multiplicador para los puntos de Take Profit, que permite estrategias de toma de ganancias más flexibles. MagicNumber: Un identificador único para este AE, asegurando que pueda gestionar sus propias operaciones de manera independiente. Aspectos Destacados de la Estrategia: Trading de Ruptura: Este AE se especializa en identificar oportunidades de ruptura en el mercado, donde los movimientos de precios superan niveles clave. Tamaño de Lote Dinámico: Los tamaños de lote se ajustan dinámicamente según tu saldo de cuenta y tus preferencias de riesgo, siguiendo los principios de gestión de dinero de Martin Gale. Recuperación de Pérdidas: El AE incluye un potente mecanismo de recuperación diseñado para recuperar pérdidas modificando adaptativamente los parámetros de las operaciones cuando es necesario. La función principal utilizada en este AE es CalcLotWithTP(), que tiene 3 parámetros de entrada: Takeprofit, Startprice y Endprice. Esta función calcula el volumen necesario para la operación de manera que se logre el objetivo de ganancias al entrar en la operación en el Startprice y salir en el Endprice. Todo en el código está comentado para facilitar su comprensión.

2023.09.26
Cómo Determinar la Política de Relleno de Símbolos en MetaTrader 5
MetaTrader5
Cómo Determinar la Política de Relleno de Símbolos en MetaTrader 5

Cuando hablamos de trading en MetaTrader 5, uno de los aspectos cruciales que debemos entender es la política de relleno de los símbolos. Esta política puede influir en nuestras decisiones de trading, así que ¡vamos al grano! ¿Qué es la política de relleno? La política de relleno se refiere a cómo se manejan las órdenes en el mercado. En términos simples, nos indica cómo se ejecutan nuestras operaciones para un símbolo financiero específico. Pasos para determinar la política de relleno Obtener el tipo de política de relleno: Primero, utilizamos la función SymbolInfoInteger para obtener la información sobre la política de relleno del símbolo que estamos analizando. Esta información se guarda en una variable llamada filling, que contiene un valor numérico. Comparar políticas de relleno: Luego, comparamos este valor numérico con constantes predefinidas que representan diferentes políticas de relleno. Las más comunes son: “Rellenar o Matar” (SYMBOL_FILLING_FOK), “Inmediato o Cancelar” (SYMBOL_FILLING_IOC) y “Devolver” (SYMBOL_FILLING_RETURN). Devolver el tipo de política de relleno: Finalmente, con base en la comparación, determinamos la política de relleno correspondiente. Si coincide con “Rellenar o Matar”, se devuelve ORDER_FILLING_FOK. Si es “Inmediato o Cancelar”, se devuelve ORDER_FILLING_IOC. Y si no coincide con ninguna de estas, simplemente devolvemos ORDER_FILLING_RETURN. Resumen En resumen, esta función nos permite recuperar y entender la política de relleno de un símbolo en MetaTrader 5. Con esta información, podemos tomar decisiones más informadas en nuestras operaciones, ajustando nuestras estrategias según el tipo de política de relleno que nos ofrezca el mercado.

2023.09.26
Primero Anterior 3 4 5 6 7 8 9 10 11 12 13 Siguiente Último