Acumular variable bb

Viewing 15 posts - 1 through 15 (of 23 total)
  • Author
    Posts
  • #234213 quote
    Patrickgarridoo
    Participant
    New

    Me gustaria saber como puedo crear un indicador que cuando ema3 cruce ema9 me acumule la variable de en que precio se encuentran las banda up y down en ese momento y se me dibuje en el grafico esos precio hasta que el ema3 vuelva a cruzarse con ema9. Un saludo

    #234217 quote
    robertogozzi
    Moderator
    Master

    ¿Puede estar bien?

    src = customclose
    Ema3 = average[3,1](src)
    Ema9 = average[9,1](src)
    ONCE Crossover = src
    IF (Ema3 CROSSES OVER Ema9) OR (Ema3 CROSSES UNDER Ema9) THEN
       Crossover = src
    ENDIF
    return Ema3 AS "Ema3" style(line,2) coloured("Red"),Ema9 as "Ema9" style(line,2) coloured("Blue"),Crossover AS "Crossover" style(line,4) coloured("fuchsia")
    #234273 quote
    Patrickgarridoo
    Participant
    New

    No, quiero que cuando ema3 cruce a ema9 me diga en que precio estan las bandas del bollinger y hasta que no vuelvan a crucar ema3 con ema9 se me quede guardado el precio de las bandas del bollinger de cuando hizo el cruce ema9 con ema9, tiene que ser como un contado

    #234281 quote
    robertogozzi
    Moderator
    Master

    Hecho:

    src  = customclose
    Ema3 = average[3,1](src)
    Ema9 = average[9,1](src)
    bUP  = BollingerUp[20](src)
    bDN  = BollingerDOWN[20](src)
    ONCE UpperPrice = src
    ONCE LowerPrice = src
    IF (Ema3 CROSSES OVER Ema9) OR (Ema3 CROSSES UNDER Ema9) THEN
       UpperPrice = bUP
       LowerPrice = bDN
    ENDIF
    return UpperPrice AS "UpperBB" style(DottedLine,2) coloured("Fuchsia"),LowerPrice AS "LowerBB" style(DottedLine,2) coloured("Fuchsia"),Ema3 AS "Ema3" style(line,1) coloured("Red"),Ema9 as "Ema9" style(line,1) coloured("Blue")
    #234304 quote
    Patrickgarridoo
    Participant
    New

    Estoy intentando hacerlo con el PE  y las bbup y bbdown cuando el precio deje de ser igual al PE me diga en que precios estaban las bandas hasta que el precio vuelva a estar igual al pe y sea cero adjunto para ver si me puedes ayudar. Un saludo

    #234311 quote
    robertogozzi
    Moderator
    Master

    No entiendo qué es exactamente lo que quieres acumular y cómo.
    Hay dos bandas de Bollinger, superior e inferior, ¿quieres agregarlas?
    ¿Puede dar un ejemplo?

    #234320 quote
    Patrickgarridoo
    Participant
    New

    si claro, lo que quiero lograr con este indicador es que cuando el precio deje de ser igual al PE me diga en que precio estaban las bandas del bollinger en ese momento y se me quede ese numero hasta que el precio vuelva a ser igual al PE y ahi me ponga 0 y asi continuamente. Te adjunto una imagen y código para que lo entiendas mejor. En la imagen el precio dejo de ser igual al PE hace 5 velas y me dice el precio de las bandas hace 5 velas y se mantiene los numeros hasta que vuelva a ser el precio igual al PE.

    DEFPARAM DrawOnLastBarOnly = true
    
    // PUNTO EXTREMO AZUL
    psar = SAR[0.02, 0.02, 0.2]
    C1 = CLOSE > psar
    C2 = CLOSE < psar
    
    // Variables para controlar la tendencia
    IF C1 AND NOT C1[1] THEN
    CONTADOR = 1
    TENDENCIAANTERIOR = 1
    ELSIF C2 AND NOT C2[1] THEN
    CUENTA = 1
    TENDENCIAANTERIOR = -1
    ELSIF TENDENCIAANTERIOR = 1 THEN
    CONTADOR = CONTADOR[1] + 1
    ELSIF TENDENCIAANTERIOR = -1 THEN
    CUENTA = CUENTA[1] + 1
    ENDIF
    
    // Calcular el Punto Extremo (PE)
    IF C1 THEN
    IF CONTADOR > 1 THEN
    PE = HIGHEST[CONTADOR](HIGH)
    ELSE
    PE = HIGH
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    IF C2 THEN
    IF CUENTA > 1 THEN
    PE = LOWEST[CUENTA](LOW)
    ELSE
    PE = LOW
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    // Bandas de Bollinger
    ema20 = ExponentialAverage[20](close)
    dev = 2
    Bbup = ema20 + std[20](close) * dev
    Bbdown = ema20 - std[20](close) * dev
    
    // Variables para guardar los valores iniciales de las Bandas de Bollinger cuando CLOSE deja de estar en el PE
    once BollUpInitial = 0
    once BollDownInitial = 0
    initialized = 0  // Usaremos 1 para inicializado y 0 para no inicializado
    
    // Detectar el momento en que CLOSE deja de ser igual al PE y guardar los valores iniciales de las Bandas de Bollinger
    IF CLOSE <> PE THEN
    IF initialized = 0 THEN
    BollUpInitial = Bbup
    BollDownInitial = Bbdown
    initialized = 1
    DRAWTEXT("#BollUpInitial#", barindex, BollUpInitial) COLOURED(255, 0, 0)
    DRAWTEXT("#BollDownInitial#", barindex, BollDownInitial) COLOURED(0, 0, 255)
    ENDIF
    ENDIF
    
    // Reiniciar cuando CLOSE vuelva a ser igual al PE
    IF CLOSE = PE THEN
    initialized = 0
    ENDIF
    
    RETURN PE AS "PUNTO EXTREMO azul y verde" COLOURED("BLUE", 0)
    
    #234344 quote
    robertogozzi
    Moderator
    Master

    He visto el código y tu explicación, pero ¿qué quieres acumular y cuáles son ema3 y ema9 a los que te refieres en tu publicación inicial?

    #234347 quote
    Patrickgarridoo
    Participant
    New

    hola, ema3 y 3ma9 los he borrado, quiero con la explicacion que te he dado acumular la variable en el precio que esta bbup y bbdown cuando el precio deja de estar igual al PE y si es igual al PE que ponga 0. Un saludo

    #234381 quote
    robertogozzi
    Moderator
    Master

    ¿Acumular las dos bandas? ¿Cuánto tiempo? Si se acumulan indefinidamente, ¡se obtienen valores de miles de millones!
    Lo mejor es que dejes el indicador en paz por el momento y me expliques en detalle lo que quieres hacer.

    #234463 quote
    Patrickgarridoo
    Participant
    New

    creo que no me entiendes, empezamos de nuevo para que lo entiendas, el indicador tiene que hacer que cuando el precio sea igual al PE acumule 0 en la banda up y banda down y cuando el precio ya no sea igual al PE me diga en que precio estan en ese momento la banda up y banda down hasta que el precio vuelva a tocar el PE simplemente

    #234472 quote
    robertogozzi
    Moderator
    Master

    Lo edité como me pediste.
    Cuando CLOSE = PE restablece las dos variables

    • AcumularENCIMA
    • AcumularDEBAJO

    en caso contrario los acumula (y los imprime como se puede ver en las dos fotos adjuntas).

    //src = customclose
    //Ema3 = average[3,1](src)
    //Ema9 = average[9,1](src)
    //bUP  = BollingerUp[20](src)
    //bDN  = BollingerDOWN[20](src)
    //ONCE UpperPrice = src
    //ONCE LowerPrice = src
    //IF (Ema3 CROSSES OVER Ema9) OR (Ema3 CROSSES UNDER Ema9) THEN
    //UpperPrice = bUP
    //LowerPrice = bDN
    //ENDIF
    //return UpperPrice AS "UpperBB" style(DottedLine,2) coloured("Fuchsia"),LowerPrice AS "LowerBB" style(DottedLine,2) coloured("Fuchsia"),Ema3 AS "Ema3" style(line,1) coloured("Red"),Ema9 as "Ema9" style(line,1) coloured("Blue")
    DEFPARAM DrawOnLastBarOnly = true
    ONCE AcumularENCIMA = 0
    ONCE AcumularDEBAJO = 0
    // PUNTO EXTREMO AZUL
    psar = SAR[0.02, 0.02, 0.2]
    C1 = CLOSE > psar
    C2 = CLOSE < psar
    
    // Variables para controlar la tendencia
    IF C1 AND NOT C1[1] THEN
    CONTADOR = 1
    TENDENCIAANTERIOR = 1
    ELSIF C2 AND NOT C2[1] THEN
    CUENTA = 1
    TENDENCIAANTERIOR = -1
    ELSIF TENDENCIAANTERIOR = 1 THEN
    CONTADOR = CONTADOR[1] + 1
    ELSIF TENDENCIAANTERIOR = -1 THEN
    CUENTA = CUENTA[1] + 1
    ENDIF
    
    // Calcular el Punto Extremo (PE)
    IF C1 THEN
    IF CONTADOR > 1 THEN
    PE = HIGHEST[CONTADOR](HIGH)
    ELSE
    PE = HIGH
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    IF C2 THEN
    IF CUENTA > 1 THEN
    PE = LOWEST[CUENTA](LOW)
    ELSE
    PE = LOW
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    // Bandas de Bollinger
    ema20 = ExponentialAverage[20](close)
    dev = 2
    Bbup = ema20 + std[20](close) * dev
    Bbdown = ema20 - std[20](close) * dev
    
    // Variables para guardar los valores iniciales de las Bandas de Bollinger cuando CLOSE deja de estar en el PE
    once BollUpInitial = 0
    once BollDownInitial = 0
    initialized = 0  // Usaremos 1 para inicializado y 0 para no inicializado
    
    // Detectar el momento en que CLOSE deja de ser igual al PE y guardar los valores iniciales de las Bandas de Bollinger
    IF CLOSE <> PE THEN
    IF initialized = 0 THEN
    BollUpInitial = Bbup
    BollDownInitial = Bbdown
    initialized = 1
    DRAWTEXT("#BollUpInitial#", barindex, BollUpInitial) COLOURED(255, 0, 0)
    DRAWTEXT("#BollDownInitial#", barindex, BollDownInitial) COLOURED(0, 0, 255)
    ENDIF
    ENDIF
    
    // Reiniciar cuando CLOSE vuelva a ser igual al PE
    IF CLOSE = PE THEN
    initialized = 0
    AcumularENCIMA = 0
    AcumularDEBAJO = 0
    ELSE
    AcumularENCIMA = AcumularENCIMA + Bbup
    AcumularDEBAJO = AcumularDEBAJO + Bbdown
    drawtext("Upper BB #AcumularENCIMA#", barindex+3,BollUpInitial*1.002)
    drawtext("Lower BB #AcumularDEBAJO#",barindex+3,BollDownInitial*0.998)
    ENDIF
    
    RETURN PE AS "PUNTO EXTREMO azul y verde" COLOURED("BLUE", 0)
    #234682 quote
    Patrickgarridoo
    Participant
    New

    Lo he probado y el indicador esta mal ya que como te indico en la imagen, tendria que señalar el precio de las bandas de los circulos rojos ya que ha sido donde ha tocado el PE por ultima vez el precio y en cambio da un numero que no es nada. Un saludo

    #234690 quote
    robertogozzi
    Moderator
    Master

    Debido a que usó CLOSE en su código, debe ser el precio de cierre que toca las bandas.
    Simplemente reemplace Close con HIGH para la banda superior y LOW para la banda inferior.

    Ahi esta:

    DEFPARAM DrawOnLastBarOnly = true
    
    // PUNTO EXTREMO AZUL
    psar = SAR[0.02, 0.02, 0.2]
    C1 = CLOSE > psar
    C2 = CLOSE < psar
    
    // Variables para controlar la tendencia
    IF C1 AND NOT C1[1] THEN
    CONTADOR = 1
    TENDENCIAANTERIOR = 1
    ELSIF C2 AND NOT C2[1] THEN
    CUENTA = 1
    TENDENCIAANTERIOR = -1
    ELSIF TENDENCIAANTERIOR = 1 THEN
    CONTADOR = CONTADOR[1] + 1
    ELSIF TENDENCIAANTERIOR = -1 THEN
    CUENTA = CUENTA[1] + 1
    ENDIF
    
    // Calcular el Punto Extremo (PE)
    IF C1 THEN
    IF CONTADOR > 1 THEN
    PE = HIGHEST[CONTADOR](HIGH)
    ELSE
    PE = HIGH
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    IF C2 THEN
    IF CUENTA > 1 THEN
    PE = LOWEST[CUENTA](LOW)
    ELSE
    PE = LOW
    ENDIF
    DRAWSEGMENT(barindex + 510, PE, barindex[510], PE) COLOURED(0, 0, 255) STYLE(dottedline1, 3)
    DRAWTEXT("sar", barindex, PE, Dialog, Bold, 20) COLOURED(0, 0, 255)
    ENDIF
    
    // Bandas de Bollinger
    ema20 = ExponentialAverage[20](close)
    dev = 2
    Bbup = ema20 + std[20](close) * dev
    Bbdown = ema20 - std[20](close) * dev
    
    // Variables para guardar los valores iniciales de las Bandas de Bollinger cuando CLOSE deja de estar en el PE
    once BollUpInitial = 0
    once BollDownInitial = 0
    initialized = 0  // Usaremos 1 para inicializado y 0 para no inicializado
    
    // Detectar el momento en que CLOSE deja de ser igual al PE y guardar los valores iniciales de las Bandas de Bollinger
    //IF CLOSE <> PE THEN
    IF (high <> PE) AND (LOW <> PE) THEN
    IF initialized = 0 THEN
    BollUpInitial = Bbup
    BollDownInitial = Bbdown
    initialized = 1
    DRAWTEXT("#BollUpInitial#", barindex, BollUpInitial) COLOURED(255, 0, 0)
    DRAWTEXT("#BollDownInitial#", barindex, BollDownInitial) COLOURED(0, 0, 255)
    //drawarrowup(BarIndex,high*1.001) coloured("Cyan")
    ENDIF
    ENDIF
    
    // Reiniciar cuando CLOSE vuelva a ser igual al PE
    //IF CLOSE = PE THEN
    IF (high = PE) OR (high = PE) THEN
    initialized = 0
    ENDIF
    
    RETURN PE AS "PUNTO EXTREMO azul y verde" COLOURED("BLUE", 0)
    #235708 quote
    Patrickgarridoo
    Participant
    New

    Despues de probarlo, no funciona correctamente le explico el funcionamiento a ver si se puede realizar. Quiero que cuando el precio deje de hacer el maximo de la tendencia es decir ya no sea igual al PE (Punto Extremo) me dibuje una linea en la bbup y bbdown justamente en el precio que estan cuando el precio deja de ser igual al pe y se queden esas lineas en ese precio fijo hasta que el precio rebase la sar o el precio vuelva a ser igual al pe. Lo que resumidamente tiene que hacer es acumular la variable de las bandas del bollinger cuando el pe deje de ser igual al close y que haga esa condicion hasta que el precio rebase la sar o el precio vuelva a ser igual al pe Un saludo

Viewing 15 posts - 1 through 15 (of 23 total)
  • You must be logged in to reply to this topic.

Acumular variable bb


ProBuilder: Indicadores y Herramientas

New Reply
Author
Summary

This topic contains 22 replies,
has 4 voices, and was last updated by Patrickgarridoo
1 year, 4 months ago.

Topic Details
Forum: ProBuilder: Indicadores y Herramientas
Language: Spanish
Started: 06/22/2024
Status: Active
Attachments: 11 files
Logo Logo
Loading...