Analizamos ejemplos de estrategias comerciales en el terminal de cliente
Contenido
Introducción
A principios de la década de 1990, los gráficos de velas japonesas y los patrones de velas desarrollados por el analista técnico Steve Nison se introdujeron en los mercados financieros occidentales. Desde entonces, el conocimiento de los patrones de velas se ha vuelto tan esencial para los tráders como la capacidad de aplicar el análisis técnico clásico.
Hace un tiempo, en el directorio de asesores del terminal de cliente apareció la nueva carpeta Free Robots:

Esta carpeta contiene 28 asesores: ejemplos de estrategias comerciales para el estudio independiente y la aplicación de los principios establecidos en la estrategia para nuestros propios desarrollos. Las estrategias comerciales presentadas en la carpeta Robots gratuitos son asesores que negocian con patrones de velas respaldados por las señales de los indicadores.
Para confirmar las señales procedentes de los patrones de velas, se utilizan los valores de uno de los cuatro indicadores osciladores: CCI, MFI, RSI y Stochastic Oscillator. De esta forma, presentaremos para su estudio 7 asesores que negociarán con patrones de velas (cada uno con dos patrones: un patrón para posiciones largas y otro para posiciones cortas), y cada uno de estos asesores se presenta en cuatro ejemplares, de acuerdo con la cantidad de indicadores de confirmación.
Revisión de estrategias comerciales
Cada una de las estrategias comerciales usa dos patrones similares, pero diferentes en su dirección y nombre:
1. BlackCrows WhiteSoldiers
| | 3 White Soldiers: El patrón de comprar "Tres soldados blancos" son 3 velas blancas consecutivas con un cuerpo de tamaño suficiente. Suponen una señal de una posible reversión de la tendencia bajista. |
| | 3 Black Crows: El patrón de venta "Tres cuervos negros" son 3 velas negras consecutivas con un cuerpo de tamaño suficiente. Suponen una señal de una posible reversión de la tendencia ascendente (alcista). |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- BlackCrows WhiteSoldiers CCI.mq5 — asesor que opera con los patrones 3 White Soldiers y 3 Black Crows con confirmación de señales mediante el indicador CCI.
- BlackCrows WhiteSoldiers MFI.mq5 — asesor que opera con los patrones 3 White Soldiers y 3 Black Crows con confirmación de señales mediante el indicador MFI.
- BlackCrows WhiteSoldiers RSI.mq5 — asesor que opera con los patrones 3 White Soldiers y 3 Black Crows con confirmación de señales mediante el indicador RSI.
- BlackCrows WhiteSoldiers Stoch.mq5 — asesor que opera con los patrones 3 White Soldiers y 3 Black Crows con confirmación de señales mediante el indicador Stochastic Oscillator.
2. BullishBearish Engulfing
| | Bullish Engulfing: El patrón de compra "envolvente alcista" se produce cuando, durante una tendencia bajista, una vela bajista es seguida por una vela alcista cuyo cuerpo envuelve completamente el cuerpo de la vela bajista. Dicho patrón supone una señal de una posible reversión de la tendencia bajista. |
| | Bearish Engulfing: El patrón de venta "envolvente bajista" ocurre cuando, durante una tendencia alcista, una vela alcista es seguida por una vela bajista cuyo cuerpo envuelve completamente el cuerpo de la vela alcista. Dicho patrón supone una señal de una posible reversión de la tendencia ascendente (alcista). |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- BullishBearish Engulfing CCI.mq5 — asesor que opera con patrones Bullish Engulfing y Bearish Engulfing con confirmación de señales mediante el indicador CCI.
- BullishBearish Engulfing MFI.mq5 — asesor que opera con patrones Bullish Engulfing y Bearish Engulfing con confirmación de señales mediante el indicador MFI.
- BullishBearish Engulfing RSI.mq5 — asesor que opera con patrones Bullish Engulfing y Bearish Engulfing con confirmación de señales mediante el indicador RSI.
- BullishBearish Engulfing Stoch.mq5 — asesor que opera con patrones Bullish Engulfing y Bearish Engulfing con confirmación de señales mediante el indicador Stochastic Oscillator.
3. BullishBearish Harami
| | Bullish Harami: El patrón de compra "Harami alcista" se produce cuando una vela bajista larga es seguida por una vela alcista con su cuerpo completamente contenido dentro del cuerpo de la vela bajista en una tendencia bajista. Dicho patrón supone una señal de una posible reversión de la tendencia bajista. |
| | Bearish Harami: El patrón de venta "Harami bajista" ocurre cuando una vela alcista larga es seguida por una vela bajista con su cuerpo completamente contenido dentro del cuerpo de la vela alcista durante una tendencia alcista. Dicho patrón supone una señal de una posible reversión de la tendencia ascendente (alcista). |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- BullishBearish Harami CCI.mq5 — asesor que opera con patrones Bullish Harami y Bearish Harami con confirmación de señales mediante el indicador CCI.
- BullishBearish Harami MFI.mq5 — asesor que opera con patrones Bullish Harami y Bearish Harami con confirmación de señales mediante el indicador MFI.
- BullishBearish Harami RSI.mq5 — asesor que opera con patrones Bullish Harami y Bearish Harami con confirmación de señales mediante el indicador RSI.
- BullishBearish Harami Stoch.mq5 — asesor que opera con patrones Bullish Harami y Bearish Harami con confirmación de señales mediante el indicador Stochastic Oscillator.
4. BullishBearish MeetingLines
| | Bullish Meeting Lines: El patrón de compra "velas de encuentro alcista" es una combinación de una vela bajista y una alcista que tienen precios de cierre iguales (o muy cercanos). La longitud de los cuerpos de ambas velas es mayor que el promedio. Dicho patrón supone una señal de una posible reversión de la tendencia bajista. |
| | Bearish Meeting Lines: El patrón de venta "velas de encuentro bajista" es una combinación de una vela alcista y una bajista que tienen precios de cierre iguales (o muy cercanos). La longitud de los cuerpos de ambas velas es mayor que el promedio. Dicho patrón supone una señal de una posible reversión de la tendencia ascendente (alcista). |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- BullishBearish MeetingLines CCI.mq5 — asesor que opera con patrones Bullish Meeting Lines y Bearish Meeting Lines con confirmación de señales mediante el indicador CCI.
- BullishBearish MeetingLines MFI.mq5 — asesor que opera con patrones Bullish Meeting Lines y Bearish Meeting Lines con confirmación de señales mediante el indicador MFI.
- BullishBearish MeetingLines RSI.mq5 — asesor que opera con patrones Bullish Meeting Lines y Bearish Meeting Lines con confirmación de señales mediante el indicador RSI.
- BullishBearish MeetingLines Stoch.mq5 — asesor que opera con patrones Bullish Meeting Lines y Bearish Meeting Lines con confirmación de señales mediante el indicador Stochastic Oscillator.
5. DarkCloud PiercingLine
| | Piercing Line: El patrón de compra "claro en las nubes" es una combinación de una vela bajista y una alcista. Es el análogo opuesto del patrón Dark Cloud Cover (cobertura de nubes negras). Primero hay una vela negra grande, la siguiente tiene una apertura baja (por debajo del mínimo de la anterior) y un cierre por encima de la mitad de la primera vela. Dicho patrón supone una señal de una posible reversión de la tendencia bajista. |
| | Dark Cloud Cover: El patrón de venta "cobertura de nubes negras" es una combinación de una vela alcista y una bajista. Primero hay una vela blanca grande, la siguiente vela tiene un máximo de apertura (más alto que el máximo anterior) y un cierre por debajo de la mitad de la primera vela. Este es uno de los pocos casos en los que se considera el máximo y el mínimo. Dicho patrón supone una señal de una posible reversión de la tendencia ascendente (alcista). |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- DarkCloud PiercingLine CCI.mq5 — asesor que opera con patrones PiercingLine y Dark Cloud Cover con confirmación de señales mediante el indicador CCI.
- DarkCloud PiercingLine MFI.mq5 — asesor que opera con patrones PiercingLine y Dark Cloud Cover con confirmación de señales mediante el indicador MFI.
- DarkCloud PiercingLine RSI.mq5 — asesor que opera con patrones PiercingLine y Dark Cloud Cover con confirmación de señales mediante el indicador RSI.
- DarkCloud PiercingLine Stoch.mq5 — asesor que opera con patrones PiercingLine y Dark Cloud Cover con confirmación de señales mediante el indicador Stochastic Oscillator.
6. HangingMan Hammer
| | Hammer: El patrón de compra "Martillo" es una vela con un cuerpo pequeño y una sombra inferior larga que aparece después de una tendencia bajista. La aparición del "Martillo" supone una señal intensa de que la dominancia del mercado bajista está llegando a su fin. |
| | Hanging Man: El patrón de venta "Ahorcado" es una vela con un cuerpo pequeño y una sombra inferior larga que aparece después de una tendencia alcista. La aparición del "Ahorcado" señala el final de la tendencia alcista. |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- HangingMan Hammer CCI.mq5 — asesor que opera con patrones Hammer y Hanging Man con confirmación de señales mediante el indicador CCI.
- HangingMan Hammer MFI.mq5 — asesor que opera con patrones Hammer y Hanging Man con confirmación de señales mediante el indicador MFI.
- HangingMan Hammer RSI.mq5 — asesor que opera con patrones Hammer y Hanging Man con confirmación de señales mediante el indicador RSI.
- HangingMan Hammer Stoch.mq5 — asesor que opera con patrones Hammer y Hanging Man con confirmación de señales mediante el indicador Stochastic Oscillator.
7. MorningEvening StarDoji
| | Morning Star: El patrón de compra "estrella matutina" consta de tres velas y se produce durante una tendencia bajista: 1. A la vela negra larga le sigue una vela con un cuerpo pequeño (el color no importa) que no se cruza con el cuerpo de la vela negra. 2. El cuerpo pequeño de la segunda vela significa que el mercado ha pasado de una tendencia bajista a un equilibrio entre alcistas y bajistas. 3. La tercera vela de este patrón es una vela alcista cuyo cuerpo generalmente no se cruza con el cuerpo de la segunda vela, mientras que el nivel de cierre se encuentra dentro del cuerpo de la primera vela (bajista). El patrón es una señal de una posible reversión de la tendencia bajista. |
| | Morning Doji Star: El patrón de compra "estrella Doji matutina" es un caso especial del patrón "estrella matutina". En este caso, la segunda vela del patrón tiene los mismos precios de apertura y cierre, es decir, la segunda vela no tiene cuerpo. El patrón es una señal de una posible reversión de la tendencia bajista. |
| | Evening Star: El patrón de venta "estrella vespertina" también consta de tres velas y se produce durante una tendencia ascendente: 1. A la vela blanca larga le sigue una vela con un cuerpo pequeño (el color no importa) que no se cruza con el cuerpo de la vela blanca. 2. El cuerpo pequeño de la segunda vela significa que el mercado ha pasado de una tendencia alcista a un equilibrio entre alcistas y bajistas. 3. La tercera vela de este patrón es una vela negra cuyo cuerpo generalmente no se cruza con el cuerpo de la segunda vela, mientras que el nivel de cierre se encuentra dentro del cuerpo de la primera vela (alcista). El patrón es una señal de una posible reversión de la tendencia ascendente (alcista). |
| | Evening Doji Star: El patrón de venta "estrella Doji vespertina" es un caso especial del patrón "estrella vespertina". En este caso, la segunda vela del patrón tiene los mismos precios de apertura y cierre, es decir, la segunda vela no tiene cuerpo. El patrón es una señal de una posible reversión de la tendencia bajista. |
Basándose en los patrones de velas descritos anteriormente, el terminal ofrece cuatro asesores de entrenamiento:
- MorningEvening StarDoji CCI.mq5 — asesor que opera con patrones Morning Star (Morning Doji Star) y Evening Star (Evening Doji Star) con confirmación de señales mediante el indicador CCI.
- MorningEvening StarDoji MFI.mq5 — asesor que opera con patrones Morning Star (Morning Doji Star) y Evening Star (Evening Doji Star) con confirmación de señales mediante el indicador MFI.
- MorningEvening StarDoji RSI.mq5 — asesor que opera con patrones Morning Star (Morning Doji Star) y Evening Star (Evening Doji Star) con confirmación de señales mediante el indicador RSI.
- MorningEvening StarDoji Stoch.mq5 — asesor que opera con patrones Morning Star (Morning Doji Star) y Evening Star (Evening Doji Star) con confirmación de señales mediante el indicador Stochastic Oscillator.
Todos los indicadores usados en los asesores sirven para confirmar las entradas en una posición larga o corta (en presencia de las señales correspondientes de los patrones de velas) y para cerrar posiciones abiertas según las señales del indicador.
Las siguientes tablas muestran los valores de los indicadores utilizados para confirmar las entradas de las posiciones y el cierre de posiciones abiertas:
| Indicador | Compra | Venta |
|---|---|---|
| CCI | CCI (1)<-50 — el valor del indicador CCI en la última barra completada es menor que -50 | CCI(1)>50 — el valor del indicador CCI en la última barra completada es mayor que 50 |
| IMF | MFI(1)<40 — el valor del indicador MFI en la última barra completada es menor que 40 | MFI(1)>60 — el valor del indicador MFI en la última barra completada es mayor que 60 |
| RSI | RSI(1)<40: — el valor de la línea del indicador RSI en la última barra completada es menor que 40 | RSI(1)>60: — el valor del indicador RSI en la última barra completada es mayor que 60 |
| Stochastic | Stochastic Signal(1)<30: — el valor de la línea de señal del indicador estocástico en la última barra completada es menor que 30 | Stochastic Signal(1)>70 — el valor de la línea de señal del indicador estocástico en la última barra completada es mayor que 70 |
Las señales del indicador técnico para el cierre de posiciones se producen cuando el valor del indicador cruza el borde de la zona extrema, es decir, entra o sale de la zona de sobrecompra o sobreventa.
| Indicador | Cierre de una posición larga | Cierre de una posición corta |
|---|---|---|
| CCI | El indicador CCI cruza el nivel 80 o el nivel -80 desde arriba hacia abajo | El indicador CCI cruza el nivel -80 o el nivel 80 desde abajo hacia arriba |
| IMF | El indicador MFI cruza el nivel 70 o el nivel 30 desde arriba hacia abajo | El indicador MFI cruza el nivel 30 o el nivel 70 desde abajo hacia arriba |
| RSI | El indicador RSI cruza el nivel 70 o el nivel 30 desde arriba hacia abajo | Cruce del indicador RSI del nivel 30 o nivel 70 desde abajo hacia arriba |
| Stochastic | Cruce de la línea de señal del indicador Sthocastic del nivel 80 o el nivel 20 desde arriba hacia abajo | Cruce de la línea de señal del indicador estocástico del nivel 20 o el nivel 80 desde abajo hacia arriba |
Un asesor independiente negocia con un par de patrones de velas en direcciones opuestas y se presenta en cuatro versiones de indicadores de confirmación.
Como resultado, tenemos 7 * 4 = 28 asesores diferentes, organizados según un esquema, idéntico para todos. Vamos a analizar la lógica unificada de todos los asesores utilizando esquemas de flujo.
Analizamos la lógica general
Si abre cualquiera de los asesores presentados en un editor de código y estudia su código, verá un esquema simple:

