COLORE INDICATORE CONDIZIONATO

Viewing 15 posts - 1 through 15 (of 18 total)
  • Author
    Posts
  • #227287 quote
    PaFM
    Participant
    New

    Buonasera (Buongiorno),

    mi stavo chiedendo se fosse possibile colorare le bande di bollinger di verde o di rosso, alternativamente, in modo condizionato, in modo simile a quanto avviene già (visivamente) per l’indicatore supertrend, ma senza nascondere del tutto la banda che è stata violata dai prezzi; ovvero, va colorata di un verde acceso la banda inferiore quando i prezzi superano in chiusura la banda superiore (a 1 deviazione standard) che a questo punto va colorata di un verde più tenue e tratteggiato medio; tutto ciò deve rimanere così fino a quando non si inverte totalmente la tendenza e i prezzi vanno a chiudere sotto la banda inferiore (a 1 deviazione standard) e a tal punto la banda superiore si deve colorare di un rosso acceso mentre quella inferiore di un rosso più tenue tratteggiato medio, fino a quando i prezzi non vanno a chiudere di nuovo sopra la banda superiore di bollinger e così via … la media centrale (a 12 periodi) deve rimanere sempre invisibile …

    Grazie mille in anticipo per il prezioso aiuto che mi vorrete dare

    P

    XXXXXXXXXXXXXXXXX

    #227303 quote
    robertogozzi
    Moderator
    Master

    Per favore non inserire informazioni personali nei post (email, telefonoi, indirizzo ecc…).

    Grazie 🙂

    Quanto prima te lo farò.

    #227348 quote
    PaFM
    Participant
    New

    Grazie mille in anticipo, per quanto riguarda i colori non è necessario che i due verdi e i due rossi delle due bande siano diversi tra loro, basta che uno sia tratteggiato medio (quello della banda violata dai prezzi) e l’altro linea continua, grazie.

    P

    #227591 quote
    robertogozzi
    Moderator
    Master

    La tratteggiatura non è possibile variarla di volta in volta, meglio usare colori più accesi o più tenui.

    Per difetto quando il prezzo è all’interno delle bande il colore l’ho fatto celeste (cyan). Qui c’è l’elenco dei colori, in questo caso devi utilizzare quello numerico nel formato RGB (Red, Green,Blue)  e T (Trasparenza) che può andare da 0 a 255, dove 0=invisibile https://www.prorealcode.com/documentation/coloured/.

    BBper    = 20                                              //20   periodi BB
    BBdev    = 1.0                                             //1.0  deviazione BB
    // VERDE default
    Rs       = 0
    Gs       = 191
    Bs       = 255
    Ts       = 255
    //
    Ri       = 0
    Gi       = 191
    Bi       = 255
    Ti       = 255
    //
    BBavg    = average[BBper,0](close)                         //BB linea Mediana
    BandaSup = BBavg + ((std[BBper](close)) * BBdev)           //BB banda Superiore
    BandaInf = BBavg - ((std[BBper](close)) * BBdev)           //BB banda Inferiore
    //
    IF close > BandaSup THEN
       Ri       = 173   //VERDE acceso
       Gi       = 255
       Bi       = 47
       Ti       = 255
       //
       Rs       = 46    //VERDE tenue
       Gs       = 139
       Bs       = 87
       Ts       = 100
    ENDIF
    IF close < BandaInf THEN
       Rs       = 255   //ROSSO acceso
       Gs       = 0
       Bs       = 0
       Ts       = 255
       //
       Ri       = 178   //ROSSO tenue
       Gi       = 34
       Bi       = 34
       Ti       = 100
    ENDIF
    return BandaSup AS "Banda Superiore" style(line,3) coloured(Rs,Gs,Bs,Ts),BandaInf AS "Banda Inferiore" style(line,3) coloured(Ri,Gi,Bi,Ti)
    PaFM thanked this post
    #227697 quote
    PaFM
    Participant
    New

    Grazie mille Roberto del cortese e veloce riscontro, domani lo testo e ti faccio sapere
    Cordialmente
    P

    #227900 quote
    PaFM
    Participant
    New

    Ho testato il tuo lavoro Roberto, mi dispiace dirlo ma è lontano anni luce da quello che desideravo.
    A me serviva, come ti avevo scritto, un indicatore simile al supertrend ma applicato alle logiche delle bollinger bands, ovvero con la deviazione standard come base di calcolo. Ho passato delle notti intere a guardare bene nella library e alla fine dopo estenuanti ricerche ho trovato qualcosa di molto simile a quello che desideravo io; ho studiato un po’ il prorealcode e mi sono messo a modificarlo e alla fine il risultato è arrivato, ho il mio indicatore perfettamente funzionante …
    Per chi fosse interessato si tratta di un indicatore di tendenza basato su una meda mobile semplice a 13 periodi con una sola bollinger a 1 deviazione std che funge alternativamente da supporto o resistenza, inserisco qui sotto il codice. Ovviamente da una marea di falsi segnali (come il supertrend) ma se si usa in modalità multitime-frame e avendo l’accortezza di lavorare solo sui pullback funziona benissimo, sia per il medio e lungo termine, sia per il day trading sia per lo scalping!!!
    Un saluto cordiale al forum
    P

    // --- settings
    SignalPeriod = 13
    ArrowPeriod = 1
    // --- end of settings
    
    bbup = average[signalperiod]+std[signalperiod]*arrowperiod
    bbdn = average[signalperiod]-std[signalperiod]*arrowperiod
    signal = average[signalperiod]
    
    
    if ts=0 and signalpos=0 then
    if close crosses over bbup then
    ts=bbdn
    signalpos=signal
    trend=1
    elsif close crosses under bbdn then
    ts=bbup
    signalneg=signal
    trend=-1
    
    endif
    endif
    
    if trend=1 then
    // ts=max(ts,bbdn)
    ts=bbdn
    signalpos=signal
    
    elsif trend=-1 then
    // ts=min(ts,bbup)
    ts=bbup
    signalneg=signal
    endif
    
    
    if trend=1 and close crosses under ts then
    trend=-1
    signalneg=signal
    ts=bbup
    r=255
    g=0
    drawarrowdown(barindex,ts) coloured("red")
    // drawsegment(startbar,startts,barindex,ts) style(dottedline2) coloured("blue")
    startbar=barindex
    startts=ts
    endif
    
    if trend=-1 and close crosses over ts then
    trend=1
    signalpos=signal
    ts=bbdn
    r=0
    g=255
    drawarrowup(barindex,ts) coloured("lime")
    // drawsegment(startbar,startts,barindex,ts) style(dottedline2) coloured("blue")
    startbar=barindex
    startts=ts
    endif
    
    return ts coloured(r,g,50) style(line,1), signal coloured (r,g,50) style(dottedline,1)
    
    #228321 quote
    PaFM
    Participant
    New

    Ciao,
    mi chiedevo se fosse possibile a determinate condizioni assegnare al trend valori diversi da 1 o -1 in modo da creare un indicatore vero e proprio (separato dal grafico) in modo da associarvi un allarme.
    In parole povere, con un trend positivo (=1), se il prezzo fa un minimo sotto il ts (che è la bollinger down) ma chiude sopra il ts stesso (quindi non cambia il trend) ed inoltre chiude sopra la chiusura della barra precedente (in real time tick by tick), allora il trend assumerebbe un valore 2 invece che 1 e verrebbe anche disegnata un freccia verde sul grafico principale, similmente a quando cambia il trend in positivo. La situazione speculare sarebbe quella in caso di trend negativo (=-1), con una candela successiva che fa un massimo sopra il ts (che è la bollinger up), chiusura sotto il ts stesso e chiusura sotto la chiusura della barra precedente (in real time tick by tick); in tal caso il trend assumerebbe un valore pari a -2 invece che -1 e verrebbe anche disegnata un freccia rossa sul grafico principale.
    Ho provato a mettere giù qualche riga di codice aggiuntivo ma non cambia più il trend correttamente come prima da verde a rosso e viceversa … non so come risolvere, mi riuscite ad aiutare per favore?
    Grazie mille in anticipo

    Cordialmente
    P

    if trend=1 and close[1]>ts and low<ts and close>ts and close>close[1] then
    trend=2
    signalpos=signal
    ts=bbdn
    r=0
    g=255
    drawarrowup(barindex,ts) coloured("lime")
    startbar=barindex
    startts=ts
    endif
    
    if trend=-1 and close[1]<ts and high>ts and close<ts and close<close[1] then
    trend=-2
    signalneg=signal
    ts=bbup
    r=255
    g=0
    drawarrowdown(barindex,ts) coloured("red")
    startbar=barindex
    startts=ts
    endif
    #228322 quote
    PaFM
    Participant
    New

    In pratica quando avviene un setup come quello visibile nell’immagine con test e tenuta del ts (bollinger down, linea verde continua) allora il trend assumerebbe un valore pari a 2 e si disegnerebbe una freccia verde alla base della candela. In aggiunta dovrebbe visualizzarsi in finestra separata il valore del ts che passa da 1 a 2.
    Grazie dell’attenzione

    Cordialmente
    P

    ts.jpg ts.jpg
    #228519 quote
    robertogozzi
    Moderator
    Master

    Puoi aggiungere queste righe proprio prima dell’ultima (quella con RETURN):

    //----------------------------------------------------------------
    IF Trend = 1 THEN
       if low < ts and close > ts and close > close[1] then
          Trend = 2
          drawarrowup(barindex,ts) coloured("lime")
       endif
    ELSIF Trend = -1 THEN
       if high > ts and close < ts and close < close[1] then
          Trend = -2
          drawarrowdown(barindex,ts) coloured("red")
       endif
    ENDIF
    //----------------------------------------------------------------

    però non funziona correttamente, perché una volta che gli viene assegnato 2 o -2, il resto del codice non riconosce questi valori (quindi va variata laprima parte del codice), inoltre quand’è che 2 e -2 devono ritornare a 1 e -1?

    #228789 quote
    PaFM
    Participant
    New

    Grazie del feedback Roberto,
    effettivamente ho inserito il codice e da lo stresso problema di quello che avevo provato ad inserire io, ovvero non cambia più il trend da positivo a negativo e viceversa. In pratica, con questa variante che vorrei introdurre, il trend passerebbe da +1 a +2 per poi tornare direttamente a -1 (in caso di inversione) senza poter più passare da +1. Viceversa, con il passaggio da -1 a -2 il trend tornerebbe poi direttamente a +1 senza poter passare da -1. Forse va inserito nella parte iniziale del codice >0 o <0 invece che =1 o =-1 ?

    #228860 quote
    robertogozzi
    Moderator
    Master

    Puoi postare l’ultimo codice funzionante che hai provato (anche se non fa esattamente quello che vuoi), perché altrimenti tra i vari aggiornamenti parziali non so quale provare.

    #228911 quote
    PaFM
    Participant
    New

    Certo Roberto, qui sotto trovi il codice funzionante con trend che passa da 1 a -1 e viceversa ….. a proposito, un problema che da questo codice, ma non del tutto importante, è che al primo trend che passa da 0 a 1 oppure a -1 non si colora niente, anzi si creano delle tracciature molto scure sulla bollinger che si dovrebbe colorare che coprono tutto ….

    // --- settings
    SignalPeriod = 13
    ArrowPeriod = 1
    // --- end of settings
    
    bbup = average[signalperiod]+std[signalperiod]*arrowperiod
    bbdn = average[signalperiod]-std[signalperiod]*arrowperiod
    signal = average[signalperiod]
    
    
    if ts=0 and signalpos=0 then
    if close crosses over bbup then
    ts=bbdn
    signalpos=signal
    trend=1
    elsif close crosses under bbdn then
    ts=bbup
    signalneg=signal
    trend=-1
    
    endif
    endif
    
    if trend=1 then
    // ts=max(ts,bbdn)
    ts=bbdn
    signalpos=signal
    
    elsif trend=-1 then
    // ts=min(ts,bbup)
    ts=bbup
    signalneg=signal
    endif
    
    
    if trend=1 and close crosses under ts then
    trend=-1
    signalneg=signal
    ts=bbup
    r=255
    g=0
    drawarrowdown(barindex,ts) coloured("red")
    // drawsegment(startbar,startts,barindex,ts) style(dottedline2) coloured("blue")
    startbar=barindex
    startts=ts
    endif
    
    if trend=-1 and close crosses over ts then
    trend=1
    signalpos=signal
    ts=bbdn
    r=0
    g=255
    drawarrowup(barindex,ts) coloured("lime")
    // drawsegment(startbar,startts,barindex,ts) style(dottedline2) coloured("blue")
    startbar=barindex
    startts=ts
    endif
    
    return ts coloured(r,g,50) style(line,1), signal coloured (r,g,50) style(dottedline,1)
    #229228 quote
    druby
    Participant
    New

    FM, è questo quello che stai cercando per quanto riguarda le bande di colore.

    Se necessario, è possibile nascondere la riga ‘ts’ dalla finestra di configurazione.

    Rimuovi anche tutte le zone di colore predefinite che interferiscono con i colori della banda, una può essere impostata automaticamente.

    Inoltre, in origine hai citato un periodo di 12, ma il codice è stato modificato in 13.

    Potresti spiegare come stai utilizzando i segnali rispetto alla direzione del trading e ai punti di ingresso, stop e target proposti.

    druby.

     

    // Ref:
    // Bollinger Bands --> https://www.britannica.com/money/bollinger-bands-indicator
    // https://www.prorealcode.com/topic/colore-indicatore-condizionato/
    
    // constants
    period = 13
    deviation = 1
    up = 1
    down = -1
    begin = 1
    null = 0
    
    // (i) indicators
    iSTD = deviation * STD[period](close)
    iSMA = Average[period,0](close)
    
    // (c) conditions
    cUpperBand  = iSMA + iSTD
    cMiddleBand = iSMA
    cLowerBand  = iSMA - iSTD
    
    // delay start
    if begin = 1 and barindex < period then  // hold off till enough bar present
    ts = undefined  // removes ts tangent line from 0 til real value available
    else
    begin = 0
    endif
    
    // logic operation
    
    // setup block --> When 'begin' = 0,  executes next block.
    //                  Since 'trend' default = 0, being set to 1 or -1 will
    //                  allow the 'following' logic code blocks to be executed
    
    // Bollinger Logic -----------
    
    // initial, set trend
    if begin = null then
    if close crosses over cUpperband then
    trend = up
    elsif close crosses under cLowerBand then
    trend = down
    endif
    endif
    
    // following from first time after trend set!
    // change of trend,   up --> down
    if trend = up and close crosses under cLowerBand then
    trend = down
    endif
    
    // change of trend,   down --> up
    if trend = down and close crosses over cUpperBand then
    trend = up
    endif
    
    // set 'ts' values to appropriate band threshold level
    if trend = up then
    ts = cLowerBand
    elsif trend = down then
    ts = cUpperBand
    endif
    
    // drawing  ==============================================================================
    
    os = 5  // drawing offset
    
    // arrow and set colors
    if trend = down and trend[1] = up then
    drawarrowdown(barindex,ts+os) coloured("red",255)
     
    elsif trend = up and trend[1] = down then
    drawarrowup(barindex,ts-os) coloured("lime",255)
     
    endif
    
    // color settings
    if trend = down then
    r = 255
    g = 0
     
    a1 = 90 // upperBand red
    a2 = 60 // lowerBand red
    a3 = 0
    a4 = 0
    elsif trend = up then
    r = 0
    g = 255
    
    a1 = 0
    a2 = 0
    a3 = 50 // upperBand green
    a4 = 90 // bottomBand green
    endif
    
    // band colors
    colorbetween(cMiddleBand,cUpperBand, r,g,0,a1)  // upperBand red - trend down
    colorbetween(cMiddleBand,cLowerBand, r,g,0,a2)  // lowerBand red - trend down
    
    colorbetween(cMiddleBand,cUpperBand, r,g,0,a3)  // upperBand green - trend up
    colorbetween(cMiddleBand,cLowerBand, r,g,0,a4)  // lowerBand green - trend up
    
    return ts coloured(r,g,50) style(line,1) as "ts", cMiddleBand coloured(r,g,50) style(dottedline,1)as "signal"
    
    robertogozzi and PaFM thanked this post
    fm1-colors.png fm1-colors.png
    #229292 quote
    PaFM
    Participant
    New

    Druby,
    grazie della colorazione che gli hai dato, è interessante e da un buon colpo d’occhio, ed hai anche ovviato al problema che mi dava in precedenza, lavoro molto bello, complimenti!
    Quest’indicatore io lo utilizzo su molteplici timeframe contemporaneamente, in modo da monitorare tutti i possibili trend presenti su un indice oppure su un titolo: il funzionamento è molto simile al supertrend: dopo un cambio di trend, prima di effettuare l’entrata a mercato, attendo però un ritorno dei prezzi o sulla media tratteggiata o sulla bollinger opposta; in caso di tenuta di uno dei due di questi indicatori di trend, entro a mercato solo quando il prezzo supera il massimo della candela precedente (in caso di long), o quando il prezzo scende sotto il minimo della candela precedente (in caso di short).
    Sarebbe molto bello se si riuscisse a migliorare ulteriormente l’indicatore dando un valore di +2 0 -2 al verificarsi della suddetta situazione di pullback e ripartenza del trend, avendo magari un indicatore separato con alert collegato.
    Un saluto, complimenti ancora per il lavoro!

    PaFM

    #229359 quote
    PaFM
    Participant
    New

    Chiedo aiuto, ho voluto aggiungere la colorazione anche alla 2° e 3° deviazione standard, ma credo di aver fatto confusione … vorrei che si colorassero di verde progressivo le 4 fasce rialziste quando il trend è up, e in rosso progressivo le quattro fasce ribassiste quando il trend è down, ma le colorazioni al cambio di trend proseguono e non si alternano correttamente

    // constants
    period = 13
    deviation1 = 1
    deviation2 = 2
    deviation3 = 3
    up = 1
    down = -1
    begin = 1
    null = 0
     
    // (i) indicators
    iSTD1 = deviation1 * STD[period](close)
    iSTD2 = deviation2 * STD[period](close)
    iSTD3 = deviation3 * STD[period](close)
    iSMA = Average[period,0](close)
     
    // (c) conditions
    cUpperBand1  = iSMA + iSTD1
    cUpperBand2  = iSMA + iSTD2
    cUpperBand3  = iSMA + iSTD3
    cMiddleBand = iSMA
    cLowerBand1  = iSMA - iSTD1
    cLowerBand2  = iSMA - iSTD2
    cLowerBand3  = iSMA - iSTD3
     
    // delay start
    if begin = 1 and barindex < period then  // hold off till enough bar present
    ts = undefined  // removes ts tangent line from 0 til real value available
    else
    begin = 0
    endif
     
    // logic operation
     
    // setup block --> When 'begin' = 0,  executes next block.
    //                  Since 'trend' default = 0, being set to 1 or -1 will
    //                  allow the 'following' logic code blocks to be executed
     
    // Bollinger Logic -----------
     
    // initial, set trend
    if begin = null then
    if close crosses over cUpperband1 then
    trend = up
    elsif close crosses under cLowerBand1 then
    trend = down
    endif
    endif
     
    // following from first time after trend set!
    // change of trend,   up --> down
    if trend = up and close crosses under cLowerBand1 then
    trend = down
    endif
     
    // change of trend,   down --> up
    if trend = down and close crosses over cUpperBand1 then
    trend = up
    endif
     
    // set 'ts' values to appropriate band threshold level
    if trend = up then
    ts = cLowerBand1
    elsif trend = down then
    ts = cUpperBand1
    endif
     
    // drawing  ==============================================================================
     
    // color settings
    if trend = down then
    r = 255
    g = 0
    
    colorbetween(cMiddleBand,cUpperBand1, r,g,0,30)
    colorbetween(cMiddleBand,cLowerBand1, r,g,0,50)
    colorbetween(cLowerBand1,cLowerBand2, r,g,0,70)
    colorbetween(cLowerBand2,cLowerBand3, r,g,0,90)
    colorbetween(cUpperBand1,cUpperBand2, 0,0,0,00)
    colorbetween(cUpperBand2,cUpperBand3, 0,0,0,00)
    
    
    elsif trend = up then
    r = 0
    g = 255
    
    colorbetween(cMiddleBand,cUpperBand1, r,g,0,50)
    colorbetween(cMiddleBand,cLowerBand1, r,g,0,30)
    colorbetween(cUpperBand1,cUpperBand2, r,g,0,70)
    colorbetween(cUpperBand2,cUpperBand3, r,g,0,90)
    colorbetween(cLowerBand1,cLowerBand2, 0,0,0,00)
    colorbetween(cLowerBand2,cLowerBand3, 0,0,0,00)
    
    
    endif
     
    // band colors
    
     
    
    return ts coloured(r,g,50) style(line,1) as "dev", cMiddleBand coloured(r,g,50) style(dottedline,1)as "sma"
    
Viewing 15 posts - 1 through 15 (of 18 total)
  • You must be logged in to reply to this topic.

COLORE INDICATORE CONDIZIONATO


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
PaFM @pafm Participant
Summary

This topic contains 17 replies,
has 3 voices, and was last updated by PaFM
2 years ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 02/02/2024
Status: Active
Attachments: 3 files
Logo Logo
Loading...