Sería posible hacer el Screener del primer indicador de máximos
Este es el mismo código colocado en un indicador, que imprime un segmento entre los dos valores:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
DEFPARAM DrawOnLastBarOnly = true
Period = 50
Maximo1 = 0
Maximo2 = 0
FOR i = (Period – 1) DOWNTO 0
IF Maximo1 = 0 THEN
Maximo1 = high[i]
Maximo2 = high[i]
Bar1 = BarIndex[i]
Bar2 = BarIndex[i]
ENDIF
IF high[i] < high[i+1] THEN
IF high[i+1] > Maximo1 THEN
Bar2 = Bar1
Maximo2 = Maximo1
Maximo1 = high[i+1]
Bar1 = BarIndex[i+1]
ELSIF high[i+1] > Maximo2 THEN
Maximo2 = high[i+1]
Bar2 = BarIndex[i+1]
ENDIF
ENDIF
IF i = 0 THEN
IF high[i] > Maximo1 THEN
Bar2 = Bar1
Maximo2 = Maximo1
Maximo1 = high[i]
Bar1 = BarIndex[i]
ELSIF high[i] > Maximo2 THEN
Maximo2 = high[i]
Bar2 = BarIndex[i]
ENDIF
ENDIF
NEXT
DrawSegment(Bar1,Maximo1,Bar2,Maximo2) style(line,5) coloured(“Fuchsia”)
RETURN
|
¿Qué condiciones quieres?
Roberto:
Como ya había comentado anteriormente no tengo la menor idea de programación, no obstante observo que en estos indicadores comentados por Vd. en este hilo “Screener para buscar un máximo tras inversión de tendencia” se ajustan a lo que podríamos llamar techos y suelos.
Y lo que observo al principio del segmento, se tiene que cumplir
1.- El Precio se sale de la Banda Bollinger inferior (o superior).
2.- Si tengo un indicador Bollinger %B el indicador es en ese momento inferior a 0 (o superior a 100).
3.- Una vez trazado el segmento , el precio baja y suele producirse una divergencia y el precio puede ir al extremo (o dentro) de la Banda de Bollinger inferior, por supuesto el indicador ya alcanza cuotas más altas.
4.- También sigo las roturas de las líneas de tendencia con Breakouts en el indicador RSI o Bollinguer%B .
No sé si con todo lo que explique anteriormente se podría hacer algo al respecto.
Gracias por su colaboración.
Tu escribiste:
- – El Precio se sale de la Banda Bollinger inferior (o superior).
- – Si tengo un indicador Bollinger %B el indicador es en ese momento inferior a 0 (o superior a 100).
- – Una vez trazado el segmento , el precio baja y suele producirse una divergencia y el precio puede ir al extremo (o dentro) de la Banda de Bollinger inferior, por supuesto el indicador ya alcanza cuotas más altas.
- – También sigo las roturas de las líneas de tendencia con Breakouts en el indicador RSI o Bollinguer%B .
pero no puedo entender cuándo deben ocurrir estas condiciones, con respecto a la vela actual.
Roberto, espero que comprenda lo que quiero.
Gracias,
Voy a intentar retomar el tema, si es posible.
Lo que quiero es un SCREENER del indicador que pongo a continuación, cuando se cumpla la siguiente condición:
- Cuando el precio se encuentre encima de la Media Exponencial 55 (EMA55).
| 1 |
DEFPARAM DrawOnLastBarOnly = true |
| 2 |
Period= 50 |
| 3 |
Maximo1 = 0 |
| 4 |
Maximo2 = 0 |
| 5 |
FOR i = (Period – 1) DOWNTO 0 |
| 6 |
IF Maximo1 = 0 THEN |
| 7 |
Maximo1 = high[i] |
| 8 |
Maximo2 = high[i] |
| 9 |
Bar1= BarIndex[i] |
| 10 |
Bar2= BarIndex[i] |
| 11 |
ENDIF |
| 12 |
IF high[i] < high[i+1] THEN |
| 13 |
IF high[i+1] > Maximo1 THEN |
| 14 |
Bar2= Bar1 |
| 15 |
Maximo2 = Maximo1 |
| 16 |
Maximo1 = high[i+1] |
| 17 |
Bar1= BarIndex[i+1] |
| 18 |
ELSIF high[i+1] > Maximo2 THEN |
| 19 |
Maximo2 = high[i+1] |
| 20 |
Bar2= BarIndex[i+1] |
| 21 |
ENDIF |
| 22 |
ENDIF |
| 23 |
IF i = 0 THEN |
| 24 |
IF high[i] > Maximo1 THEN |
| 25 |
Bar2= Bar1 |
| 26 |
Maximo2 = Maximo1 |
| 27 |
Maximo1 = high[i] |
| 28 |
Bar1 = BarIndex[i] |
| 29 |
ELSIF high[i] > Maximo2 THEN |
| 30 |
Maximo2 = high[i] |
| 31 |
Bar2 = BarIndex[i] |
| 32 |
ENDIF |
| 33 |
ENDIF |
| 34 |
NEXT |
| 35 |
DrawSegment(Bar1,Maximo1,Bar2,Maximo2) style(line,5) coloured(“Fuchsia”) |
| 36 |
RETURN |
Prueba esto:
//DEFPARAM DrawOnLastBarOnly = true
Period= 50
Maximo1 = 0
Maximo2 = 0
FOR i = (Period - 1) DOWNTO 0
IF Maximo1 = 0 THEN
Maximo1 = high[i]
Maximo2 = high[i]
Bar1= BarIndex[i]
Bar2= BarIndex[i]
ENDIF
IF high[i] < high[i+1] THEN
IF high[i+1] > Maximo1 THEN
Bar2= Bar1
Maximo2 = Maximo1
Maximo1 = high[i+1]
Bar1= BarIndex[i+1]
ELSIF high[i+1] > Maximo2 THEN
Maximo2 = high[i+1]
Bar2= BarIndex[i+1]
ENDIF
ENDIF
IF i = 0 THEN
IF high[i] > Maximo1 THEN
Bar2= Bar1
Maximo2 = Maximo1
Maximo1 = high[i]
Bar1 = BarIndex[i]
ELSIF high[i] > Maximo2 THEN
Maximo2 = high[i]
Bar2 = BarIndex[i]
ENDIF
ENDIF
NEXT
//DrawSegment(Bar1,Maximo1,Bar2,Maximo2) style(line,5) coloured("Fuchsia")
Signal = 0
IF (Bar1 <> Bar1[1]) OR (Bar2 <> Bar2[1]) THEN
IF close > Average[55,1](close) THEN
Signal = 1
ENDIF
ENDIF
SCREENER[Signal]
Roberto
Se adapta perfectamente a lo que pretendía, muchas gracias por el mismo.