Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 256
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Parámetros del Asesor Experto (Entradas)
El EA proporciona varios parámetros externos que el usuario puede modificar para controlar su comportamiento:
Parámetros Generales
| Parámetro | Tipo | Descripción |
| NúmeroMágico | int | Un identificador único para las operaciones del EA. |
| LoteInicial | doble | El tamaño del lote inicial para la primera operación de una serie. |
| PermitirCompra | bool | Bandera para permitir al EA abrir operaciones de Compra (inicial y Martingale). |
| PermitirVenta | bool | Indicador que permite al EA abrir operaciones de Venta (inicial y Martingala). |
| TakeProfit | int | Un Take Profit fijo en puntos/pips utilizado cuando se colocan órdenes pendientes (aunque no para la ejecución de mercado). |
| FindHighLowBackBars | int | El número de barras previas a mirar hacia atrás para determinar el máximo más alto y el mínimo más bajo para la colocación inicial de órdenes pendientes. |
| ResetAfterBars | int | El número de barras después de las cuales las órdenes pendientes iniciales serán borradas y re-evaluadas (si no hay ninguna posición abierta). |
Estrategia Martingala
| Parámetro | Tipo | Descripción |
| ReverseMartingale | bool | Si es verdadero, las operaciones Martingale subsecuentes serán en la dirección opuesta a la última operación en la serie (esto sería típicamente un enfoque anti-Martingale o de cobertura, pero el código abre en la misma dirección si es falso). La lógica actual sugiere abrir en la misma dirección si ReverseMartingale es falso . |
| LoteMultiplicador | doble | El factor por el que se multiplica el tamaño del lote para la siguiente operación de la serie con pérdidas (por ejemplo, 2 .0 significa duplicar el lote). |
| SecureProfitMartingaleTarget | doble | El beneficio flotante total (en la divisa de la cuenta) al que se cerrará toda la serie de operaciones abiertas. |
| DistanciaPipsMartingale | int | La distancia (en pips) que el precio debe moverse contra el precio de apertura de la última operación antes de que se abra una nueva operación Martingale. |
| MaxTradesInSeries | int | El número máximo de operaciones permitidas en una sola serie de Martingala. |
Tiempo Estrategia
| Parámetro | Tipo | Descripción |
| PermitirLunes... PermitirViernes | bool | Banderas para habilitar o deshabilitar la negociación en días específicos de la semana. |
| FechasProhibidas | cadena | Lista separada por comas de fechas (formato AAAA.MM.DD) en las que está prohibida la negociación. |
Funciones principales
OnInit() (Inicialización)
Establece el MagicNumber , el modo de margen y la desviación del EA. Reinicia las variables de estado de Martingale ( s_currentLot , s_totalTradesInSeries , etc.) a sus valores iniciales, preparándose para un nuevo comienzo.
OnDeinit() (Desinicialización)
Una simple función de limpieza, imprimiendo un mensaje cuando el EA es detenido o eliminado.
IsTradingDateAllowed() y IsTradingDayAllowed() (Filtros de negociación)
Estas funciones comprueban el día y la fecha actual contra las entradas definidas por el usuario ( AllowMonday to AllowFriday and ForbiddenDates ) para determinar si la negociación está permitida.
OpenTradeLogic(ENUM_ORDER_TYPE tipo, cadena tradeComment) (Ejecución de mercado)
Esta función gestiona la apertura de nuevas posiciones de mercado (Compra o Venta).
-
Valida y normaliza el tamaño del lote comparándolo con el tamaño mínimo, máximo y de paso del broker.
-
Comprueba si hay suficiente margen libre utilizando CheckMargin() .
-
Ejecuta la operación sin un Take Profit o Stop Loss fijo ( tp_calculated es 0).
-
Actualiza las variables de estado globales de Martingale: s_currentLot , s_lastOpenPrice , s_seriesType , y s_totalTradesInSeries .
CerrarTodasLasPosiciones()
Recorre todas las posiciones abiertas actualmente y cierra cualquiera que haya sido abierta por este EA (que coincida con el MagicNumber ).
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (Colocación de órdenes pendientes)
Esta función coloca órdenes Buy Limit o Sell Limit:
-
Valida el tamaño del lote y comprueba si hay margen suficiente.
-
Valida el precio de entrada frente a la distancia mínima del broker ( SYMBOL_TRADE_STOPS_LEVEL ).
-
Calcula un Take Profit ( tp ) fijo basado en la entrada TakeProfit.
-
Envía la solicitud de operación. Nota: La función UpdateHighLowAndOrders llama a esta función para colocar órdenes iniciales Buy Limit y Sell Limit.
UpdateHighLowAndOrders() (Lógica de Entrada Inicial)
Este es el mecanismo de entrada inicial cuando no hay posiciones abiertas:
-
Busca FindHighLowBackBars para encontrar el Highest High y el Lowest Low.
-
Calcula priceSellLimit (Highest High + 1 tick) y priceBuyLimit (Lowest Low - 1 tick).
-
Comprueba si ya existen órdenes Buy Limit y Sell Limit con el MagicNumber del EA.
-
Coloca una orden inicial Sell Limit justo por encima del máximo reciente y una orden Buy Limit justo por debajo del mínimo reciente, cada una utilizando el InitialLot .
OnTick() (Lógica Principal)
El núcleo de la lógica de ejecución del EA:
-
Verificación de Tiempo: Evita cálculos redundantes en el mismo tick.
-
Comprobación de Filtro: Si no se permite operar por día/fecha, elimina todas las órdenes pendientes.
-
Comprobación de Objetivo de Beneficio (Salida en Serie): Si eaHasOpenPositions es verdadero Y totalFloatingProfit es ≥ SecureProfitMartingaleTarget , llama a CloseAllPositions() y reinicia todas las variables de estado Martingale para iniciar una nueva serie.
-
Colocación Inicial de la Orden: Si !eaHasOpenPositions AND la negociación está permitida, reinicia el estado de la Martingala y comprueba si se ha formado una nueva barra.
-
Si se forma una nueva barra, comprueba si barsCount es ≥ ResetAfterBars . Si es así, borra las órdenes pendientes y llama a UpdateHighLowAndOrders() para colocar nuevas órdenes iniciales. Si no, simplemente llama a UpdateHighLowAndOrders() .
-
-
Lógica del Paso Martingala: Si eaHasOpenPositions es verdadero Y s_totalTradesInSeries es $< MaxTradesInSeries`:
-
Comprueba si totalFloatingProfit es negativo Y el precio se ha movido en contra de la última operación abierta por al menos DistanceMartingalePips .
-
Si se cumplen ambas condiciones, calcula el nextLot multiplicando s_currentLot por LotMultiplier .
-
Determina la dirección orderToOpen (ya sea la misma dirección que la serie o la inversa, basada en ReverseMartingale ).
-
Llama a OpenTradeLogic() para abrir la nueva posición multiplicada, continuando la serie Martingale.
-
Resumen de la estrategia
El EA "Babi Ngepet" implementa una estrategia de Martingala arriesgada pero potencialmente de alta recompensa combinada con una entrada inicial de ruptura/reversión de rango:
-
Entrada inicial: El EA coloca un Límite de Compra inicial (por debajo del mínimo reciente) y un Límite de Venta (por encima del máximo reciente). Esto sugiere una suposición inicial de comportamiento de rango limitado: entra una compra cuando el precio cae a un mínimo y una venta cuando el precio sube a un máximo.
-
Gestión de operaciones: Si una de las operaciones iniciales se activa y la posición se mueve hacia una pérdida agregada (beneficio flotante negativo), y el precio continúa moviéndose en contra de las posiciones abiertas por una distancia definida, el EA abre una nueva posición en la misma dirección con un tamaño de lote mayor (Martingala).
-
Estrategia de salida: La serie de operaciones continúa aumentando el tamaño del lote hasta que el beneficio flotante agregado de todas las operaciones de la serie alcanza el SecureProfitMartingaleTarget , momento en el que se cierran todas las posiciones, y el EA se reinicia para una nueva serie.
Advertencia: La estrategia Martingale es conocida por sus altos drawdowns y alto riesgo de pérdida de capital porque el tamaño del lote aumenta después de cada paso perdedor.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/64444
Trap News MT5
Script For Trap News Alto impacto
KopierMaschineMT5
KopierMaschine es un copiador local de operaciones entre diferentes cuentas de MetaTrader 4 y MetaTrader 5 en cualquier dirección ubicadas en un ordenador con una interfaz intuitiva.
Asesor Experto en Teoría de la Probabilidad para Forex
Asesor de Teoría de la Probabilidad
Breakout Strategy with Prop Firm Helper Functions
Esta es una actualización de la "Estrategia de ruptura simple pero efectiva". En este código, He añadido algunas funciones de ayuda para los desafíos de la firma prop.