grafico de prueba

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #236269 quote
    MiguelAngelMartinez
    Participant
    New

    En este indicador quiero que cuente cuántas veces cada mySAR (mySar1, mySar2, mySar3) cruza el precio individualmente mientras están por debajo del precio todas a la vez o encima, y una vez que las tres están por encima del precio o por debajo pero todas en la misma orientación, El indicador tiene que contar si por ejemplo estan todas las mysar debajo del precio si mysar1 esta ahora por encima pone un 1 al lado y si la vuelve a coger le pone un 2 al lado tiene que contar cuantas veces coge cada una hasta que todas las coja a la vez es decir que de abajo que ha empezado del precio todas las mysar terminen arriba y ahí empezaría el contador de nuevo. Es para ver cuantas veces el precio rebasa las mysar antes de coger en la misma dirección las tres a la vez. Un saludo

    defparam drawonlastbaronly = true
    PRECIO= CLOSE
    TIMEFRAME(1mn)
    mySar1  = SAR[0.02,0.02,0.2]
    Precio1 = close
    
    
    TIMEFRAME(2mn)
    mySar2  = SAR[0.02,0.02,0.2]
    Precio2 = close
    
    
    TIMEFRAME(3mn)
    mySar3  = SAR[0.02,0.02,0.2]
    Precio3 = close
    
    TIMEFRAME(default)
    DrawText("1",BarIndex[60],mysar1,dialog,standard,17) COLOURED(0,0,0)
    DrawText("2",BarIndex[59],mysar2,dialog,standard,17) COLOURED(0,0,0)
    DrawText("3",BarIndex[58],mysar3,dialog,standard,17) COLOURED(0,0,0)
    DRAWHLINE(close)
    
    RETURN
    #236290 quote
    Iván González
    Moderator
    Master

    POdrías hacer algo así. Te pongo un ejemplo con uno de los SAR, el resto te lo dejo a ti:

    if precio1>mysar1 and precio2>mysar2 and precio3>mysar3 then
    dir=1
    elsif precio1<mysar1 and precio2<mysar2 and precio3<mysar3 then
    dir=-1
    endif
    
    if dir<>dir[1] then
    cont1=0
    cont2=0
    cont3=0
    endif
    
    if precio1 crosses over mysar1 and dir=1 then
    cont1=cont1+1
    elsif precio1 crosses under mysar1 and dir=-1 then
    cont1=cont1+1
    else
    cont1=cont1
    endif
    #236378 quote
    MiguelAngelMartinez
    Participant
    New

    Lo he creado asi y creo que esta bien pero quiero que los contadores aguanten la variable de las veces que haya rebasado el preciocada una de las mysar, hasta que todas estén por encima o por debajo del precio es decir eo las tres por encima o las tres por debajo y ahi se reinicia los contadores. Un saludo

    defparam drawonlastbaronly = true
    PRECIO = CLOSE
    
    TIMEFRAME(1mn)
    mySar1 = SAR[0.02, 0.02, 0.2]
    Precio1 = close
    TIMEFRAME(2mn)
    mySar2 = SAR[0.02, 0.02, 0.2]
    Precio2 = close
    TIMEFRAME(3mn)
    mySar3 = SAR[0.02, 0.02, 0.2]
    Precio3 = close
    
    TIMEFRAME(default)
    dir = 0
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    
    if Precio1 > mySar1 and Precio2 > mySar2 and Precio3 > mySar3 then
    dir = 1
    elsif Precio1 < mySar1 and Precio2 < mySar2 and Precio3 < mySar3 then
    dir = -1
    endif
    
    if dir <> dir[1] then
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
    
    // Contadores para cada cruce
    if Precio1 crosses over mySar1 then
    Contador1 = Contador1 + 1
    elsif Precio1 crosses under mySar1 then
    Contador1 = Contador1 + 1
    endif
    
    if Precio2 crosses over mySar2 then
    Contador2 = Contador2 + 1
    elsif Precio2 crosses under mySar2 then
    Contador2 = Contador2 + 1
    endif
    
    if Precio3 crosses over mySar3 then
    Contador3 = Contador3 + 1
    elsif Precio3 crosses under mySar3 then
    Contador3 = Contador3 + 1
    endif
    
    Offset1 = mysar1  - (average[100,0](range) / 1)
    IF close <= mysar1 THEN
    Offset1 = mysar1  + (average[100,0](range) / 1)
    endif
    
    Offset2 = mysar2  - (average[100,0](range) / 1)
    IF close <= mysar2 THEN
    Offset2 = mysar2  + (average[100,0](range) / 1)
    endif
    
    Offset3 = mysar3  - (average[100,0](range) / 1)
    IF close <= mysar3 THEN
    Offset3 = mysar3  + (average[100,0](range) / 1)
    endif
    
    
    
    // Dibujar los contadores y los SAR en el gráfico
    DrawText("1", BarIndex[60], mySar1, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText("2", BarIndex[59], mySar2, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText("3", BarIndex[58], mySar3, dialog, bold, 12) COLOURED(0, 0, 0)
    
    DrawText(Contador1, BarIndex[60], Offset1, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText(Contador2, BarIndex[59], Offset2, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText(Contador3, BarIndex[58], Offset3, dialog, bold, 12) COLOURED(0, 0, 0)
    
    
    DRAWHLINE(close)
    
    RETURN
    #236399 quote
    Iván González
    Moderator
    Master

    entiendo que con las líneas 15 a 18 querías poner delante “once” (once dir = 0). De lo contrario en cada vela se reinician los contadores

    #236411 quote
    MiguelAngelMartinez
    Participant
    New

    Ya he creado el codigo y funciona bien pero cuando va a terminar el contador y dejar todas en 0 por ejemplo esta mysar1 arriba del precio y mysar2 tambien y el precio deja mysar3 arriba deja todas en 0 menos mysar3 que se queda con un 1 unos segundos o minutos hasta que se pone 0 no se a que se debe esto ya que se deberia poner automaticamente en 0 los tres contadores. Un saludo

    defparam drawonlastbaronly = true
    PRECIO = CLOSE
     
    TIMEFRAME(1mn)
    mySar1 = SAR[0.02, 0.02, 0.2]
    Precio1 = close
    TIMEFRAME(2mn)
    mySar2 = SAR[0.02, 0.02, 0.2]
    Precio2 = close
    TIMEFRAME(3mn)
    mySar3 = SAR[0.02, 0.02, 0.2]
    Precio3 = close
     
    TIMEFRAME(default)
    once dir = 0
    once Contador1 = 0
    once Contador2 = 0
    once Contador3 = 0
     
    if Precio1 > mySar1 and Precio2 > mySar2 and Precio3 > mySar3 then
    dir = 1
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    elsif Precio1 < mySar1 and Precio2 < mySar2 and Precio3 < mySar3 then
    dir = -1
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
     
    if dir <> dir[1] then
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
     
    // Contadores para cada cruce
    if Precio1 crosses over mySar1 then
    Contador1 = Contador1 + 1
    elsif Precio1 crosses under mySar1 then
    Contador1 = Contador1 + 1
    endif
     
    if Precio2 crosses over mySar2 then
    Contador2 = Contador2 + 1
    elsif Precio2 crosses under mySar2 then
    Contador2 = Contador2 + 1
    endif
     
    if Precio3 crosses over mySar3 then
    Contador3 = Contador3 + 1
    elsif Precio3 crosses under mySar3 then
    Contador3 = Contador3 + 1
    endif
     
    Offset1 = mysar1  - (average[100,0](range) / 1)
    IF close <= mysar1 THEN
    Offset1 = mysar1  + (average[100,0](range) / 1)
    endif
     
    Offset2 = mysar2  - (average[100,0](range) / 1)
    IF close <= mysar2 THEN
    Offset2 = mysar2  + (average[100,0](range) / 1)
    endif
     
    Offset3 = mysar3  - (average[100,0](range) / 1)
    IF close <= mysar3 THEN
    Offset3 = mysar3  + (average[100,0](range) / 1)
    endif
     
     
     
    // Dibujar los contadores y los SAR en el gráfico
    DrawText("1", BarIndex[60], mySar1, dialog, standard, 17) COLOURED(0, 0, 0)
    DrawText("2", BarIndex[59], mySar2, dialog, standard, 17) COLOURED(0, 0, 0)
    DrawText("3", BarIndex[58], mySar3, dialog, standard, 17) COLOURED(0, 0, 0)
     
    DrawText(Contador1, BarIndex[60], Offset1, dialog, bold, 12) COLOURED(0, 0, 255)
    DrawText(Contador2, BarIndex[59], Offset2, dialog, bold, 12) COLOURED(0, 0, 255)
    DrawText(Contador3, BarIndex[58], Offset3, dialog, bold, 12) COLOURED(0, 0, 255)
     
     
    DRAWHLINE(close)
     
    RETURN
    #236542 quote
    MiguelAngelMartinez
    Participant
    New

    Alguien me puede ayudar con este error. Un saludo

    #236560 quote
    robertogozzi
    Moderator
    Master

    No sé si interpreté correctamente tu solicitud, prueba esta versión:

    defparam drawonlastbaronly = true
    PRECIO = CLOSE
     
    TIMEFRAME(1mn)
    mySar1 = SAR[0.02, 0.02, 0.2]
    Precio1 = close
    TIMEFRAME(2mn)
    mySar2 = SAR[0.02, 0.02, 0.2]
    Precio2 = close
    TIMEFRAME(3mn)
    mySar3 = SAR[0.02, 0.02, 0.2]
    Precio3 = close
     
    TIMEFRAME(default)
    once dir = 0
    once Contador1 = 0
    once Contador2 = 0
    once Contador3 = 0
    
    dir = 0
    if Precio1 > mySar1 and Precio2 > mySar2 and Precio3 > mySar3 then
    dir = 1
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    elsif Precio1 < mySar1 and Precio2 < mySar2 and Precio3 < mySar3 then
    dir = -1
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
     
    if dir <> dir[1] then
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
    
    if dir <> dir[1] THEN
    // Contadores para cada cruce
    if Precio1 crosses over mySar1 then
    Contador1 = Contador1 + 1
    elsif Precio1 crosses under mySar1 then
    Contador1 = Contador1 + 1
    endif
     
    if Precio2 crosses over mySar2 then
    Contador2 = Contador2 + 1
    elsif Precio2 crosses under mySar2 then
    Contador2 = Contador2 + 1
    endif
     
    if Precio3 crosses over mySar3 then
    Contador3 = Contador3 + 1
    elsif Precio3 crosses under mySar3 then
    Contador3 = Contador3 + 1
    endif
     endif
    Offset1 = mysar1  - (average[100,0](range) / 1)
    IF close <= mysar1 THEN
    Offset1 = mysar1  + (average[100,0](range) / 1)
    endif
     
    Offset2 = mysar2  - (average[100,0](range) / 1)
    IF close <= mysar2 THEN
    Offset2 = mysar2  + (average[100,0](range) / 1)
    endif
     
    Offset3 = mysar3  - (average[100,0](range) / 1)
    IF close <= mysar3 THEN
    Offset3 = mysar3  + (average[100,0](range) / 1)
    endif
     
     
    // Dibujar los contadores y los SAR en el gráfico
    DrawText("1", BarIndex[60], mySar1, dialog, standard, 17) COLOURED(0, 0, 0)
    DrawText("2", BarIndex[59], mySar2, dialog, standard, 17) COLOURED(0, 0, 0)
    DrawText("3", BarIndex[58], mySar3, dialog, standard, 17) COLOURED(0, 0, 0)
     
    DrawText(Contador1, BarIndex[60], Offset1, dialog, bold, 12) COLOURED(0, 0, 255)
    DrawText(Contador2, BarIndex[59], Offset2, dialog, bold, 12) COLOURED(0, 0, 255)
    DrawText(Contador3, BarIndex[58], Offset3, dialog, bold, 12) COLOURED(0, 0, 255)
     
     
    DRAWHLINE(close)
     
    RETURN
    #236778 quote
    MiguelAngelMartinez
    Participant
    New

    Lo he probado pero cuando esta contando el contador y ya coloca todas las sar por encima o debajo del precio deberia poner en todas el contador en 0 y no lo hace hasta que pasa un rato de tiempo no se por que, ya que debería ser inmediato. Un saludo

    #236821 quote
    robertogozzi
    Moderator
    Master

    Lo siento, pero tenemos que esperar Iván , no entiendo muy bien qué quieres cambiar.

    #236849 quote
    Iván González
    Moderator
    Master

    Buenas!
    Prueba esto a ver si te vale:

    PRECIO = CLOSE
    
    TIMEFRAME(1mn)
    mySar1 = SAR[0.02, 0.02, 0.2]
    Precio1 = close
    TIMEFRAME(2mn)
    mySar2 = SAR[0.02, 0.02, 0.2]
    Precio2 = close
    TIMEFRAME(3mn)
    mySar3 = SAR[0.02, 0.02, 0.2]
    Precio3 = close
    
    TIMEFRAME(default)
    once dir = 0
    once Contador1 = 0
    once Contador2 = 0
    once Contador3 = 0
    
    if Precio1 > mySar1 and Precio2 > mySar2 and Precio3 > mySar3 then
    dir = 1
    elsif Precio1 < mySar1 and Precio2 < mySar2 and Precio3 < mySar3 then
    dir = -1
    endif
    
    if dir <> dir[1] then
    DrawText("1: #contador1#", BarIndex, max(mySar1,max(mySar2,max(high,mySar3)))+0.75*tr, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText("2: #contador2#", BarIndex, max(mySar1,max(mySar2,max(high,mySar3)))+0.5*tr, dialog, bold, 12) COLOURED(0, 0, 0)
    DrawText("3: #contador3#", BarIndex, max(mySar1,max(mySar2,max(high,mySar3)))+0.25*tr, dialog, bold, 12) COLOURED(0, 0, 0)
    Contador1 = 0
    Contador2 = 0
    Contador3 = 0
    endif
    
    // Contadores para cada cruce
    if Precio1 crosses over mySar1 then
    Contador1 = Contador1 + 1
    elsif Precio1 crosses under mySar1 then
    Contador1 = Contador1 + 1
    endif
    
    if Precio2 crosses over mySar2 then
    Contador2 = Contador2 + 1
    elsif Precio2 crosses under mySar2 then
    Contador2 = Contador2 + 1
    endif
    
    if Precio3 crosses over mySar3 then
    Contador3 = Contador3 + 1
    elsif Precio3 crosses under mySar3 then
    Contador3 = Contador3 + 1
    endif
    
    if dir=1 then
    backgroundcolor("green",100)
    elsif dir=-1 then
    backgroundcolor("red",100)
    endif
    
    RETURN mySar1 coloured("red"), mySar2 coloured("blue"), mySar3 coloured("fuchsia"), close
Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

grafico de prueba


ProBuilder: Indicadores y Herramientas

New Reply
Summary

This topic contains 9 replies,
has 3 voices, and was last updated by Iván González
1 year, 5 months ago.

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