Evidenziare condizioni sul grafico

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #109961 quote
    DavideSbarra
    Participant
    Average

    Buonasera,

    mi servirebbe un aiuto per riportare su grafico un’idea al verificarsi di una condizione.

    Mi spiego meglio:

    1. Sulla candela in cui si verifica la mia condizione mi serve far apparire una linea orizzontale che parta dal massimo della candela e vada avanti per 40 candele successive (figura 1)
    2. Se nell’arco di queste 40 candele successive a quella iniziale il prezzo “chiude” (quindi in chiusura candela) sopra tale linea mi deve apparire un rettangolo che andra ad avanzare col prezzo e che abbia dimensione di 100 pip sopra e 100 pip sotto dal livello della chiusura della candela che ha chiuso sopra la linea. Il rettangolo deve avanzare col prezzo e fermarsi quando il prezzo tocca i 100 pip sopra o i 100 pip sotto (figura 2)

    Grazie anticipatamente

    1-2.png 1-2.png 2.png 2.png
    #109987 quote
    robertogozzi
    Moderator
    Master

    Questo è il codice, nella foto allegata ho dovuto mettere parametri diversi (50 barre e soli 20 pips sopra/sotto la rottura) per ottenere una linea ed un rettangolo da mostrare:

    DEFPARAM DrawOnLastBarOnly   = true
    //
    // inizializzazione delle variabili
    //
    IF BarIndex = 0 THEN
       Pips       = 100 * pipsize          //100 pips oltre/sotto la chiusura
       MaxBarre   = 40                     //40  barre di durate della linea dal segnale
       Media      = 0
       Conto      = 0
       Barra      = 0
       InizioRett = 0
       FineRett   = 0
       PrezzoMax  = 0
       PrezzoMin  = 0
    ENDIF
    //
    // se il conto è iniziato, incrementarlo di 1 e verificare che non abbia superato il massimo,
    // nel qual caso si riparte dall'inizio azzerando tutto
    //
    IF Conto > 0 THEN
       Conto = Conto + 1
       IF Conto > MaxBarre THEN
          Media      = 0
          Conto      = 0
          Barra      = 0
          InizioRett = 0
          FineRett   = 0
          PrezzoMax  = 0
          PrezzoMin  = 0
       ENDIF
    ENDIF
    //
    // questa è la condizione di partenza
    //
    Media = average[10,0](close) CROSSES OVER average[20,0](close)
    //
    // Se la condizione si è verificata iniziare il conto delle barre e salvare i parametri
    // (barra e massimo dove la condizione si è verificata)
    //
    IF Media THEN
       Conto      = 1
       Barra      = BarIndex
       Prezzo     = high
       InizioRett = 0
       FineRett   = 0
       PrezzoMax  = 0
       PrezzoMin  = 0
    ENDIF
    //
    // se il conteggio è già in corso verificare se occorre iniziare a visualizzare il
    // rettangolo alla rottura della linea
    //
    IF Conto > 0 THEN
       IF close > Prezzo AND InizioRett = 0 THEN
          InizioRett = BarIndex
          FineRett   = 0
          PrezzoMax  = close + Pips
          PrezzoMin  = close - Pips
       ENDIF
    ENDIF
    //
    // se la visualizzazione del rettangolo è già iniziata, verificare quando deve fermarsi
    //
    IF InizioRett > 0 THEN
       IF close >= PrezzoMax OR close <= PrezzoMin THEN
          IF FineRett = 0 THEN
             FineRett = BarIndex
          ENDIF
       ENDIF
    ENDIF
    //
    // visualizzazione sul grafico del segmento e del rettangolo, se il conteggio è attivo
    //
    IF Conto > 0 THEN
       // la linea NON deve superare la fine del rettangolo
       y = min(Barra + (MaxBarre - 1),BarIndex)
       IF FineRett > 0 THEN
          y = FineRett
       ENDIF
       DRAWSEGMENT(Barra,Prezzo,y,Prezzo) COLOURED(0,128,0,255)
       // il rettangolo NON deve superare il limite di quanto i prezzi sono usciti
       IF InizioRett > 0 THEN
          x = BarIndex
          IF FineRett > 0 THEN
             x = FineRett
          ENDIF
          DRAWRECTANGLE(InizioRett,PrezzoMax,x,PrezzoMin) COLOURED(255,0,0,255)
       ENDIF
    ENDIF
    RETURN

    Il colore della linea si può cambiare a piacimento, ma non è possibile cambiarne lo spessore e lo stile (solo i dati restituiti con RETURN possono essere personalizzati tramite le proprietà dell’indicatore).

    Il colore dell’interno del rettangolo non può essere cambiato, mentre si può cambiare il colore del bordo. Per rendere il bordo invisibile basta mettere 0 al posto di 255 nel quarto ed ultimo parametro di COLOURED alla riga 87.

    x-9.jpg x-9.jpg
    #110015 quote
    DavideSbarra
    Participant
    Average

    mille grazie,

    gentilissimo.

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

Evidenziare condizioni sul grafico


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by DavideSbarra
6 years, 5 months ago.

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