Fibonacci e Pattern Armonici ABCD

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

    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
    tatankayotanka
    Participant
    Senior

    Ciao grazie mille domani sera proverò

    #108697 quote
    tatankayotanka
    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
    tatankayotanka
    Participant
    Senior
    #108716 quote
    robertogozzi
    Moderator
    Master

    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
    tatankayotanka
    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
    robertogozzi
    Moderator
    Master

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

    Patter-Armonici-ABCD-screener.itf Pattern-Armonici-ABCD.itf
    #111474 quote
    Al
    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
    robertogozzi
    Moderator
    Master

    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
    Al
    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
    robertogozzi
    Moderator
    Master

    Grazie Al.

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

    #111627 quote
    Al
    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
    Gianluca
    Participant
    Master

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

    #113194 quote
    robertogozzi
    Moderator
    Master

    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
    tatankayotanka
    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.

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 Al
6 years, 2 months ago.

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