Buenas, me gustaria crear un indicador que cuando un ema3 cruce a un ema9 alcista me dibujaria de 0 un parabolica sar pero me la dibuje a partir de la parabolica sar actual en el cruce es decir que sea una sar que empiece el factor de aceleracion de 0. Un saludo
Quieres decir así?
Ema3 = average[3,1](close)
Ema9 = average[9,1](close)
pSAR1 = SAR[0.02,0.02,0.2]
pSAR2 = SAR[0.000000001,0.02,0.2] //no puede ser 0
ONCE mySAR = pSAR1
IF Ema3 CROSSES OVER Ema9 THEN
mySAR = pSAR2
ENDIF
RETURN mySAR AS "SAR" style(line,2),Ema3 AS "Ema3" style(line,2),Ema9 AS "Ema9" style(line,2)
Pero, ¿tiene que volver a la normalidad o tiene que permanecer así siempre?
Lo he estado probando y deberia ser asi pero que los puntos vaya sumando 0.02 cada maximo desde el cruce no que sigan en linea recta como adjunto en la imagen.
No entiendo muy bien lo que quieres, puedes dibujar el SAR estándar y el que te gustaría para entender la diferencia.
si claro, te explico mejor. En la imagen puedes ver que cuando se cruza ema 3 con ema9 me sale otra sar nueva pero el punto que empieza es en la sar donde ha echo el cruce y de ahi empieza una nueva sar a contar hasta que haya un cambio de tendencia o otro cruce de ema3 con ema9, creo que así esta mejor explicado. La sar negra es una nueva sar que ha salido por el cruce de ema3 con ema9 y su punto de inicio es la sar donde la vela ha echo el cruce y de ahi va sumando 0.02 cada nuevo maximo o minimo Un saludo
Espero haber entendido bien:
ONCE SARinit = 0.02
ONCE SARstep = 0.02
ONCE SARlimit = 0.2
Ema3 = average[3,1](close)
Ema9 = average[9,1](close)
IF BARINDEX < 2 THEN
parabolic = LOW
islong = 1
af = SARlimit
hp = HIGH
lp = LOW
ELSE
IF Ema3 CROSSES UNDER Ema9 THEN
af = SARlimit
ENDIF
IF islong THEN
parabolic = parabolic + af * (hp - parabolic)
parabolic = MIN(parabolic, LOW[1])
parabolic = MIN(parabolic, LOW[2])
ELSE
parabolic = parabolic + af * (lp - parabolic)
parabolic = MAX(parabolic, HIGH[1])
parabolic = MAX(parabolic, HIGH[2])
ENDIF
reverse = 0
IF islong THEN
IF LOW < parabolic THEN
islong = 0
reverse = 1
parabolic = hp
lp = LOW
af = SARinit
ENDIF
ELSE
IF HIGH > parabolic THEN
islong = 1
reverse = 1
parabolic = lp
hp = HIGH
af = SARinit
ENDIF
ENDIF
IF NOT reverse THEN
IF islong THEN
IF HIGH > hp THEN
hp = HIGH
af = af + SARstep
af = MIN (af,SARlimit)
ENDIF
ELSE
IF LOW < lp THEN
lp = LOW
af = af + SARstep
af = MIN (af,SARlimit)
ENDIF
ENDIF
ENDIF
ENDIF
Offset = parabolic - (average[100,0](range) / 3)
IF close <= parabolic THEN
Offset = parabolic + (average[100,0](range) / 3)
ENDIF
RETURN Parabolic AS "mySAR"
Funciona pero me gustaría que si hace un cruce y aparece las sar nuevas se borren todas las sar dibujadas anteriores que solo se queden las de la tendencia actual
Lamentablemente, los datos antiguos no se pueden eliminar.
Creo que si se puede hacer ya que yo lo hice con algún otro indicador. Quiero que cuando no me cumpla la condición: “IF NN > 0 and N > 0 and A1 < M1 and A2 < M2 THEN” se me borre todo y cuando se cumpla empiece a dibujarse hasta que ya no se cumpla o el precio rebase las sar. A1, M1, A2 Y M2 ya los tengo yo definidos en el codigo restante pero es en esa parte donde hay que mnodificar. Un saludo
ONCE SARinittt = 0.02
ONCE SARsteppp = 0.02
ONCE SARlimittt = 0.2
IF BARINDEX < 2 THEN
paraboliccc = LOW
islonggg = 1
afff = SARlimittt
hppp = HIGH
lppp = LOW
ELSE
IF NN > 0 and N > 0 and A1 < M1 and A2 < M2 THEN
afff = SARlimittt
ENDIF
IF islonggg THEN
paraboliccc = paraboliccc + afff * (hppp - paraboliccc)
paraboliccc = MIN(paraboliccc, LOW[1])
paraboliccc = MIN(paraboliccc, LOW[2])
ELSE
paraboliccc = paraboliccc + afff * (lppp - paraboliccc)
paraboliccc = MAX(paraboliccc, HIGH[1])
paraboliccc = MAX(paraboliccc, HIGH[2])
ENDIF
reverseee = 0
IF islonggg THEN
IF LOW < paraboliccc THEN
islonggg = 0
reverseee = 1
paraboliccc = hppp
lppp = LOW
afff = SARinittt
ENDIF
ELSE
IF HIGH > paraboliccc THEN
islonggg = 1
reverseee = 1
paraboliccc = lppp
hppp = HIGH
afff = SARinittt
ENDIF
ENDIF
IF NOT reverseee THEN
IF islonggg THEN
IF HIGH > hppp THEN
hppp = HIGH
afff = afff + SARsteppp
afff = MIN (afff,SARlimittt)
ENDIF
ELSE
IF LOW < lppp THEN
lppp = LOW
afff = afff + SARsteppp
afff = MIN (afff,SARlimittt)
ENDIF
ENDIF
ENDIF
ENDIF
Offsettt = paraboliccc - (average[100,0](range) / 3)
IF close <= paraboliccc THEN
Offsettt = paraboliccc + (average[100,0](range) / 3)
ENDIF
RETURN Paraboliccc AS "mySAR"
Esto no se puede hacer con los datos devueltos por RETURN.
Necesitas usar una matriz, pero es bastante complicado. Puedo intentar hacerlo, pero necesitaré tiempo.
Vale de acuerdo coméntame cuando tengas algo por favor ya que a mi me da error al desarrollarlo. Un saludo
Publica el archivo ITF, el que publicaste no tiene todas las variables.