Utilizando los trabajos del colega Gestur (Josep Hervás), descubrió que el indicador manipulación era totalmente compatible con el estraperlo chivato.
Uniendo ambos códigos, eliminando algunos elementos del estraperlo chivato, la creación tomó imagen...
La criatura vive !!... |
El aspecto del indicador era intimidante...
Las señales que se producían eran interesantes. El manipulación en la parte central daba información sobre la compra o venta de las manos fuertes (color azul) y las manos débiles (color verde) ,así mismo la linea manipulación (color marron claro) al cruzarse por encima o por debajo de la linea cero, nos daba señales de compra o venta , que podrían ser cotejadas con la curva del estraperlo , así como la aparición de las barras chivatas...
Sin la autorización de Josep , pero con todo el respeto y reconocimiento por su labor , os pongo a vuestra disposición esta mezcla surgida de la mente de un pobre loco investigador de indicadores.
El código para la plataforma Prorealtime !totalmente gratis! ,es :
----------------------------------------------------------------------------------------------------
REM MANIPULACIÓN ESTRAPERLO
rem manipulación
rem Indicador que trata de diferenciar que parte del volumen de negociación
rem corresponde a manos débiles y a manos fuertes.
rem Creado por gestur
rem Variables que controlan el rango adaptativo del area azul y verde.
once divazul=1
once divverde=1
nvol=80
adapt=2
zoomazul=5
zoomverde=5
rem Periodo 1 y 2 de las medias moviles que se encargan de detectar cambios de direccion.
n1=50
n2=3
n3=6
m1 = Average[n1](close)
m2 = Average[n2](close)
m3 = Average[n3](close)
volm = average[nvol](volume)
diferencia1 = Average[2](m2) - Average[2](m1)
diferencia2 = Average[2](m3) - Average[2](m1)
mani1 = (m2 - m1 - diferencia1) / 2
mani2 = m3 - m1 - diferencia2
mani =mani1 + mani2
diferencia = diferencia1
volp = volume / volm
if volp = 0 then
volp = 1
volm = 1
endif
a = (diferencia / open) * volp
b = (close - m1) / close
c = (open - close[1]) / close[1]
d = (close - open) / close
rem Calculamos las franjas azul y verdes en funcion de los dos supuestos y los adaptamos al rango dinamico.
azul = (mani + ((d-c) * volp)) * volp - a
verde = b * volp
if volp <> 0 then
if averde[1] > 1 or averde[1] < -1 then
divverde = divverde * (1 + adapt / 50)
else
divverde = divverde / (1 + adapt / 600)
endif
if aazul[1] > 1 or aazul[1] < -1 then
divazul = divazul * (1 + adapt / 50)
else
divazul = divazul / (1 + adapt / 600)
endif
averde = verde / divverde * zoomverde
aazul = azul / divazul * zoomazul
endif
if averde > 8 then
averde = 8
endif
if averde < -8 then
averde = -8
endif
if aazul > 8 then
aazul = 8
endif
if aazul <-8 then
aazul = -8
endif
rem Ajustamos el indice de manipulacion para que se mantenga en un rango razonable.
amani=mani/(highest[nvol](mani)-lowest[nvol](mani))*2
rem estraperlo chivato
valor1=ExponentialAverage[12](close)
valor2=ExponentialAverage[26](close)
valor3=valor1/valor2
valor4=ExponentialAverage[9](valor3)
mimacd=valor3/valor4-1
val1=Exponentialaverage[5](close)
val2=ExponentialAverage[13](close)
mmacd=val1/val2-1
gd2=average[60](mmacd)
sd=1*STD[60](mmacd)
bollsup=gd2+sd
bollinf=gd2-sd
IF BARINDEX > 1 THEN
IF ZigZag[zz](Close)[2] < ZigZag[zz](Close)[1] AND ZigZag[zz](Close)[1] > ZigZag[zz](Close) THEN
Top = Close[1]
DiMD = mimacd[1]
IF Top <> Top[1] THEN
TwoPrevTop = PrevTop
PrevTop = Top[1]
Top = Top
TwoPrevDiMD = PrevDiMD
PrevDiMD = DiMD[1]
DiMD = DiMD
ENDIF
ENDIF
IF ZigZag[zz](Close)[2] > ZigZag[zz](Close)[1] AND ZigZag[zz](Close)[1] < ZigZag[zz](Close) THEN
Bottom = Close[1]
DiMDb = mimacd[1]
IF Bottom <> Bottom[1] THEN
TwoPrevBottom = PrevBottom
PrevBottom = Bottom[1]
Bottom = Bottom
TwoPrevDiMDb = PrevDiMDb
PrevDiMDb = DiMDb[1]
DiMDb = DiMDb
ENDIF
ENDIF
ENDIF
IF ((Top >= PrevTop AND DiMD CROSSES UNDER PrevDiMD) OR (Top CROSSES OVER PrevTop AND DiMD <= PrevDiMD)) OR ((Top >= TwoPrevTop AND DiMD CROSSES UNDER TwoPrevDiMD) OR (Top CROSSES OVER TwoPrevTop AND DiMD <= TwoPrevDiMD)) THEN
DivergeBottom =-1.8
ELSIF ((Top <= PrevTop AND DiMD CROSSES OVER PrevDiMD) OR (Top CROSSES UNDER PrevTop AND DiMD >= PrevDiMD)) OR ((Top <= TwoPrevTop AND DiMD CROSSES OVER TwoPrevDiMD) OR (Top CROSSES UNDER TwoPrevTop AND DiMD >= TwoPrevDiMD)) THEN
DivergeBottom = -1.8
ELSE
DivergeBottom = 0
ENDIF
IF ((Bottom >= PrevBottom AND DiMDb CROSSES UNDER PrevDiMDb) OR (Bottom CROSSES OVER PrevBottom AND DiMDb <= PrevDiMDb)) OR ((Bottom >= TwoPrevBottom AND DiMDb CROSSES UNDER TwoPrevDiMDb) OR (Bottom CROSSES OVER TwoPrevBottom AND DiMDb <= TwoPrevDiMDb)) THEN
DivergeTop = 1.8
ELSIF ((Bottom <= PrevBottom AND DiMDb CROSSES OVER PrevDiMDb) OR (Bottom CROSSES UNDER PrevBottom AND DiMDb >= PrevDiMDb)) OR ((Bottom <= TwoPrevBottom AND DiMDb CROSSES OVER TwoPrevDiMDb) OR (Bottom CROSSES UNDER TwoPrevBottom AND DiMDb >= TwoPrevDiMDb)) THEN
DivergeTop = 1.8
ELSE
DivergeTop = 0
ENDIF
return DivergeTop COLOURED (0,150,50) as "chivatoalcista",DivergeBottom COLOURED (200,0,0) as "chivatobajista",0 COLOURED (0,0,0) as "cero", aazul COLOURED(0,255,255) as "azul", averde COLOURED(102,255,102) as "verde", aazul COLOURED (0,51,255) as "lazul", averde COLOURED (0,153,51) as "lverde", amani COLOURED (153,102,0) as "mani",mmacd*100 as "LM",bollsup*100 as "BSUP",bollinf*100 as "BINF"
------------------------------------------------------------------------------------------------------------
En cuadro de variables:
zz = 3