ProRealCode - Trading & Coding with ProRealTime™
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.
Ciao grazie mille domani sera proverò
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
dimenticavo
Ho fatto delle correzioni, dovrebbe andare meglio.
Allego i nuovi file da importare, sia per lo screener che per l’indicatore.
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
Ho fatto le modifiche e adesso non lo trova più.
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
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.
Un grande ringraziamento Roberto, i tuoi indicatori Pattern Armonici ABCD sono un buon lavoro, penso che si aprano possibilità
Buona giornata
Grazie Al.
Se fai anche lo screener pubblicalo qui, per favore, così tutti possono leggerlo.
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")
Grazie a tutti per il fantastico lavoro!! e a Roberto soprattutto sempre gentile!
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:
Grazie mille Roberto appena riesco lo provo
Fibonacci e Pattern Armonici ABCD
This topic contains 76 replies,
has 5 voices, and was last updated by Al
6 years, 2 months ago.
| Forum: | ProScreener: Scansione Mercati & Screener |
| Language: | Italian |
| Started: | 04/27/2019 |
| Status: | Active |
| Attachments: | 39 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.