Tutorial de un sencillo sistema de trading de soporte-resistencia para EA Wizard

En este artículo vamos a mostrarle cómo construir un sencillo sistema de trading semiautomático basado en niveles de soporte y resistencia (niveles S/R). El sistema tendrá las siguientes características:

  • Los precios para los niveles S/R serán definidos por el usuario mediante el uso de parámetros de entrada. Si no, el EA los colocará automáticamente en el gráfico por encima y por debajo del precio de mercado actual.
  • una vez que el mínimo de la última barra cruce por encima del nivel S y cierre por encima del precio de apertura de la barra, el EA abrirá una posición larga.
  • una vez que el máximo de la última barra cruza por debajo del nivel R definido y la barra cierra por debajo de su apertura el EA abrirá una posición corta
  • podrá limitar el número de operaciones abiertas por cada nivel de S/R, así como los tamaños de stop-loss y profit-target
  • el EA utilizará reglas fijas de gestión monetaria de % de la equidad de la cuenta
  • el EA también dibujará líneas correspondientes a los niveles S/R definidos para que pueda modificarlos fácilmente directamente en los gráficos

Configuración básica

Lo que tenemos que hacer primero es configurar el nombre de nuestro EA y las reglas de gestión de dinero. Aquí es cómo hacerlo:

Configuración de las entradas EA

Lo que más se hace en este paso es obvio, pero centrémonos en las variables por un momento. Vamos a ir a través de ellos mientras se explica el significado:

últimoApoyo - Este es el precio introducido para el nivel S. Se establecerá automáticamente al iniciar el EA y luego se puede modificar cambiando el parámetro o modificando la línea de soporte directamente en el gráfico.
últimaResistencia - Este es el precio introducido para el nivel R. Se establecerá automáticamente al iniciar el EA y luego se puede modificar cambiando el parámetro o modificando la línea de resistencia directamente en el gráfico.
tradesLongCounter - esta variable se utilizará para almacenar el número de operaciones largas realizadas con el último nivel de S/R establecido
tradesShortCounter - esta variable se utilizará para almacenar el número de operaciones en corto realizadas con el último nivel de S/R establecido

NOTA: incorporamos estos "contadores de operaciones" para limitar el número máximo de operaciones ejecutadas por cada nivel definido. Necesitamos esto para evitar el exceso de operaciones mientras esperamos no más de 3 operaciones en cada nivel S o R establecido. También necesitamos reiniciar estos contadores una vez que modificamos el nivel S o R a un nuevo precio para que el EA pueda empezar de nuevo.

maxTradesPerSR - el número máximo de operaciones permitidas por cada nivel S/R
PT, SL - son las distancias de las órdenes stop-loss y profit-target expresadas en número de pips

En cuanto a las reglas de gestión monetaria, no queremos arriesgar más de 3% de nuestra cuenta por cada operación con un tamaño máximo posible de 5 lotes.

También necesitamos asegurarnos de que las reglas globales de gestión monetaria funcionarán correctamente con nuestros tamaños de PT y SL definidos, así que cambiemos a la pestaña SL/PT:

Establecer reglas globales de gestión de la movilidad

Configuración de los niveles S/R

Una vez definidas todas las entradas necesarias, podemos pasar a la siguiente tarea: crear reglas y lógica para el propio EA.

Necesitamos que nuestro EA tenga precios S/R editables (como entradas), pero aún así necesitamos que el EA funcione de forma inteligente, es decir, que dibuje líneas horizontales incluso sin introducir ningún valor de precio específico una vez que cargamos nuestro EA. He aquí cómo hacerlo:

Fijación de precios S/R

si LastSupport = 0 O lastResistance = 0 - en caso de que no establezcamos ningún precio específico en la carga del EA, dejemos que el EA lo establezca por sí mismo entonces:

lastResistance = (High[1] + ConvertToRealPips(100)) y
lastSupport = (Low[1] - ConvertToRealPips(100))

Si no establece ningún precio específico para el nivel S o R en el momento de cargar el EA, el EA lo hará automáticamente colocándolos 100 pips por encima del máximo actual (para el nivel R) y 100 pips por debajo del mínimo actual (para el nivel S). Estamos utilizando el ConvertToRealPips(pips) para sumar y restar 100 pips de rango de precio (los pips deben ser convertidos a una diferencia de precio para este propósito).

Dibujar niveles S/R en un gráfico

Aquí es donde el verdadero poder de EA Wizard entra en juego. Si usted no tiene cierta función requerida disponible en EA Wizard puede simplemente añadirlo mediante el uso de código MQL4 personalizado.

Necesitamos añadir una condición que compruebe si alguna de esas líneas horizontales (R O S) ya están colocadas en el gráfico. Podemos utilizar una práctica función llamada ObjectFind("nombre del objeto") para ello (tenga en cuenta las comillas que hay que utilizar aquí). Si las líneas no existen en el gráfico (la función ObjectFind devuelve un número menor que cero) podemos dibujarlas en el siguiente paso.

FunciónPersonalizada: ObjectFind("resistencia1") < 0 OR
FunciónPersonalizada: ObjectFind("soporte1") < 0

Trazado de las líneas horizontales

Acción personalizada: ObjectCreate("resistencia1", OBJ_HLINE, 0, Time[0], ultimaResistencia);
Acción personalizada: ObjectCreate("soporte1", OBJ_HLINE, 0, Time[0], ultimoSoporte);

Para dibujar las líneas utilizamos la función CrearObjeto tal y como se define en la Manual de lenguaje MQL4 para crear nuevos objetos de línea horizontal.

La función requiere varios parámetros:

"soporte1", "resistencia1" son nombres que utilizamos para nuestras líneas ya que cada objeto en MetaTrader debe tener definido su propio nombre.

OBJ_HLINE define qué tipo de objeto queremos dibujar. En este caso necesitamos dibujar una línea horizontal

0 - El valor "cero" se refiere al índice de la ventana. 0 significa que el gráfico principal que queremos dibujar en

Tiempo[0] - estamos haciendo referencia al punto de dibujo en el último compás

últimoApoyo últimaResistencia son los precios a los que queremos que se muestren nuestras líneas S/R

Tenga en cuenta también que utilizamos Entrar en el diario para poder monitorizar el comportamiento de EA durante su funcionamiento. Esta función es muy útil especialmente si usted necesita ver lo que sucede con ciertas variables valor

Actualización de los precios

Si modificamos el nivel S o el nivel R en el gráfico necesitamos que nuestro EA registre ese cambio. Para ello necesitamos leer los precios actuales de ambas líneas tanto si corresponden a últimoApoyo últimaResistencia variables. Una vez que detectamos algún cambio necesitamos actualizar esas variables.

Recuerde, una vez que actualizamos los precios S/R también queremos reiniciar el contador de operaciones para que el EA pueda operar libremente el nuevo nivel de precios hasta el límite predefinido - maxTradesPerSR.

Actualización del precio del nivel de resistencia

últimaResistencia = CustomFunction: ObjectGet("resistencia1", OBRPROP_PRICE1);

Para ello utilizamos otra función MQL4 - ObjectGet(). Esta función permite obtener información de una determinada propiedad del objeto como el precio por ejemplo. Esta función requiere el nombre del objeto y la constante de propiedad correcta que estamos intentando obtener (en este caso es el precio principal - PRECIO1).

Y hacemos lo mismo con nuestro nivel S:

Actualización del precio del nivel de soporte

Operar con niveles S/R: colocación de órdenes

Una vez que tengamos todo lo que necesitamos preparado, podemos empezar a definir las reglas de negociación para ambas direcciones.

Empecemos primero por la condición larga:

Operar en el lado largo

El mínimo[1] supera el último soporte - para una señal larga válida consideramos una situación cuando el precio bajo cruza por encima del nivel S definido
La posición del mercado es plana - no hay ningún otro puesto ya abierto
IsBarOpen es True - evaluar la condición sólo una vez por cada barra
tradesLongCounter < maxTradesPerSR - negociar sólo si no se ha alcanzado el límite de negociación

Si la condición anterior es válida, podemos colocar una orden larga de mercado con el número mágico 1000. También tenemos que aumentar el valor del contador para operaciones largas en 1 (para contar la última operación larga). Esto se hace mediante el uso de la Asignar variable y el Adición funciones.

No se olvide de establecer PT y SL tamaño adecuado también con el tamaño del lote para cada comercio como se muestra en la captura de pantalla.

Establecer un objetivo global de beneficios
Establecer el tamaño del lote

Ahora tenemos que hacer lo mismo para el lado corto:

Establecimiento de reglas para el lado corto

La principal diferencia radica en la condición de cruce. Queremos ver una barra High[1] to Cross Below nuestro nivel R definido. Para el orden de mercado a corto plazo también tenemos que utilizar un otro número mágico (2000 en nuestro caso) porque en MetaTrader cada orden tiene un único número mágico asignado.

En este punto tenemos nuestro EA completo. El último paso aquí es exportar el código en un archivo EA y probar el EA en MetaTrader4 utilizando el backtester o el régimen simulado.

Exportar el EA a MetaTrader4

Una vez guardado el EA podemos iniciar el backtester de MT4 para verificar su funcionamiento.

Probar el EA
Suscríbase a
Notificar a
5 Comentarios
Más antiguo
Más reciente Más votados
Feedbacks de Inline
Ver todos los comentarios
Ling
Ling
15. 12. 2017 7:40 am

¿Será capaz el Asistente de EA de utilizar un cierto número de velas en horas específicas (si se trata de un gráfico horario) para identificar los niveles de soporte y resistencia y abrir y cerrar operaciones basadas en estos niveles? Por ejemplo, en un gráfico horario, dibuje las líneas de resistencia y soporte basándose en el máximo más alto y el mínimo más bajo de las velas cerradas a las 3am, 4am y 5am.

krikri
krikri
25. 2. 2018 12:00 pm

Hola Tomas262,

muy buen trabajo, ¿dónde puedo encontrar el archivo sqw de este EA (sistema de comercio de resistencia de apoyo)?

saludos

Christian

Denis Mc Grath
Denis Mc Grath
22. 5. 2018 8:28 am

Gran artículo Tomas.

girija k
22. 6. 2018 11:52 am

Voy a compartir con ustedes una estrategia muy simple basada en un patrón de velas fuerte y fácil de notar. Lo llaman "Lucky Spike". Todo el mundo puede aprenderlo, usarlo y ganar dinero con él. Hay traders que se ganan la vida operando con este patrón. Echa un vistazo a este ebook que te estoy dando de forma gratuita:==> http://www.forexmystery.com?hgd4h84gdh

girija k
22. 6. 2018 11:54 am

Voy a compartir con ustedes una estrategia muy simple basada en un patrón de velas fuerte y fácil de notar. Lo llaman "Lucky Spike". Todo el mundo puede aprenderlo, usarlo y ganar dinero con él. Hay traders que se ganan la vida operando con este patrón. Echa un vistazo a este ebook que te estoy dando de forma gratuita:==> http://www.forexmystery.com?hgd4h84gdh

Seguir leyendo