La lógica de los asesores se basa en banderas y variables declaradas a nivel global:
- ExtSignalOpen — señal para abrir una posición. 1 — Buy, -1 — Sell, 0 — no hay señal,
- ExtSignalClose — señal para el cierra de posición. 2 — long, -2 — short, 0 — sin señal,
- ExtPatternInfo – descripción de texto del patrón encontrado actualmente,
- ExtDirection — dirección de la posición a abrir. Descripción de texto,
- ExtPatternDetected — bandera del patrón encontrado (true/false),
- ExtConfirmed — bandera de la señal de patrón confirmada por el indicador (true/false),
- ExtCloseByTime — indica que el cierre es requerido por el tiempo de mantenimiento de la posición (true/false),
- ExtCheckPassed — bandera que indica si los datos se han recibido correctamente (true/false).
La lógica del asesor es coherente y consta de un bloque de inicialización de banderas en el manejador OnInit() y cuatro etapas de funcionamiento en el manejador OnTick().
- Etapa 1 — verificación de la aparición de una nueva barra y actualización del entorno y el estado de las banderas,
- Etapa 2 — apertura de una posición,
- Etapa 3 — cierre de la posición,
- Etapa 4 — cierre de la posición una vez transcurrido su tiempo de mantenimiento.
Vamos a analizar ahora la lógica de funcionamiento del asesor.
Esquema de flujo de la lógica del asesor

