Fibonacci e Pattern Armonici ABCD

Viewing 15 posts - 61 through 75 (of 77 total)
  • Author
    Posts
  • #108632 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Ho tolto i segmenti ed ho colorato i triangoli.

    Per lo screener, se vuoi che si attivi solo quando arriva al punto D, basta che togli le barre iniziali dei commenti alle righe 60 e 62.

    x-18.jpg x-18.jpg Patter-Armonici-ABCD-screener-1.itf Pattern-Armonici-ABCD-1.itf
    #108640 quote
    tatankayotankatatankayotanka
    Participant
    Senior

    Ciao grazie mille domani sera proverò

    #108697 quote
    tatankayotankatatankayotanka
    Participant
    Senior

    Ciao Roberto  ho scaricato i tuoi ultimi due file  .itf  ma non funzionano correttamente (magari  sbaglio qualcosa io)

    1° nell indicatore non disegna correttamente i punti del pattern ABCD

    2° nello screener mi hai detto che bisogna attivare le linee 60 e 62 ma bisogna anche attivare linea 29 e fin qui tutto ok , ma il problema e che nel risultato dello screener trova dei grafici che visualizzati nell’ indicatore non si vede la formazione del pattern ABCD, allego foto

    arm-1.jpg arm-1.jpg arm.jpg arm.jpg
    #108700 quote
    tatankayotankatatankayotanka
    Participant
    Senior
    #108716 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Ho fatto delle correzioni, dovrebbe andare meglio.

    Allego i nuovi file da importare, sia per lo screener che per l’indicatore.

    Pattern-Armonici-ABCD-2.itf Patter-Armonici-ABCD-screener-2.itf
    #108737 quote
    tatankayotankatatankayotanka
    Participant
    Senior

    Ciao Roberto ho scaricato gli ultimi aggiornamenti ma non mi torna il disegno del pattern , guarda gli scren in entrambi i casi non raggiunge il target 1.27/1.68 del punto D ma lo trova nello screener e lo disegna nell’ indicatore. Grazie e buona domenica

    LK-Giornaliero-2019_09_29-04h12.png LK-Giornaliero-2019_09_29-04h12.png MDLZ-Giornaliero-2019_09_29-04h05.png MDLZ-Giornaliero-2019_09_29-04h05.png
    #109074 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Ho fatto le modifiche e adesso non lo trova più.

    Patter-Armonici-ABCD-screener.itf Pattern-Armonici-ABCD.itf
    #111474 quote
    AlAl
    Participant
    Senior

    Buonasera Robeto, ti chiedo ancora consigli per l’indicatore modello armonico, provo a codificare la figura ABCD, con la A in alto e la D dovrebbe essere sotto la B, il codice rileva ABC, ma non la D, Sono basato sul tuo codice ma devo invertire il modello e sono bloccato, dopo che vorrei creare lo sreener, grazie per il tuo aiuto
    Saluti

    // Pattern Armonico ABCD
    //
    // Bullish ABCD -PRC
    //
    DEFPARAM DrawOnLastBarOnly = true
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    Distanza = 10 * pipsize
    PuntoA   = high
    BarraA   = BarIndex
    PuntoB   = low
    BarraB   = BarIndex
    PuntoC   = 0
    BarraC   = 0
    PuntoD   = 0
    Barra    = 0
    ENDIF
    Barra = Barra + 1  //incrementare il passare delle barre per azzerare tutto quando arriva a 100
    //
    // Determinare se il prezzo scende sotto A, in tal caso avremo una nuova A più bassa e ripartiremo daccapo con B,C e D
    PuntoA = max(PuntoA,high)
    IF PuntoA > PuntoA[1] THEN
    BarraA = BarIndex
    Barra  = 0
    PuntoB = low
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    ENDIF
    //
    // Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e D
    IF PuntoC = 0 THEN
    PuntoB = min(PuntoB,low)
    ENDIF
    IF PuntoB < PuntoB[1] THEN
    BarraB = BarIndex
    ENDIF
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    IF PuntoB = PuntoA THEN
    PuntoA = 0
    PuntoB = 0
    PuntoC = 0
    PuntoD = 0
    ENDIF
    DiffBA = PuntoB - PuntoA
    FibC1  = DiffBA * 0.618
    FibC2  = DiffBA * 0.786
    FibD1  = PuntoB + (DiffBA * -1.270)
    FibD2  = PUNTOb + (DiffBA * -1.618)
    IF close >= (PuntoB - FibC1) AND close <= (PuntoB - FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = high
    BarraC = BarIndex
    PuntoD = 0
    ELSIF close > (PuntoB - FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = high
    BarraA = BarIndex
    PuntoB = low
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    Barra  = 0
    ENDIF
    //
    IF PuntoC = PuntoA THEN
    PuntoC = 0
    ENDIF
    //
    IF LOW <= FibD1 AND close >= FibD2 THEN
    IF PuntoD = 0 THEN
    PuntoD = low
    BarraD = BarIndex
    ELSE
    PuntoD = min(PuntoD,low)
    IF PuntoD < PuntoD[1] THEN
    BarraD = BarIndex
    ENDIF
    ENDIF
    ENDIF
    IF PuntoD >0 THEN
    IF close > PuntoB THEN
    PuntoD = 0
    BarraD = 0
    ENDIF
    ENDIF
    //
    // Una volta superato il 161.8 si riparte daccapo
    //
    IF close > FibD2 THEN
    PuntoA = high
    BarraA = BarIndex
    PuntoB = low
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    Barra  = 0
    ENDIF
    //
    IF PuntoB = PuntoA THEN
    PuntoA = 0
    PuntoB = 0
    PuntoC = 0
    PuntoD = 0
    ENDIF
    //
    // si stampano i punti trovati, ognuno dipendente dal precedente, si stampa A, poi B solo se A è stato stampato, poi C solo se B è stato stampato ed infine D se anche C è stato stampato
    IF PuntoA > 0 THEN
    //DRAWSEGMENT(BarraA,PuntoA,BarIndex,PuntoA) COLOURED(255,0,0,255)            //Rosso
    DRAWTEXT("A",BarraA,PuntoA + Distanza,Dialog,Bold,20) coloured(205,0,205,255)
    IF PuntoB > 0 THEN
    //DRAWSEGMENT(BarraB,PuntoB,BarIndex,PuntoB) COLOURED(0,255,0,255)         //Verde
    DRAWTEXT("B",BarraB,PuntoB - Distanza,Dialog,Bold,20) coloured(205,0,205,255)
    IF PuntoC > 0 THEN
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,PuntoC) COLOURED(0,0,255,255)      //Blu
    DRAWTEXT("C",BarraC,PuntoC + Distanza,Dialog,Bold,20) coloured(205,0,205,255)
    IF PuntoD > 0 THEN
    // D
    //DRAWSEGMENT(BarraC,FibD1,BarIndex,FibD1) COLOURED(238,201,0,255) //Oro
    //DRAWSEGMENT(BarraC,FibD2,BarIndex,FibD2) COLOURED(238,201,0,255) //Oro
    DRAWTEXT("D",BarIndex,PuntoD - Distanza,Dialog,Bold,30) coloured(205,0,205,255)
    ENDIF
    //
    // stampa segmenti per Pattern Armonici
    //DRAWSEGMENT(BarraA,PuntoA,BarraB,PuntoB)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraA,PuntoA,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,FibD1) COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarIndex,low,BarIndex,FibD1)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,low)   COLOURED(0,0,0,255) //Nero
    DRAWTRIANGLE(BarraA,PuntoA,BarraB,PuntoB,BarraC,PuntoC)coloured(200,120,120,255)
    IF PuntoD > 0 THEN
    DRAWTRIANGLE(BarraB,PuntoB,BarraC,PuntoC,BarraD,PuntoD)coloured(0,255,0,255)
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    RETURN
    #111513 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    L’ho riscritto partendo dall’ultimo che avevo postato, invertendo tutte le condizioni:

    // Pattern Armonico ABCD
    //
    // https://www.prorealcode.com/topic/fibonacci-2/page/4/#post-108394
    //
    DEFPARAM DrawOnLastBarOnly = true
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    Distanza = 2 * pipsize
    PuntoA   = high
    BarraA   = BarIndex
    PuntoB   = low
    BarraB   = BarIndex
    PuntoC   = 0
    BarraC   = 0
    PuntoD   = 0
    Barra    = 0
    ENDIF
    Barra = Barra + 1  //incrementare il passare delle barre per azzerare tutto quando arriva a 100
    //
    // Determinare se il prezzo scende sotto A, in tal caso avremo una nuova A più bassa e ripartiremo daccapo con B,C e D
    PuntoA = max(PuntoA,high)
    IF PuntoA > PuntoA[1] THEN
    BarraA = BarIndex
    Barra  = 0
    PuntoB = low
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    ENDIF
    //
    // Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e D
    PuntoB = min(PuntoB,low)
    IF PuntoB < PuntoB[1] THEN
    IF PuntoC = 0 THEN
    BarraB = BarIndex
    ENDIF
    ENDIF
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    DiffAB = PuntoA - PuntoB
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    FibD1  = PuntoA - (DiffAB * 1.270)
    FibD2  = PuntoA - (DiffAB * 1.618)
    IF high >= (PuntoB + FibC1) AND high <= (PuntoB + FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = high
    BarraC = BarIndex
    ELSIF close > (PuntoB + FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = high
    BarraA = BarIndex
    PuntoB = high
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    Barra  = 0
    ENDIF
    //
    // Una volta superato il 161.8 si riparte daccapo
    //
    IF close < FibD2 AND PuntoD > 0 THEN
    PuntoA = high
    BarraA = BarIndex
    PuntoB = low
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    Barra  = 0
    ENDIF
    IF PuntoC > 0 AND PuntoD = 0 THEN
    PuntoD = 1
    ENDIF
    // si stampano i punti trovati, ognuno dipendente dal precedente, si stampa A, poi B solo se A è stato stampato, poi C solo se B è stato stampato ed infine D se anche C è stato stampato
    IF PuntoA > 0 THEN
    //DRAWSEGMENT(BarraA,PuntoA,BarIndex,PuntoA) COLOURED(255,0,0,255)            //Rosso
    DRAWTEXT("A",BarraA,PuntoA - Distanza,Dialog,Bold,14) coloured(205,0,205,255)
    IF PuntoB > 0 THEN
    //DRAWSEGMENT(BarraB,PuntoB,BarIndex,PuntoB) COLOURED(0,255,0,255)         //Verde
    DRAWTEXT("B",BarraB,PuntoB + Distanza,Dialog,Bold,14) coloured(205,0,205,255)
    IF PuntoC > 0 THEN
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,PuntoC) COLOURED(0,0,255,255)      //Blu
    DRAWTEXT("C",BarraC,PuntoC - Distanza,Dialog,Bold,14) coloured(205,0,205,255)
    // D
    //DRAWSEGMENT(BarraC,FibD1,BarIndex,FibD1) COLOURED(238,201,0,255) //Oro
    //DRAWSEGMENT(BarraC,FibD2,BarIndex,FibD2) COLOURED(238,201,0,255) //Oro
    DRAWTEXT("D",BarIndex,FibD1 - Distanza,Dialog,Bold,14) coloured(205,0,205,255)
    //
    // stampa segmenti per Pattern Armonici
    //DRAWSEGMENT(BarraA,PuntoA,BarraB,PuntoB)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraA,PuntoA,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,FibD1) COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarIndex,low,BarIndex,FibD1)  COLOURED(0,0,0,255) //Nero
    //DRAWSEGMENT(BarraC,PuntoC,BarIndex,low)   COLOURED(0,0,0,255) //Nero
    DRAWTRIANGLE(BarraA,PuntoA,BarraB,PuntoB,BarraC,PuntoC)coloured(200,120,120,255)
    DRAWTRIANGLE(BarraC,PuntoC,BarIndex,FibD1,BarIndex,low)coloured(200,120,120,255)
    ENDIF
    ENDIF
    ENDIF
    RETURN

    Mi sembra vada bene.

    x-19.jpg x-19.jpg Pattern-Armonici-ABCD-Up.itf Pattern-Armonici-ABCD-Dn.itf
    #111545 quote
    AlAl
    Participant
    Senior

    Un grande ringraziamento Roberto, i tuoi indicatori Pattern Armonici  ABCD sono un buon lavoro, penso che si aprano possibilità
    Buona giornata

    #111554 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Grazie Al.

    Se fai anche lo screener pubblicalo qui, per favore, così tutti possono leggerlo.

    #111627 quote
    AlAl
    Participant
    Senior

    Ciao Roberto,
    Ecco una versione di screener da testare, è un’inversione di un screener della discution
    Ho notato che hai creato nuove interessanti versioni degli indicatori, modificando i codici.
    È interessante scoprire le possibili varianti.Ad esempio l’azione TOTAL, con il tuo nuovo indicatore (Dn) e una versione inversa acienne
    Grazie, buona giornata

    // Pattern Armonico ABCD
    //
    // Versione invertita di screener https://www.prorealcode.com/topic/fibonacci-2/page/4/#post-108399
    //per testare
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    PuntoA   = high
    PuntoB   = low
    PuntoC   = 0
    Barra    = 0
    ENDIF
    Barra = Barra + 1  //incrementare il passare delle barre per azzerare tutto quando arriva a 100
    //
    // Determinare se il prezzo scende sotto A, in tal caso avremo una nuova A più bassa e ripartiremo daccapo con B,C e D
    PuntoA = max(PuntoA,high)
    IF PuntoA > PuntoA[1] THEN
    Barra  = 0
    PuntoB = low
    PuntoC = 0
    PuntoD = 0
    ENDIF
    //
    // Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e D
    IF PuntoC = 0 THEN
    PuntoB = min(PuntoB,low)
    ENDIF
    
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    DiffAB = PuntoA - PuntoB
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    FibD1  = PuntoA - (DiffAB * 1.270)
    FibD2  = PuntoA - (DiffAB * 1.618)
    IF close>= (PuntoB + FibC1) AND close <= (PuntoB + FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = high
    PuntoD = 0
    ELSIF close > (PuntoB + FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = high
    PuntoB = low
    PuntoC = 0
    PuntoD = 0
    Barra  = 0
    endif
    IF PuntoC = PuntoA THEN
    PuntoC = 0
    ENDIF
    //
    IF low <= FibD1 AND close >= FibD2 THEN
    IF PuntoD = 0 THEN
    PuntoD = low
    ELSE
    PuntoD = min(PuntoD,low)
    ENDIF
    ENDIF
    IF PuntoD > 0 THEN
    IF close < PuntoB THEN
    PuntoD = 0
    ENDIF
    ENDIF
    //
    // Una volta superato il 161.8 si riparte daccapo
    
    IF close < FibD2 AND PuntoD> 0 THEN
    PuntoA = high
    PuntoB = low
    PuntoC = 0
    PuntoD = 0
    ENDIF
    //
    IF PuntoB = PuntoA THEN
    PuntoA = 0
    PuntoB = 0
    PuntoC = 0
    PuntoD = 0
    ENDIF
    // si stampano i punti trovati, ognuno dipendente dal precedente, si stampa A, poi B solo se A è stato stampato, poi C solo se B è stato stampato ed infine D se anche C è stato stampato
    //PuntoD = 0
    IF PuntoC > 0 AND close <= FibD1 AND close  >= FibD2 THEN
    PuntoD = low
    ENDIF
    SCREENER [PuntoD](Barra AS "0ld")
    
    robertogozzi thanked this post
    screener-ABCD-dwn.png screener-ABCD-dwn.png FP-Journalier.png FP-Journalier.png
    #112956 quote
    GianlucaGianluca
    Participant
    Master

    Grazie a tutti per il fantastico lavoro!! e a Roberto soprattutto sempre gentile!

    #113194 quote
    robertogozzirobertogozzi
    Moderator
    Legend

    Ho pubblicato uno screener ed un indicatore del Pattern ABCD;

    https://www.prorealcode.com/prorealtime-indicators/abcd-pattern-indicator

    https://www.prorealcode.com/prorealtime-market-screeners/abcd-pattern-screener/

    queste sono le novità introdotte rispetto ai codici pubblicati qui:

    • ho combinato insieme sia la versione Long che quella Short
    • ho migliorato il codice
    • ho introdotto una distanza minima tra i punti A-C e C-D, per evitare triangoli troppo piccoli
    • oltre a visualizzare il pattern corrente, se c’è, visualizza anche quello precedente
    #113251 quote
    tatankayotankatatankayotanka
    Participant
    Senior

    Grazie mille Roberto appena riesco lo provo

Viewing 15 posts - 61 through 75 (of 77 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

Fibonacci e Pattern Armonici ABCD


ProScreener: Scansione Mercati & Screener

New Reply
Author
Summary

This topic contains 76 replies,
has 5 voices, and was last updated by AlAl
6 years, 11 months ago.

Topic Details
Forum: ProScreener: Scansione Mercati & Screener
Language: Italian
Started: 04/27/2019
Status: Active
Attachments: 39 files
ProRealCode ProRealCode
Loading...