Fibonacci e Pattern Armonici ABCD

Viewing 15 posts - 46 through 60 (of 77 total)
  • Author
    Posts
  • #103952 quote
    robertogozzi
    Moderator
    Master

    Le avevi già definite te nel tuo codice, quello che gho scritto io devi aggiungerlo dopo la riga 8 (togliendo, o meglio, commentando le tue).

    #103953 quote
    Alexsio89
    Participant
    Junior
    defparam drawonlastbaronly   = true
    defparam calculateonlastbars = 1000
    P = 200
    X= highest[P](high)
    A= lowest[P](low)
     
    RangeMax = (X - A) * 0.618
    RangeMin = (X - A) * 0.500
    BarraA = 0
    BarraB = 0
    For i = 1 To 1000
    If high <= RangeMax  Then
    BarraB = BarIndex[i]
    Endif
    If low = A Then
    BarraA = BarIndex[i]
    Endif
    If BarraA and BarraB Then
    Break
    Endif
    Next
    DRAWSEGMENT(BarraA,A,BarraB,RangeMax)
    return

    scusami ma non avevo capito…allora ho unito il tutto ma mi dice comunque di definire il “rangemin”

    (forse sono io che non riesco nemmeno ad unire le due cose insieme…)

    #103964 quote
    robertogozzi
    Moderator
    Master

    No, dovrebbe dirti che non staimusando la variabile RANGEMIN.

    Quando una variabile non viene usata devi commentarla.

    #107287 quote
    tatankayotanka
    Participant
    Senior

    Buona sera  allego un disegno dove cerco spiegare quello che voglio e oltre alle info sul disegno vorrei anche altre condizioni

    1=che il punto D sia al massimo di 2/3 candele precedenti all ultima barra

    2=mi piacerebbe  un programma per lo screener con quelle condizioni sopra citata

    3=  un indicatore dove disegni  il pattern trovato

    Grazie in anticipo per il vostro interessamento e tempo

    KLAC-Giornaliero-2019_09_11-16h48.png KLAC-Giornaliero-2019_09_11-16h48.png
    #108143 quote
    Alexsio89
    Participant
    Junior

    ci sto impazzendo da mesi ormai…io sono sicuramente troppo ignorante in materia..alla fine mi sa che tocca comprarlo..tatanka se ti va ci possiamo sentire in privato..(vedo che abbiamo idee simili)

    #108279 quote
    robertogozzi
    Moderator
    Master

    Capisco la vostra attesa, ma è abbastanza macchinoso riuscire a fare quello che chiedi.

    Prendere un Massimo ed un Minimo e visualizzare i livelli di Fibonacci è di una semplicità estrema e ce ne sono di codici qui sul forum.

    Partire da un minimo A, poi individuare B (se nel frattempo il prezzo scende sotto A, questo diventa la nuova A), se poi il prezzo supera B questo diventa la nuova B, se poi il prezzo scende occorre individuare C che sia tra le due percentuali indicate, se scende sotto 76.4 occorre riazzerare tutto e ricominciare nuovamente a trovare A, ecc…. è una cosa difficile, non tanto concettualmente, quanto nella scrittura del codice perché prevede molti intrecci.

    Io ho scritto intanto i punti A e B, sto cercando di mettere a punto C, ma devo fare ancora delle prove.

    #108288 quote
    tatankayotanka
    Participant
    Senior

    Ciao Roberto , figurati non e un problema il tempo , riesci a a postare la prima parte del programma?

    #108337 quote
    robertogozzi
    Moderator
    Master

    Qusto è il codice, fino al punto C. Nella foto del DAX h1 di adesso il punto C non è stato ancora raggiunto, ma spero lo faccia per vedere se viene stampato correttamente, dopodiché diventa semplice fare la proiezione per il punto D:

    DEFPARAM DrawOnLastBarOnly = true
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
       MaxBarre = 100
       Distanza = 5 * pipsize
       PuntoA   = low
       BarraA   = BarIndex
       PuntoB   = high
       BarraB   = BarIndex
       PuntoC   = 0
       BarraC   = 0
       PuntoD   = 0
       BarraD   = 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 = min(PuntoA,low)
    IF PuntoA < PuntoA[1] THEN
       BarraA = BarIndex
       Barra  = 0
       PuntoB = high
       BarraB = BarIndex
       PuntoC = 0
       BarraC = 0
       PuntoD = 0
       BarraD = 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 = max(PuntoB,high)
    IF PuntoB > PuntoB[1] THEN
       PuntoC = 0
       BarraC = 0
       PuntoD = 0
       BarraD = 0
    ENDIF
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    DiffAB = PuntoB - PuntoA
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    IF low <= (PuntoB - FibC1) AND low >= (PuntoB - FibC2) THEN
       // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
       PuntoC = low
       BarraC = BarIndex
    ELSIF low < (PuntoB - FibC2) THEN
       // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
       PuntoA = low
       BarraA = BarIndex
       PuntoB = high
       BarraB = BarIndex
       PuntoC = 0
       BarraC = 0
       PuntoD = 0
       BarraD = 0
       Barra  = 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,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))
             IF PuntoD > 0 THEN
                DRAWSEGMENT(BarraD,PuntoD,BarIndex,PuntoD) COLOURED(238,201,0,255) //Oro
                DRAWTEXT("D",BarraD,PuntoD + Distanza,Dialog,Bold,14) coloured(205,0,205,255))
             ENDIF
          ENDIF
       ENDIF
    ENDIF
    RETURN
    x-14.jpg x-14.jpg
    #108366 quote
    robertogozzi
    Moderator
    Master

    Eccolo finito e funzionante (almeno sul DAX, h1):

    DEFPARAM DrawOnLastBarOnly = true
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    Distanza = 5 * pipsize
    PuntoA   = low
    BarraA   = BarIndex
    PuntoB   = high
    BarraB   = BarIndex
    PuntoC   = 0
    BarraC   = 0
    PuntoD   = 0
    BarraD   = 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 = min(PuntoA,low)
    IF PuntoA < PuntoA[1] THEN
    BarraA = BarIndex
    Barra  = 0
    PuntoB = high
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    BarraD = 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 = max(PuntoB,high)
    IF PuntoB > PuntoB[1] THEN
    IF PuntoC = 0 THEN
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    BarraD = 0
    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 = PuntoB - PuntoA
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    FibD1  = PuntoA + (DiffAB * 1.270)
    FibD2  = PuntoA + (DiffAB * 1.618)
    IF low <= (PuntoB - FibC1) AND low >= (PuntoB - FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = low
    BarraC = BarIndex
    ELSIF close < (PuntoB - FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = low
    BarraA = BarIndex
    PuntoB = high
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    BarraD = 0
    Barra  = 0
    ENDIF
    //
    // Una volta superato il 161.8 si riparte daccapo
    //
    IF close > FibD2 AND PuntoD > 0 THEN
    PuntoA = low
    BarraA = BarIndex
    PuntoB = high
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    BarraD = 0
    Barra  = 0
    ENDIF
    IF PuntoC > 0 AND PuntoD = 0 THEN
    PuntoD = 1
    BarraD = BarIndex
    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(BarraD,FibD1,BarIndex,FibD1) COLOURED(238,201,0,255) //Oro
    DRAWSEGMENT(BarraD,FibD2,BarIndex,FibD2) COLOURED(238,201,0,255) //Oro
    DRAWTEXT("D",BarraD,FibD1 - Distanza,Dialog,Bold,14) coloured(205,0,205,255)
    ENDIF
    ENDIF
    ENDIF
    RETURN

    nelle foto ho allegato anche quella dove si vede solo C, mentre in realtà questa non si vedrà, perché appena rileva il puntoC automaticamente proietterà in alto anche il D con i due segmenti.

    Questo è l’indicatore, se è quello che volevi e ti va bene ti farò lo screener.

    x-15.jpg x-15.jpg y-9.jpg y-9.jpg
    #108372 quote
    tatankayotanka
    Participant
    Senior

    Grazie Roberto , se riesco lo provo oggi stesso

    #108383 quote
    tatankayotanka
    Participant
    Senior

    Si proprio cosi , ed abbiamo (hai) creato  l indicatore del pattern armonico ABCD , se possibile puoi tracciare dei segmenti e le lettere al loro vertice corrispondenti come immagine che allego , si se puoi creare lo screener  sarebbe grandioso

    GS-Giornaliero-2019_09_24-13h34.png GS-Giornaliero-2019_09_24-13h34.png
    #108394 quote
    robertogozzi
    Moderator
    Master

    Allego la nuova versione dell’indicatore, di cui allego immagine e file .ITF per l’importazione:

    DEFPARAM DrawOnLastBarOnly = true
    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    Distanza = 2 * pipsize
    PuntoA   = low
    BarraA   = BarIndex
    PuntoB   = high
    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 = min(PuntoA,low)
    IF PuntoA < PuntoA[1] THEN
    BarraA = BarIndex
    Barra  = 0
    PuntoB = high
    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 = max(PuntoB,high)
    IF PuntoB > PuntoB[1] THEN
    BarraB = BarIndex
    PuntoC = 0
    BarraC = 0
    PuntoD = 0
    ENDIF
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    DiffAB = PuntoB - PuntoA
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    FibD1  = PuntoA + (DiffAB * 1.270)
    FibD2  = PuntoA + (DiffAB * 1.618)
    IF low <= (PuntoB - FibC1) AND low >= (PuntoB - FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = low
    BarraC = BarIndex
    ELSIF close < (PuntoB - FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = low
    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 = low
    BarraA = BarIndex
    PuntoB = high
    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
    ENDIF
    ENDIF
    ENDIF
    RETURN

    Resta da fare la colorazione dell’interno dei pattern, abbiate un pò di pazienza ancora.

    x-16.jpg x-16.jpg Pattern-Armonici-ABCD.itf
    #108399 quote
    robertogozzi
    Moderator
    Master

    E questo è lo screener, anchesso con allegato file .ITF per l’importazione.

    IF BarIndex = 0 OR (Barra > MaxBarre) THEN
    MaxBarre = 100
    //Distanza = 5 * pipsize
    PuntoA   = low
    //BarraA   = BarIndex
    PuntoB   = high
    //BarraB   = BarIndex
    PuntoC   = 0
    //BarraC   = 0
    PuntoD   = 0
    //BarraD   = 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 = min(PuntoA,low)
    IF PuntoA < PuntoA[1] THEN
    //BarraA = BarIndex
    Barra  = 0
    PuntoB = high
    //BarraB = BarIndex
    PuntoC = 0
    //BarraC = 0
    PuntoD = 0
    //BarraD = 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 = max(PuntoB,high)
    IF PuntoB > PuntoB[1] THEN
    PuntoC = 0
    //BarraC = 0
    PuntoD = 0
    //BarraD = 0
    ENDIF
    // Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di C
    DiffAB = PuntoB - PuntoA
    FibC1  = DiffAB * 0.618
    FibC2  = DiffAB * 0.786
    //FibD1  = PuntoA + (DiffAB * 1.270)
    //FibD2  = PuntoA + (DiffAB * 1.618)
    IF low <= (PuntoB - FibC1) AND low >= (PuntoB - FibC2) THEN
    // se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....
    PuntoC = low
    //BarraC = BarIndex
    ELSIF close < (PuntoB - FibC2) THEN
    // ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto B
    PuntoA = low
    //BarraA = BarIndex
    PuntoB = high
    //BarraB = BarIndex
    PuntoC = 0
    //BarraC = 0
    PuntoD = 0
    //BarraD = 0
    Barra  = 0
    ENDIF
    //
    // Una volta superato il 161.8 si riparte daccapo
    //
    //IF close > FibD2 AND PuntoD > 0 THEN
    //PuntoA = low
    //BarraA = BarIndex
    //PuntoB = high
    //BarraB = BarIndex
    //PuntoC = 0
    //BarraC = 0
    //PuntoD = 0
    //BarraD = 0
    //Barra  = 0
    //ENDIF
    IF PuntoC > 0 AND PuntoD = 0 THEN
    PuntoD = 1
    //BarraD = BarIndex
    ENDIF
    SCREENER [PuntoC](Barra AS "Old")
    Patter-Armonici-ABCD-screener.itf
    #108471 quote
    tatankayotanka
    Participant
    Senior

    Ciao Roberto non preoccuparti per il tempo che devo attendere per la colorazione , ho scaricato ultima versione e anche lo screener  ti chiedo ancora due cose 1° puoi togliere linee orizzontali colorate che segnano i livelli di fibo  ( ho provato  a modificarlo ma mi da errore)

    2° nello screener mi deve trovare solo i grafici che esaudiscano tutti e 4 i punti

    CTSH-Giornaliero-2019_09_25-13h11.png CTSH-Giornaliero-2019_09_25-13h11.png
    #108484 quote
    Alexsio89
    Participant
    Junior

    complimenti Roberto…e grazie infinite per il tempo che ci hai dedicato…..sei veramente bravo…

Viewing 15 posts - 46 through 60 (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...