Buenos días!
El gráfico de debajo lo dice todo. Seguimos 100% laterales y no tiene pinta de resolverse pronto. Por arriba hay dos resistencias: el nivel actual (2060) y el nivel 2090. Por debajo hay dos soportes aunque están muy juntos. Podríamos decir que es la banda 1960-1970. Mientras el mercado no se salga por arriba o por abajo no hay mucho que hacer. Paciencia… Hoy vamos a dedicar el informe a analizar la forma de operar divergencias. Va a estar interesante.
Entre la batería de indicadores que utilizamos para detectar peligro o dirección en los mercados tenemos:
- La tendencia medida por las medias
- Los nuevos mínimos del NYSE
- La volatilidad
- La línea AD y en especial sus divergencias
Si se fija todo es 100% objetivo menos las divergencias con la línea Ascenso-Descenso. Esto requiere interpretación. En el informe de hoy pretende eliminar la subjetividad de las divergencias. Para ello hay que buscar un criterio de comparación. Puesto que la línea AD es continua, llena de oscilaciones, y no limitada, es necesario aplicarle un oscilador para que podamos reducirla en un rango y ver dónde tiene picos más altos (div. alcista) y valles más bajos (div. bajista) que por supuesto hay que comparar con el precio. Por eso voy a aplicar un RSI a la línea AD. El resultado es lo que ve-mos debajo en rojo:
Como se puede ver en la imagen la línea AD, que antes valía 0.6 ahora toma valores comprendidos entre +100 y 0. Así, en el momento actual toma el valor de 40 y también vemos que ha estado oscilando entre +80 y 10. Pero esto no es suficiente porque seguimos teniendo una línea continua, que tiene miles de oscilaciones, y aunque para el ojo humano esto no es un problema pues para un ordenador sí, hay que dejar solo “picos y valles” para que se pueda comparar. Lo que hacemos ahora es insertar la función ZIG de Amibroker que solo considera cambios de sentido si hay una variación porcentual que supere un umbral (p.e. el 10%). Así, solo nos quedan los giros que sobrepasan este umbral del 10%. Es lo que vemos debajo:
En verde tenemos la línea AD original y ahora en azul tenemos un ZIG de la línea roja que veíamos en la página segunda de este informe. La línea azul resultante es algo que ya podemos utilizar para comparar por picos y valles. Ahora hay que hacer una rutina que vaya pico por pico y valle por valle mirando si el precio estaba en divergencia. Ya sabe:
- Divergencia alcista: Oscilador con los mínimos más altos y el precio tiene los mínimos más bajos.
- Divergencia bajista: Oscilador con los máximos más bajos y el precio tiene los máximos más altos.
En Amibroker hay que saber manejar los bucles para ir pico por pico comparando.
La rutina es simétrica para los valles, y al final del informe me la voy a anexar completa. Ahora vamos al gráfico para ver que realmente funciona. Empezando por la izquierda vemos una divergencia alcista. El oscilador (la línea AD modificada) está repuntando al alza haciendo dos valles más altos. El precio está haciendo dos valles más bajos. Luego tenemos una divergencia bajista. El oscilador acaba de marcar un pico más bajo. El precio sigue marcando picos más altos. Se trata de una divergencia bajista. El código pone un punto verde o rojo donde detecta una divergencia.
Aunque no tiene sentido simular esto voy a mostrarle los resultados de simular esta lógica y luego le explico por qué afirmo que no tiene sentido simularlo. Si simulamos con el SP500, un futuro mini, desde el año 2000 hasta ayer, y con comisiones de $100 por operación, tenemos:
Que son excelentes. Fíjese que la lógica acierta un 76% de las veces y que tenemos un profit factor de 3.75. La ganancia promedio por operación es de casi 2700 dólares. Sin embargo no podemos considerar como válidos estos resultados porque la función ZIG del Amibroker necesita un cambio porcentual mayor de un umbral para confirmar la nueva dirección. Supongamos que ese umbral es un 10%. Hasta tener un cambio de sentido del 10% no daremos por válido un pico o un valle. Sin embargo en la página anterior se puede ver bien que cada pico o valle es mostrado en el momento en el que ocurre. Esto es porque la función ZIG “mira al futuro” y pone un pico o un valle donde unos días después se confirmará. Es decir, mira las barras siguientes para saber si hubo un cambio del 10% y entonces pone un pico o un valle.
Programar esto sin “mirar al futuro” es algo que dejaremos para otro informe. De momento nos conformamos con tener una herramienta objetiva para saber si hay o no hay divergencias entre la línea AD y el Precio. Y también tenemos la posibilidad de esperar (me refiero a tiempo real, no en simulación) hasta ese cambio porcentual y entonces consolidaremos esa señal. Hasta mañana en el vídeo!
ANEXO: CÓDIGO DE DIVERGENCIAS
//-------------------------------------------------------
// Formula Name: RSI divergence
// Author: Rajandran R
// Url: www.marketcalls.in
// Adapted to Advanced-Declined Line by Oscar G. Cagigas
// february 11th 1015
//-------------------------------------------------------
//MULTIPLICADORES//
PointValue = 50; PositionSize = MarginDeposit =1;
//COMISIONES//
SetOption("PriceBoundChecking",1);
SetOption("CommissionMode", 2);
SetOption("commissionamount",50); //COMISIÓN INDIVIDUAL (ENTRADA O SALIDA)
//LINEA AD//
ind1=Foreign("IIAA.Z","C");
ind2=Foreign("IIAD.Z","C");
ind = MA(ind1-ind2,20);
GraphXSpace=7;
//PARAMETROS OPTIMIZABLES//
n=Optimize("ZIG",17,5,50,1);
per = Optimize("per",11,1,20,1);
Buy=Sell=0;
Var = Zig(RSIa(ind,per), n);
t= Trough(RSIa(ind,per), n, 1);
p= Peak(RSIa(ind,per), n, 1);
x[0] =Var[0]; price[0] = C[0];
j=0;
// bearish divergence
for ( i=0; i<BarCount; i++)
{
if(Var[i] == p[i])
{
j++;
x[j] =Var[i];
price[j] =C[i]
; if(x[j] <x[j-1] && price[j-1]< price[j])
Sell[i] =1;
}
}
// bullish divergence
for ( i=0; i<BarCount; i++)
{
if(Var[i] == t[i])
{
j++;
x[j] =Var[i];
price[j] =C[i];
if(x[j] >x[j-1] && price[j]<price[j-1])
Buy[i] =1;
}
}
Short=Sell;
Cover=Buy;
Plot(Var, "", 39);
PlotShapes ( IIf(Sell, shapeSmallCircle, shapeNone), colorRed, 0 , Var,0);
PlotShapes( IIf(Buy, shapeSmallCircle, shapeNone), colorBrightGreen, 0, Var,0);
Title ="RSI Divergence" ;