Tracciare linea in automatico

Viewing 3 posts - 16 through 18 (of 18 total)
  • Author
    Posts
  • #202872 quote
    robertogozzi
    Moderator
    Master

    Ha tracciato la linea rossa, come hai fatto tu, alla barra delle ore 08:30 (Foto1).

    Alle 10:00 ha rotto il minimo giornaliero ed ha tracciato anche la linea celeste (Foto2).

    Ha continuato ad aggiornare la linea celeste fino alle 18:30 (Foto3).

    Alle 19:00 ha rotto il minimo del giorno precedente ed ha tracciato una nuova linea rossa. la linea celeste non si vede perché si sovrappone alla rossa (Foto4).

    Alle 19:35 ha smesso di stampare la linea rossa, ma ha continuato a stampare quella celeste del minimo giornaliero, facendola partire dal nuovo minimo dove la rossa si è fermata (Foto5).

    La linea celeste ha proseguito fino a fine giornata (Foto6).

    Dopo avere tracciato la Linea 1 che tu hai indicato sulla tua foto, cosa deve fare quando il minimo giornaliero viene superato? Deve stampare la Linea2 facendola partire dal punto dove è terminata la linea 1? Poi continua aggiornarla, ma quando supera il minimo del giorno precedente deve smettere di stamparla celeste ed iniziare a stamparla in rosso (se si, deve continuare a stampare anche la linea 1 del massimo?). A quel punto non deve più stampare la linea celeste in quanto il nuovo minimo giornaliero non viene più rotto?

    Edisone thanked this post
    Foto1.jpg Foto1.jpg Foto2.jpg Foto2.jpg Foto3.jpg Foto3.jpg Foto4.jpg Foto4.jpg Foto5.jpg Foto5.jpg Foto6.jpg Foto6.jpg
    #202880 quote
    Edisone
    Participant
    Average

    Grazie Roberto per l’aiuto e la pasienza,

    1) Dopo avere tracciato la Linea 1 che tu hai indicato sulla tua foto, cosa deve fare quando il minimo giornaliero viene superato? Deve stampare la Linea2 facendola partire dal punto dove è terminata la linea 1? SI

    2) Poi continua aggiornarla, ma quando supera il minimo del giorno precedente deve smettere di stamparla celeste ed iniziare a stamparla in rosso: NO la linea rossa disegnata prima non viene più modificata ma continua invece ad aggiornare la line a celeste sul nuovo minimo, MA se poi se risale termina di disegnare la line celeste ed inizia ad disegnare una nuova linea di colore ad esempio Verde facendola partire dal punto dove è terminata la liane celeste che si aggiorna ad ogni nuovo massimo relativo. Allego una foto.

    Appunti01.jpg Appunti01.jpg
    #203205 quote
    robertogozzi
    Moderator
    Master

    L’ho riscritto per mettere in ordine tutte le barre (è meglio se scarichi il file ITF):

    DEFPARAM DrawOnLastBarOnly = True
    ONCE HH         = 0
    ONCE LL         = 0
    ONCE HHprec     = 0
    ONCE LLprec     = 0
    ONCE RotturaHH  = 0
    ONCE RotturaLL  = 0
    ONCE RotturaMAX = 0
    ONCE RotturaMIN = 0
    ONCE FineHH     = 0
    ONCE FineLL     = 0
    ONCE FineMAX    = 0
    ONCE FineMIN    = 0
    ONCE BarraHH    = 0
    ONCE BarraLL    = 0
    ONCE BarraMAX   = 0
    ONCE BarraMIN   = 0
    //
    IF BarIndex <= BarraFine THEN
    // verifica ad inizio nuovo giorno
    IF (OpenTime = 000000) OR (OpenTime < OpenTime[1]) THEN
    HHprec     = HH
    LLprec     = LL
    HH         = high
    LL         = low
    BarraInizio= BarIndex
    Apertura   = open
    RotturaHH  = 0
    RotturaLL  = 0
    RotturaMAX = 0
    RotturaMIN = 0
    FineHH     = 0
    FineLL     = 0
    FineMAX    = 0
    FineMIN    = 0
    BarraHH    = 0
    BarraLL    = 0
    BarraMAX   = 0
    BarraMIN   = 0
    IF HH > HHprec THEN
    RotturaHH = 1
    BarraHH   = BarraInizio
    PrezzoHH  = high
    FineHH    = BarIndex
    ENDIF
    IF LL < LLprec THEN
    RotturaLL = 1
    BarraLL   = BarraInizio
    PrezzoLL  = low
    FineLL    = BarIndex
    ENDIF
    ENDIF
    // aggiornare i Massimi/Minimi delm giorno corrente
    HH = max(HH,high)
    LL = min(LL,low)
    // Verificare se c'è stata una rottura dei Massimi/Minimi del Giorno Precedente
    IF (HH > HHprec) AND (RotturaHH = 0) THEN
    RotturaHH = 1
    RotturaMAX= 0
    PrezzoHH  = high
    FineHH    = BarIndex
    ELSIF (LL < LLprec) AND (RotturaLL = 0) THEN
    RotturaLL = 1
    RotturaMIN= 0
    PrezzoLL  = low
    FineLL    = BarIndex
    ENDIF
    // Verificare se i Massimi/Minimi correnti sono stati superati (purché ci sia stata la rottura opposta sui
    // Massimi/Minimi del Giorno Precedente)
    IF (HH > HH[1]) AND (RotturaMAX = 0) AND (RotturaLL = 1) AND (RotturaHH = 0) THEN
    RotturaMAX = 1
    InizioMAX  = FineLL//BarIndex
    PrezzoMAXi = PrezzoLL
    PrezzoMAX  = high
    FineMAX    = BarIndex
    ENDIF
    IF (LL < LL[1]) AND (RotturaMIN = 0) AND (RotturaHH = 1) AND (RotturaLL = 0) THEN
    RotturaMIN = 1
    InizioMIN  = FineHH//BarIndex
    PrezzoMINi = PrezzoHH
    PrezzoMIN  = low
    FineMIN    = BarIndex
    ENDIF
    // Verificare se i Massimi/Minimi (dopo la rottura del Giorno Precedente), aumentano/diminuiscono
    IF (HH > PrezzoHH) AND (RotturaHH = 1) THEN
    PrezzoHH   = high
    FineHH     = BarIndex
    ENDIF
    IF (LL < PrezzoLL) AND RotturaLL = 1 THEN
    PrezzoLL   = low
    FineLL     = BarIndex
    ENDIF
    // Verificare se i Massimi/Minimi (dopo la rottura dei valori Giornalieri), aumentano/diminuiscono
    IF (HH > PrezzoMAX) AND (RotturaMAX = 1) AND (RotturaHH = 0) AND (RotturaLL = 1) THEN
    PrezzoMAX  = high
    FineMAX    = BarIndex
    ENDIF
    IF (LL < PrezzoMIN) AND (RotturaMIN = 1) AND (RotturaHH = 1) AND (RotturaLL = 0) THEN
    PrezzoMIN  = low
    FineMIN    = BarIndex
    ENDIF
    //
    Termina = BarIndex
    ENDIF
    DrawSegment(BarraInizio,HHprec,Termina,HHprec)       coloured("Green")  style(Line,2)  //Verde
    DrawSegment(BarraInizio,LLprec,Termina,LLprec)       coloured("Blue")   style(Line,2)  //Blù
    //
    IF RotturaHH = 1 THEN
    DrawSegment(BarraInizio,Apertura,FineHH,PrezzoHH) coloured("Red")    style(Line,2)   //Rosso
    endif
    //
    IF RotturaLL = 1 THEN
    DrawSegment(BarraInizio,Apertura,FineLL,PrezzoLL) coloured("Purple")   style(Line,2) //Porpora
    endif
    //
    IF RotturaMAX = 1 THEN
    DrawSegment(InizioMAX,PrezzoMAXi,FineMAX,PrezzoMAX) coloured("Cyan") style(Line,2)   //Celeste
    endif
    //
    IF RotturaMIN = 1 THEN
    DrawSegment(InizioMIN,PrezzoMINi,FineMIN,PrezzoMIN) coloured("Bisque") style(Line,2) //Sabbia
    endif
    //
    RETURN

    i colori delle varie barre (che vedi scritte anche nei commenti del codice) sono:

    • VERDE           Massimo del Giorno PRECEDENTE
    • BLU                Minimo del Giorno PRECEDENTE
    • ROSSO           rottura della barra VERDE
    • POPRPORA  rottura della barra BLU
    • CELESTE      rottura del Massimo del Giorno CORRENTE
    • SABBIA         rottura del Minimo del Giorno CORRENTE

    Se vuoi variarli puoi sostituirli, nel codice, con altri a piacere tra quelli qui indicati https://www.prorealcode.com/wp-content/uploads/2015/09/P1jHlnG.jpg.

    Nelle proprietà ti ho messo un numero finale della barra dove l’indicatore deve smettere di funzionare (tienilo con 6 o 7 “nove”, 9999999, in modo che non termini). Serve solo per il debugging, cioè la verifica del funzionamento, per le barre passate. Se tu vuoi verificarne il funzionamento dalla barra 260 (supponendo che adesso sia 1000 o più) mettici il valore 260 e poi incrementa quel numero col mouse barra dopo barra per vedere come le linee cambiano sul grafico.

    Per conoscere il numero di barra di ogni candela utilizza questo indicatore (o scarica BarInfo.itf):

    RETURN BarIndex AS "Bar ID"
    Edisone thanked this post
    Il-Mio-Indicatore-1.itf BarInfo.itf
Viewing 3 posts - 16 through 18 (of 18 total)
  • You must be logged in to reply to this topic.

Tracciare linea in automatico


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
Edisone @edisone Participant
Summary

This topic contains 17 replies,
has 3 voices, and was last updated by robertogozzi
3 years, 4 months ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 09/28/2022
Status: Active
Attachments: 16 files
Logo Logo
Loading...