Fibonacci e Pattern Armonici ABCD
Forums › ProRealTime forum Italiano › Supporto ProScreener › Fibonacci e Pattern Armonici ABCD
- This topic has 76 replies, 5 voices, and was last updated 5 years ago by Al.
-
-
08/01/2019 at 10:12 AM #103952
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).
08/01/2019 at 10:38 AM #1039531234567891011121314151617181920212223defparam drawonlastbaronly = truedefparam calculateonlastbars = 1000P = 200X= highest[P](high)A= lowest[P](low)RangeMax = (X - A) * 0.618RangeMin = (X - A) * 0.500BarraA = 0BarraB = 0For i = 1 To 1000If high <= RangeMax ThenBarraB = BarIndex[i]EndifIf low = A ThenBarraA = BarIndex[i]EndifIf BarraA and BarraB ThenBreakEndifNextDRAWSEGMENT(BarraA,A,BarraB,RangeMax)returnscusami 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…)
08/01/2019 at 11:33 AM #103964No, dovrebbe dirti che non staimusando la variabile RANGEMIN.
Quando una variabile non viene usata devi commentarla.
09/11/2019 at 9:57 PM #107287Buona 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
09/22/2019 at 10:26 AM #10814309/23/2019 at 3:37 PM #108279Capisco 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.
09/23/2019 at 5:08 PM #108288Ciao Roberto , figurati non e un problema il tempo , riesci a a postare la prima parte del programma?
09/24/2019 at 11:53 AM #108337Qusto è 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:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475DEFPARAM DrawOnLastBarOnly = trueIF BarIndex = 0 OR (Barra > MaxBarre) THENMaxBarre = 100Distanza = 5 * pipsizePuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0Barra = 0ENDIFBarra = 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 DPuntoA = min(PuntoA,low)IF PuntoA < PuntoA[1] THENBarraA = BarIndexBarra = 0PuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0ENDIF//// Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e DPuntoB = max(PuntoB,high)IF PuntoB > PuntoB[1] THENPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0ENDIF// Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di CDiffAB = PuntoB - PuntoAFibC1 = DiffAB * 0.618FibC2 = DiffAB * 0.786IF low <= (PuntoB - FibC1) AND low >= (PuntoB - FibC2) THEN// se il MINIMO è tra 0.618 e 0.786 abbiamo trovato il punto C....PuntoC = lowBarraC = BarIndexELSIF low < (PuntoB - FibC2) THEN// ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto BPuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0Barra = 0ENDIF// 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 stampatoIF PuntoA > 0 THENDRAWSEGMENT(BarraA,PuntoA,BarIndex,PuntoA) COLOURED(255,0,0,255) //RossoDRAWTEXT("A",BarraA,PuntoA - Distanza,Dialog,Bold,14) coloured(205,0,205,255))IF PuntoB > 0 THENDRAWSEGMENT(BarraB,PuntoB,BarIndex,PuntoB) COLOURED(0,255,0,255) //VerdeDRAWTEXT("B",BarraB,PuntoB + Distanza,Dialog,Bold,14) coloured(205,0,205,255))IF PuntoC > 0 THENDRAWSEGMENT(BarraC,PuntoC,BarIndex,PuntoC) COLOURED(0,0,255,255) //BluDRAWTEXT("C",BarraC,PuntoC - Distanza,Dialog,Bold,14) coloured(205,0,205,255))IF PuntoD > 0 THENDRAWSEGMENT(BarraD,PuntoD,BarIndex,PuntoD) COLOURED(238,201,0,255) //OroDRAWTEXT("D",BarraD,PuntoD + Distanza,Dialog,Bold,14) coloured(205,0,205,255))ENDIFENDIFENDIFENDIFRETURN09/24/2019 at 4:21 PM #108366Eccolo finito e funzionante (almeno sul DAX, h1):
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697DEFPARAM DrawOnLastBarOnly = trueIF BarIndex = 0 OR (Barra > MaxBarre) THENMaxBarre = 100Distanza = 5 * pipsizePuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0Barra = 0ENDIFBarra = 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 DPuntoA = min(PuntoA,low)IF PuntoA < PuntoA[1] THENBarraA = BarIndexBarra = 0PuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0ENDIF//// Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e DPuntoB = max(PuntoB,high)IF PuntoB > PuntoB[1] THENIF PuntoC = 0 THENPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0ENDIFENDIF// Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di CDiffAB = PuntoB - PuntoAFibC1 = DiffAB * 0.618FibC2 = DiffAB * 0.786FibD1 = 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 = lowBarraC = BarIndexELSIF close < (PuntoB - FibC2) THEN// ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto BPuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0Barra = 0ENDIF//// Una volta superato il 161.8 si riparte daccapo//IF close > FibD2 AND PuntoD > 0 THENPuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0BarraD = 0Barra = 0ENDIFIF PuntoC > 0 AND PuntoD = 0 THENPuntoD = 1BarraD = BarIndexENDIF// 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 stampatoIF PuntoA > 0 THENDRAWSEGMENT(BarraA,PuntoA,BarIndex,PuntoA) COLOURED(255,0,0,255) //RossoDRAWTEXT("A",BarraA,PuntoA - Distanza,Dialog,Bold,14) coloured(205,0,205,255)IF PuntoB > 0 THENDRAWSEGMENT(BarraB,PuntoB,BarIndex,PuntoB) COLOURED(0,255,0,255) //VerdeDRAWTEXT("B",BarraB,PuntoB + Distanza,Dialog,Bold,14) coloured(205,0,205,255)IF PuntoC > 0 THENDRAWSEGMENT(BarraC,PuntoC,BarIndex,PuntoC) COLOURED(0,0,255,255) //BluDRAWTEXT("C",BarraC,PuntoC - Distanza,Dialog,Bold,14) coloured(205,0,205,255)// DDRAWSEGMENT(BarraD,FibD1,BarIndex,FibD1) COLOURED(238,201,0,255) //OroDRAWSEGMENT(BarraD,FibD2,BarIndex,FibD2) COLOURED(238,201,0,255) //OroDRAWTEXT("D",BarraD,FibD1 - Distanza,Dialog,Bold,14) coloured(205,0,205,255)ENDIFENDIFENDIFRETURNnelle 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.
09/24/2019 at 5:10 PM #108372Grazie Roberto , se riesco lo provo oggi stesso
09/24/2019 at 7:21 PM #108383Si 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
09/24/2019 at 11:11 PM #108394Allego la nuova versione dell’indicatore, di cui allego immagine e file .ITF per l’importazione:
Pattern Armonici ABCD e Fibonacci123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899DEFPARAM DrawOnLastBarOnly = trueIF BarIndex = 0 OR (Barra > MaxBarre) THENMaxBarre = 100Distanza = 2 * pipsizePuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0Barra = 0ENDIFBarra = 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 DPuntoA = min(PuntoA,low)IF PuntoA < PuntoA[1] THENBarraA = BarIndexBarra = 0PuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0ENDIF//// Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e DPuntoB = max(PuntoB,high)IF PuntoB > PuntoB[1] THENBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0ENDIF// Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di CDiffAB = PuntoB - PuntoAFibC1 = DiffAB * 0.618FibC2 = DiffAB * 0.786FibD1 = 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 = lowBarraC = BarIndexELSIF close < (PuntoB - FibC2) THEN// ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto BPuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0Barra = 0ENDIF//// Una volta superato il 161.8 si riparte daccapo//IF close > FibD2 AND PuntoD > 0 THENPuntoA = lowBarraA = BarIndexPuntoB = highBarraB = BarIndexPuntoC = 0BarraC = 0PuntoD = 0Barra = 0ENDIFIF PuntoC > 0 AND PuntoD = 0 THENPuntoD = 1ENDIF// 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 stampatoIF PuntoA > 0 THENDRAWSEGMENT(BarraA,PuntoA,BarIndex,PuntoA) COLOURED(255,0,0,255) //RossoDRAWTEXT("A",BarraA,PuntoA - Distanza,Dialog,Bold,14) coloured(205,0,205,255)IF PuntoB > 0 THENDRAWSEGMENT(BarraB,PuntoB,BarIndex,PuntoB) COLOURED(0,255,0,255) //VerdeDRAWTEXT("B",BarraB,PuntoB + Distanza,Dialog,Bold,14) coloured(205,0,205,255)IF PuntoC > 0 THENDRAWSEGMENT(BarraC,PuntoC,BarIndex,PuntoC) COLOURED(0,0,255,255) //BluDRAWTEXT("C",BarraC,PuntoC - Distanza,Dialog,Bold,14) coloured(205,0,205,255)// DDRAWSEGMENT(BarraC,FibD1,BarIndex,FibD1) COLOURED(238,201,0,255) //OroDRAWSEGMENT(BarraC,FibD2,BarIndex,FibD2) COLOURED(238,201,0,255) //OroDRAWTEXT("D",BarIndex,FibD1 - Distanza,Dialog,Bold,14) coloured(205,0,205,255)//// stampa segmenti per Pattern ArmoniciDRAWSEGMENT(BarraA,PuntoA,BarraB,PuntoB) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarraA,PuntoA,BarraC,PuntoC) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarraB,PuntoB,BarraC,PuntoC) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarraC,PuntoC,BarIndex,FibD1) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarIndex,low,BarIndex,FibD1) COLOURED(0,0,0,255) //NeroDRAWSEGMENT(BarraC,PuntoC,BarIndex,low) COLOURED(0,0,0,255) //NeroENDIFENDIFENDIFRETURNResta da fare la colorazione dell’interno dei pattern, abbiate un pò di pazienza ancora.
09/24/2019 at 11:17 PM #108399E questo è lo screener, anchesso con allegato file .ITF per l’importazione.
Pattern Armonici ABCD screener1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677IF BarIndex = 0 OR (Barra > MaxBarre) THENMaxBarre = 100//Distanza = 5 * pipsizePuntoA = low//BarraA = BarIndexPuntoB = high//BarraB = BarIndexPuntoC = 0//BarraC = 0PuntoD = 0//BarraD = 0Barra = 0ENDIFBarra = 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 DPuntoA = min(PuntoA,low)IF PuntoA < PuntoA[1] THEN//BarraA = BarIndexBarra = 0PuntoB = high//BarraB = BarIndexPuntoC = 0//BarraC = 0PuntoD = 0//BarraD = 0ENDIF//// Determinare se il prezzo sale sopra B, in tal caso avremo una nuova B più alta e ripartiremo daccapo con C e DPuntoB = max(PuntoB,high)IF PuntoB > PuntoB[1] THENPuntoC = 0//BarraC = 0PuntoD = 0//BarraD = 0ENDIF// Calcolare la differenza tra i punti A e B e le due percentuali di fibonacci da usare per la verifica di CDiffAB = PuntoB - PuntoAFibC1 = DiffAB * 0.618FibC2 = 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 = BarIndexELSIF close < (PuntoB - FibC2) THEN// ...altrimenti si riparte daccapo con un nuovo punto A ed un nuovo punto BPuntoA = low//BarraA = BarIndexPuntoB = high//BarraB = BarIndexPuntoC = 0//BarraC = 0PuntoD = 0//BarraD = 0Barra = 0ENDIF//// 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//ENDIFIF PuntoC > 0 AND PuntoD = 0 THENPuntoD = 1//BarraD = BarIndexENDIFSCREENER [PuntoC](Barra AS "Old")09/25/2019 at 6:19 PM #108471Ciao 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
09/25/2019 at 9:12 PM #108484 -
AuthorPosts
Find exclusive trading pro-tools on