Buenas:
Me podrían ayudar a reprogramar, pues tengo un fallo y no se me ejecuta, lo que deseaba es lo siguiente:
- Rotura de precio en la linea superior.
- La linea superior que tocase en tres puntos
- Y en la linea inferior que tocase 2 puntos, siendo el primero mayor o igual al segundo punto.
- Gracias.
| longitud = 50 |
|
| zigzagHigh = ZigZag[longitud](High) |
| zigzagLow = ZigZag[longitud](Low) |
|
| max1 = zigzagHigh[4] |
| max2 = zigzagHigh[2] |
| max3 = zigzagHigh[0] |
| min1 = zigzagLow[2] |
| min2 = zigzagLow[0] |
|
| tendenciaDesc = (max1 > max2) AND (max2 > max3) |
| baseApoyo = (min2 >= min1) |
| esCunaDesc = tendenciaDesc AND baseApoyo |
|
| pendienteSup = (max3 – max1) / 4.0 |
| pendienteInf = (min2 – min1) / 2.0 |
| lineaSup = max3 + pendienteSup * 2.0 |
| lineaInf = min2 + pendienteInf * 1.0 |
|
| rupturaAlcista = 0 |
| IF esCunaDesc THEN |
| rupturaAlcista = close > lineaSup |
| ENDIF |
|
| SCREENER[rupturaAlcista](close) |
Buenas. Revisando tu código veo que estás utilizando zigzag pero estás cogiendo la opción %.
zigzagHigh = ZigZag[longitud](high) // longitud es porcentaje
zigzagHigh = ZigZagpoint[longitud](high)// longitud son puntos
Ya de primeras no te saldría nada porque estás calculando un zigzag con variaciones de 50%.
Una cosa que yo personalmente hago siempre antes de crear un screener es programar un indicador para que visualmente me muestre las señales y lo que estoy buscando.
Otro error o posible error que veo en tu código, no sé si es lo que quieres, es que zigzagLow[0] y zigzagHigh[0] son realmente el minimo y el máximo de esta barra.
Si lo que buscas son los puntos pivote que se generan cuando tienes un zigzag entonces tendrás que calcular las coordenadas x,y del zigzag en el momento que hay un pivote. Esto se hace así:
longitud = 50
zigzagHigh = ZigZagpoint[longitud](high)
zigzagLow = ZigZagpoint[longitud](Low)
// Calcular x,y del pivote High
if zigzagHigh<zigzagHigh[1] and zigzagHigh[1]>zigzagHigh[2] then
ispivotHigh=1
max1=max2
max1idx=max2idx
max2=max3
max2idx=max3idx
max3=high[1]
max3idx=barindex[1]
drawpoint(max3idx,max3,2)coloured("blue")
endif
// Calcular x,y del pivote Low
if zigzagLow>zigzagLow[1] and zigzagLow[1]<zigzagLow[2] then
ispivotLow=1
min1=min2
min1idx=min2idx
min2=low[1]
min2idx=barindex[1]
drawpoint(min2idx,min2,2)coloured("red")
endif
return zigzagHigh coloured("blue"), zigzagLow coloured("red")
Ahora con esto ya podrías empezar a calcular las rectas de tendencia y mostrarlas cuando se cumplan las condiciones que buscas.