El esquema de flujo muestra las cuatro etapas de funcionamiento del asesor:
Etapa 1:
- Comprobamos la aparición de una nueva barra.
Si es una barra nueva, comprobamos el estado actual: - Comprobamos las formaciones de velas para detectar la presencia de un patrón.
- Si se halla un patrón, verificamos la confirmación de la señal del patrón utilizando el indicador.
- Si se confirma la señal del patrón, imprimimos en el diario de registro la información sobre el patrón encontrado y establecemos los banderas para abrir una posición.
Etapa 2:
- Si hay una señal de apertura de posición y dicha posición no existe, imprimimos un mensaje sobre la señal para abrir una posición en el diario de registro y abrimos la posición.
- Si la posición está abierta, restablecemos la bandera de apertura de posición.
Etapa 3:
- Si hay una señal para cerrar una posición y dicha posición existe, imprimimos un mensaje sobre la señal para cerrar una posición en el diario de registro y cerramos la posición.
- Si no hay posición, restablecemos la bandera de cierre de posición.
Etapa 4:
- Si hay una señal para cerrar una posición después de que el tiempo de mantenimiento haya expirado y dicha posición existe, cerramos la posición con el tiempo de mantenimiento expirado.
- Si no hay ninguna posición, restablecemos la bandera de cierre de posición una vez que haya expirado el tiempo de mantenimiento.
Lista de funciones
Veamos la lista de funciones del asesor y su descripción breve:
CheckState() — verifica el estado del entorno:
- Si no se encuentra el patrón, retorna false.
- Si obtenemos un error al confirmar el patrón con el indicador, se retorna false.
- Si el patrón no es confirmado por la señal del indicador, la bandera de apertura de posición se restablece.
- Si el cierre se establece una vez que ha expirado el tiempo de mantenimiento de la posición, se establece la bandera correspondiente.
PositionOpen() — apertura de una posición:
- Se actualizan los datos del entorno comercial.
- Dependiendo de la señal y, en consecuencia, del tipo de posición, los precios de colocación del StopLoss y el TakeProfit se ajustan a valores aceptables en relación con el precio de apertura y las restricciones del servidor.
- Se abre una posición.
- Si la posición no está abierta, se informa un error en el diario de registro y se retorna false.
- Retorna true si se ha abierto correctamente.
CloseBySignal() — cierre de una posición mediante señal:
- Si no hay señal de cierre, se da el retorno desde la función.
- El tipo de posición a cerrar está determinado por la dirección de la señal.
- Se cierran todas las posiciones abiertas por el asesor con el tipo determinado por la dirección de la señal.
CloseByTime() — cierre de posiciones con tiempo de mantenimiento expirado:
- Si no hay posiciones abiertas por el asesor, se da el retorno desde la función.
- Se cierran todas las posiciones abiertas por el asesor cuyo tiempo de mantenimiento haya expirado.
PositionExist() — retorna la bandera de existencia de una posición en la dirección de la señal:
- Se determina el tipo de posición correspondiente a la dirección de la señal.
- Retorna la bandera de existencia de una posición abierta por un experto con un tipo determinado por la dirección de la señal.
PositionExpiredByTimeExist() — retorna la bandera de existencia de una posición con tiempo de mantenimiento vencido:
- Se determina el número de barras de vida útil de una posición.
- Se retorna la bandera de existencia de la posición si su tiempo de mantenimiento es mayor que el número de barras especificadas en la configuración.
BarsHold() — retorna la cantidad de barras de mantenimiento de la posición:
- Se determina y retorna el número de barras entre la hora de apertura de la posición y la hora actual del servidor.
Open(), Close(), Low(), High() — retorna el precio de la barra correspondiente según el índice:
- Los precios correspondientes se solicitan en la barra indicada.
- Si no se obtienen los precios, se establece una bandera de error.
- Se retornan los precios obtenidos.
MidPoint(), MidOpenClose(), AvgBody() — retornan los precios promedio calculados.
CheckPattern() — verificación de la existencia de un patrón:
- El algoritmo de búsqueda de patrones se ejecuta en la dirección Short.
- Si se encuentra el patrón, se establece la bandera del patrón encontrado y se retorna true.
- El algoritmo de búsqueda de patrones se ejecuta en la dirección Long.
- Si se encuentra un patrón, se establece la bandera del patrón encontrado y se retorna true.
- Si no se encuentran patrones, se retorna un bandera de error, que puede establecerse como false en las funciones de obtención de precios.
CheckConfirmation() — verifica y establece la bandera de confirmación de la señal de patrón mediante la señal del indicador.
CheckCloseSignal() — verifica las condiciones para la señal para cerrar posiciones en función de los valores de la bandera; si hay una señal, establece la bandera de cierre de posición.
Conclusión
Los 28 asesores ofrecidos para su consideración en la carpeta Experts\Free Robots funcionan según la misma lógica. La única diferencia entre ellos radica en los algoritmos de búsqueda de patrones de velas y en la obtención de los datos de los cuatro indicadores para confirmar las señales del patrón. En consecuencia, cualquiera de estos asesores puede usarse como plantilla para crear otros asesores basados en él, trabajar en otras formaciones de velas y obtener confirmaciones de patrones de otros indicadores. Lo único que hay que hacer para ello es cambiar la lógica de búsqueda de patrones en las direcciones Long y Short en la función CheckPattern() llamada desde la función CheckState(), a la que se accede en el primer paso del funcionamiento del asesor:
//+------------------------------------------------------------------+ //| Returns true in case of successful pattern check | //+------------------------------------------------------------------+ bool CheckPattern() { ExtPatternDetected=false; //--- check if there is a pattern ExtSignalOpen=SIGNAL_NOT; ExtPatternInfo="\r\nPattern not detected"; ExtDirection=""; //--- check 3 Black Crows if((Open(3)-Close(3)>AvgBody(1)) && // long black (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // lower midpoints (MidPoint(1)<MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_SELL; ExtPatternInfo="\r\n3 Black Crows detected"; ExtDirection="Sell"; return(true); } //--- check 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // higher midpoints (MidPoint(1)>MidPoint(2))) { ExtPatternDetected=true; ExtSignalOpen=SIGNAL_BUY; ExtPatternInfo="\r\n3 White Soldiers detected"; ExtDirection="Buy"; return(true); } //--- result of checking return(ExtCheckPassed); }
Para reemplazar el indicador de confirmación, debemos introducir las propiedades del indicador requeridas en los parámetros de entrada en lugar de las especificadas, por ejemplo, para CCI :
//--- Input parameters input int InpAverBodyPeriod=12; // period for calculating average candlestick size input int InpPeriodCCI =37; // CCI period input ENUM_APPLIED_PRICE InpPrice=PRICE_CLOSE; // price type
En el manejador OnInit() , reemplazamos el bloque de creación, por ejemplo, CCI, con la creación de otro indicador:
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { Print("InpSL=", InpSL); Print("InpTP=", InpTP); //--- set parameters for trading operations ExtTrade.SetDeviationInPoints(InpSlippage); // slippage ExtTrade.SetExpertMagicNumber(InpMagicNumber); // Expert Advisor ID ExtTrade.LogLevel(LOG_LEVEL_ERRORS); // logging level ExtAvgBodyPeriod=InpAverBodyPeriod; //--- indicator initialization ExtIndicatorHandle=iCCI(_Symbol, _Period, InpPeriodCCI, InpPrice); if(ExtIndicatorHandle==INVALID_HANDLE) { Print("Error creating CCI indicator"); return(INIT_FAILED); } //--- OK return(INIT_SUCCEEDED); }
Y luego en el asesor, en la función de confirmación de la señal del patrón CheckConfirmation() y en la función de cierre de posición según señales del indicador CheckCloseSignal(), utilizamos los datos del nuevo indicador con los valores requeridos para confirmar las direcciones Long y Short de los patrones :
//+------------------------------------------------------------------+ //| Returns true in case of successful confirmation check | //+------------------------------------------------------------------+ bool CheckConfirmation() { ExtConfirmed=false; //--- if there is no pattern, do not search for confirmation if(!ExtPatternDetected) return(true); //--- get the value of the stochastic indicator to confirm the signal double signal=CCI(1); if(signal==EMPTY_VALUE) { //--- failed to get indicator value, check failed return(false); } //--- check the Buy signal if(ExtSignalOpen==SIGNAL_BUY && (signal<-50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI<-50"; } //--- check the Sell signal if(ExtSignalOpen==SIGNAL_SELL && (signal>50)) { ExtConfirmed=true; ExtPatternInfo+="\r\n Confirmed: CCI>50"; } //--- successful completion of the check return(true); }
//+------------------------------------------------------------------+ //| Check if there is a signal to close | //+------------------------------------------------------------------+ bool CheckCloseSignal() { ExtSignalClose=false; //--- if there is a signal to enter the market, do not check the signal to close if(ExtSignalOpen!=SIGNAL_NOT) return(true); //--- check if there is a signal to close a long position if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) { //--- there is a signal to close a long position ExtSignalClose=CLOSE_LONG; ExtDirection="Long"; } //--- check if there is a signal to close a short position if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)>80) && (CCI(2)<80))) { //--- there is a signal to close a short position ExtSignalClose=CLOSE_SHORT; ExtDirection="Short"; } //--- successful completion of the check return(true); }
Por consiguiente, vemos que estos asesores suponen una buena plantilla para crear y probar nuestros propios algoritmos para verificar varias formaciones de velas con confirmación de casi cualquier indicador adecuado.
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/15479
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Obtenga una ventaja sobre cualquier mercado (Parte III): Índice de gasto de Visa
Características del Wizard MQL5 que debe conocer (Parte 33): Núcleos de procesos gaussianos
Redes neuronales en el trading: Modelos del espacio de estados
Algoritmo de colmena artificial — Artificial Bee Hive Algorithm (ABHA): Pruebas y resultados
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Comparado, de ahí la pregunta:
Yo no hice estos códigos. Es por eso que escribí: Si usted nota cualquier inconsistencia, sólo tiene que añadir en su código.
Entiendo que esto es parte de la actualización de MT5. Lo añadiré a mi código - será borrado durante la próxima actualización de la terminal.
Entiendo que esto es parte de la actualización de MT5. Voy a añadir por mí mismo - se borrará durante la próxima actualización de la terminal.
¿Qué le impide copiar el Asesor Experto a una carpeta separada y cambiar todo allí como usted necesita?
Son de entrenamiento, sólo ejemplos.
Son tutoriales, sólo ejemplos.
Aprendemos de los errores... a cometer errores ;)
comprobar Piercing Line
Tienes razón - las condiciones no están escritas simétricamente. He comprobado la fuente original (el libro "Strategies of the World's Best Traders") - dice lo mismo.
Por lo tanto, no es nuestro error, pero es necesario hacer correcciones. Voy a mirar en otras fuentes, ya que está escrito allí. Parece que el autor se olvidó de añadir una condición