
Estrategia de trading basada en la dirección y velocidad del movimiento de los precios
Introducción
Se sabe muy bien que al moverse el precio, todos los mercados financieros tienen algún tipo de movimiento cíclico en forma de onda, que primero aumenta y luego disminuye. Se puede ver esto claramente en los gráficos con períodos de tiempo mayores. La naturaleza sinusoidal indica que el precio tiene una cierta persistencia. De lo contrario, se vería como un zigzag; fuertes movimientos hacia arriba y abajo en intervalos de tiempo cortos. Vamos a tratar de averiguar por qué ocurre este fenómeno y cómo se puede utilizar en el trading.
Inicio y persistencia del precio
Se puede caracterizar cualquier movimiento en nuestro mundo por su dirección, aceleración y velocidad. Esto se aplica también a los mercados financieros. De esto se desprende una regla importante que dice que un precio que se mueve con fuerza en una dirección nunca se detiene de manera inmediata. Se puede comparar esto con un tren: cuando un tren que a toda velocidad frena, la distancia de frenado puede llegar hasta un kilómetro.
Entonces, ¿cuándo empieza una tendencia? Cuando cambia el punto de vista de la mayoría de los participantes en el mercado por cualquier motivo, ya sea un cambio de política global, el cambio de factores importantes que influyen en el mercado o las noticias. De ahí se forma una opinión colectiva y empieza la tendencia. Los participantes en el mercado están cada vez más convencidos de que el movimiento está ganando fuerza y que seguirá así. Tiene una dirección, una aceleración y una velocidad determinada, ya que los grandes protagonistas entran al mercado con posiciones muy grandes. En este punto, aquellos que entraron al principio del movimiento y le dieron impulso y velocidad empiezan a ganar. Otros traders entran al mercado más tarde y con precios menos atractivos. Pero a diferencia de los primeros, intentan utilizar la dirección del movimiento del precio.
Se acaba la tendencia al producirse cambios. ¿Por qué sigue el precio moviéndose en la misma dirección? ¿Por qué no cambia de repente? Esto se debe a que aquellos que estaban acelerando y empujando el precio en esta dirección, empiezan a cerrar sus posiciones, haciendo desaparecer la tendencia. Y aquellos que sólo estaban "siguiendo la corriente", siguen creyendo que no ha cambiado nada y tratan incluso de mover el precio. Pero este "tren" no sólo se ha parado, sino que empieza a moverse en la dirección contraria y aquí termina la historia.
La idea del trading y cómo evitar que nos pille el "tren"
La idea de usar el movimiento y la rentabilidad está basada en el análisis de la tendencia actual en profundidad, es decir, su magnitud y duración.
Usaremos indicadores clásicos para representar un ejemplo: RSI (índice de fuerza relativa) y AC (Aceleración/Deceleración).
1. Las condiciones para entrar al mercado
Usaremos el primer indicador para medir la magnitud y profundidad del movimiento actual del precio.
Vamos a establecer los niveles para determinar la distancia y la profundidad:
Fig. 1 Niveles del oscilador RSI
Criterios para evaluar la profundidad del movimiento del precio:
- El área entre los niveles 40 y 60 se considera una zona plana (zona lateral). No hay ninguna tendencia si el precio está en esta zona. Vamos a asignar el índice 0 al movimiento que no presenta ninguna tendencia.
Zonas de movimientos del precio de compra:
- Zona 60-70; es un posible inicio de un movimiento hacia arriba. Vamos a asignar el índice 1 a este movimiento.
- Zona 70-80; el movimiento tiene una tendencia alcista más clara. El movimiento empieza a ser más rápido. Le asignamos el índice 2.
- Zona 80-90; el movimiento tiene una dirección estable. Se ha alcanzado la velocidad. Le asignamos el índice 3.
- Zona 90-100. Por regla general, este es un movimiento unidireccional muy fuerte y sin ninguna reversión. Se produce con poca frecuencia. El índice de este movimiento será el 4.
Vamos a asignar del mismo modo los índices de los precios de venta:
- Zona 30-40. El movimiento empieza a dirigirse hacia abajo. Índice -1.
- Zona 20-30. El movimiento empieza a ser más rápido. Índice -2.
- Zona 10-20. Dirección hacia abajo estable. Índice -3.
- Zona 0-10. Zona de un movimiento unidireccional fuerte. Índice -4.
Podemos describir estas condiciones en MQL4 de la siguiente manera:
//--- determining buy index double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if( rsi > 80.0 ) index_rsi = 3; else if( rsi > 70.0 ) index_rsi = 2; else if( rsi > 60.0 ) index_rsi = 1; else if( rsi < 10.0 ) index_rsi = -4; else if( rsi < 20.0 ) index_rsi = -3; else if( rsi < 30.0 ) index_rsi = -2; else if( rsi < 40.0 ) index_rsi = -1;
Usaremos el indicador AC de Bill William para medir la velocidad y la aceleración del movimiento actual.
Fig. 2 El indicador AC
Criterios para evaluar la velocidad:
Incremento.
- El primer criterio consiste en comparar el histograma actual y el anterior. Si el histograma actual es superior al anterior, existe una posible aceleración del crecimiento del precio. Este va a ser el índice de velocidad 1.
- El segundo criterio consiste en comparar 3 barras colindantes (desde la barra cero hasta la segunda barra). Podemos hablar de un incremento de la aceleración si el valor de cada barra supera el valor de la barra anterior. El índice de velocidad es igual a 2.
- Existe otra comparación parecida de 4 barras que consiste en comprobar si cada una de la barras es inferior a la barra siguiente. Es el índice de velocidad 3.
- Comparar las últimas 5 barras con la barra actual para comprobar si van en la misma dirección. Es el índice de velocidad 4.
Caída.
- Del mismo modo. Comparar la barra actual con la anterior. Si la barra actual es inferior a la anterior, el índice de velocidad es igual a -1.
- Comparar 3 barras y comprobar si cada una de las barras es inferior a la anterior. Es el índice -2.
- Comparar 4 barras. Es el índice -3.
- Comparar 5 barras. Es el índice -4.
Esta sería su implementación en MQL4:
double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- buy signal if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- sell signal else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4;
Si disponemos de los índices de profundidad de los movimientos, así como su velocidad, podemos formular y clasificar algunas condiciones para entrar al mercado.
Estas son las condiciones de entrada al mercado:
//--- buy signal if(index_rsi==1 && index_ac>=1) //possible buy movement if(index_rsi==2 && index_ac>=1) //weak buy movement if(index_rsi==3 && index_ac==1) //weak buy movement if(index_rsi==3 && index_ac>=2) //moderate buy movement if(index_rsi==4 && index_ac>=1) //strong buy movement //--- sell signal if(index_rsi==-1 && index_ac<=-1) //possible sell movement if(index_rsi==-2 && index_ac<=-1) //weak sell movement if(index_rsi==-3 && index_ac==-1) //weak sell movement if(index_rsi==-3 && index_ac<=-2) //moderate sell movement if(index_rsi==-4 && index_ac<=-1) //strong sell movement //--- flat if(index_rsi==0)
2. Las condiciones para salir del mercado
Hemos definido y clasificado los parámetros de entrada. Para explicar cómo se han formulado las condiciones de salida del mercado, voy a utilizar la siguiente analogía.
Piense, por ejemplo, en una pelota de goma para niños. Y vamos a pensar en lo que pasaría si lanzamos esta pelota al agua desde un punto muy alto. Primero caerá y aumentará su velocidad debido a la aceleración de la gravedad. Después choca contra el agua. Pero tiene bastante velocidad para sumergirse hasta cierta profundidad y perderá velocidad que llega a tener un valor negativo. La pelota está expuesta al efecto del principio de Arquímedes, que la empuja hacia la superficie.
Vamos a ver ahora este ejemplo:
- Como puede suponer, la pelota es el precio.
- La persona que lanza la pelota representa los participantes en el mercado que han iniciado la tendencia.
- La fuerza de gravitación que causa la aceleración de la gravedad representa los traders que se han unido después del inicio de la tendencia.
- El agua representa los importantes factores que influyen en el cambio de dirección.
- El principio de Arquímedes representa las posiciones cerradas que pertenecen a los que iniciaron la tendencia.
Los dos principales factores que determinan la rentabilidad del mercado son los siguientes:
- Determinar a tiempo el momento en el cual fue lanzada la pelota al agua y comprar y vender.
- Cerrar una posición cuando la pelota entra en el agua y se ralentiza su movimiento.
Es muy difícil determinar la duración y la distancia de caída de la pelota ya que no podemos ver a una persona lanzando una pelota al agua en los mercados financieros. Sólo podemos ver la velocidad y la dirección de la pelota.
Ya hemos descrito la profundidad del movimiento del precio y los criterios de evaluación de la velocidad.
Vamos a definir ahora las condiciones de salida:
//--- possible downward reversal if(index_rsi>2 && index_ac<0)
Si el precio dejó de crecer después de mucho tiempo, su aceleración se vuelve negativa (hacia abajo). Esto indica un posible cambio de tendencia.
//--- possible upward reversal if(index_rsi<-2 && index_ac>0)
Al igual que en el ejemplo: la pelota estaba cayendo durante mucho tiempo, pero se cayó en el agua que la empujó hacia fuera en la dirección opuesta. Esto indica que es el momento de cerrar posiciones.
3. Aumentar la eficiencia de entrada y salida
Se sabe que algunos de los indicadores en el trading aumentan su velocidad de respuesta a los cambios de tendencia en períodos más largos. Sin embargo, aparecen más señales falsas.
Otra forma de hacerlo consiste en no utilizar períodos más cortos para el cálculo, sino en hacer el seguimiento en varios períodos de tiempo.
Fig. 3 Tendencia en distintos períodos de tiempo en base a señales RSI y AC
La figura muestra claramente la tendencia del movimiento del precio gracias a nuestros criterios y a los indicadores RSI y AC. Vamos a verlo en detalle.
Movimiento y velocidad en M1: movimiento fuerte, el índice AC es 4, el índice de profundidad RSI es 2. M5 tiene la misma profundidad pero la velocidad es igual a 1. M15 tiene el mismo movimiento, pero es menos evidente que en los gráficos de los períodos inferiores. En cuanto a los gráficos de 30 minutos y una hora, se nota claramente que M30 ya tiene una señal y que H1 tiene una ralentización e incluso una posible señal de inversión de tendencia.
Podemos sacar una conclusión importante a partir de este ejemplo:
4. Implementación de la estrategia de trading en forma de un Asesor Experto
El código del Asesor Experto:
//+------------------------------------------------------------------+ //| tester.mq4 | //| Alexander Fedosov | //+------------------------------------------------------------------+ #property copyright "Alexander Fedosov" #property strict #include <trading.mqh> //Support library for trade operations //+------------------------------------------------------------------+ //| Parameters | //+------------------------------------------------------------------+ input int SL = 40; // Stop loss input int TP = 70; // Take profit input bool Lot_perm=true; // Lot of balance? input double lt=0.01; // Lot input double risk = 2; // Risk of deposit, % input int slippage= 5; // Slippage input int magic=2356; // Magic number input int period=8; // RSI indicator period input ENUM_TIMEFRAMES tf=PERIOD_CURRENT; // Working timeframe int dg,index_rsi,index_ac; trading tr; //+------------------------------------------------------------------+ //| Expert Advisor initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- determining variables for auxiliary class of trading functions //--- language for displaying errors, Russian of by default. tr.ruErr=true; tr.Magic=magic; tr.slipag=slippage; tr.Lot_const=Lot_perm; tr.Lot=lt; tr.Risk=risk; //--- number of attempts. tr.NumTry=5; //--- determining decimal places on the current chart dg=tr.Dig(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Main calculation function | //+------------------------------------------------------------------+ void OnTick() { depth_trend(); speed_ac(); //--- check for presence of open orders if(OrdersTotal()<1) { //--- check of buy conditions if(Buy()) tr.OpnOrd(OP_BUY,tr.Lots(),Ask,SL*dg,TP*dg); //--- check of sell conditions if(Sell()) tr.OpnOrd(OP_SELL,tr.Lots(),Bid,SL*dg,TP*dg); } //--- are there open orders? if(OrdersTotal()>0) { //--- check and close sell orders which meet closing conditions. if(Sell_close()) tr.ClosePosAll(OP_SELL); //--- check and close buy orders which meet closing conditions. if(Buy_close()) tr.ClosePosAll(OP_BUY); } } //+------------------------------------------------------------------+ //| Function for determining the trend depth | //+------------------------------------------------------------------+ void depth_trend() { //--- determining buy index double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if(rsi>80.0) index_rsi=3; else if(rsi>70.0) index_rsi=2; else if(rsi>60.0) index_rsi=1; else if(rsi<10.0) index_rsi=-4; else if(rsi<20.0) index_rsi=-3; else if(rsi<30.0) index_rsi=-2; else if(rsi<40.0) index_rsi=-1; } //+------------------------------------------------------------------+ //| Function for determining the trend speed | //+------------------------------------------------------------------+ void speed_ac() { double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- buy signal if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- sell signal else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4; } //+------------------------------------------------------------------+ //| Function for checking buy conditions | //+------------------------------------------------------------------+ bool Buy() { bool res=false; if((index_rsi==2 && index_ac>=1) || (index_rsi==3 && index_ac==1)) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking sell conditions | //+------------------------------------------------------------------+ bool Sell() { bool res=false; if((index_rsi==-2 && index_ac<=-1) || (index_rsi==-3 && index_ac==-1)) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking buy position closing conditions | //+------------------------------------------------------------------+ bool Buy_close() { bool res=false; if(index_rsi>2 && index_ac<0) res=true; return (res); } //+------------------------------------------------------------------+ //| Function for checking sell position closing conditions | //+------------------------------------------------------------------+ bool Sell_close() { bool res=false; if(index_rsi<-2 && index_ac>0) res=true; return (res); }
Hemos llevado a cabo una pequeña optimización mediante sólo dos parámetros: tf (período de tiempo de trabajo) y period (período del indicador RSI).
Y hemos obtenido los siguientes resultados en M15:
Fig. 4 Resultados de la prueba del Asesor Experto con los datos del historial
Conclusión
Identificar el inicio y el final de una tendencia es una de las tareas más complicadas para los traders de todo el mundo, puesto que es imposible predecir el comportamiento del mercado.
Pero sí que se pueden determinar los momentos para entrar y salir en la tendencia actual y por consiguiente obtener beneficios importantes. Y la idea de determinar la velocidad del movimiento y hacer su seguimiento dinámico puede ser muy útil en este sentido.
Le deseo mucho éxito con sus operaciones.
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/1747






- 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