ProRealCode - Trading & Coding with ProRealTime™
Perfetto, Grazie..Auguri! 🙂
L’ultimo codice da te riportato nel post ha due regole, mentre da quanto hai scritto sembra tu adesso ne voglia una sola.
Per favore, dimentica quanto già scritto e dimmi, dettagliatamente, cosa vuoi ottenere, in tal modo posso ripartire da zero.
Ciao Roberto, Và benissimo…partiamo da zero..forse meglio! 🙂
_________________________________________________________________________
Mi servirebbe una regola in grado di riconoscere una figura composta da 2 candele (vedi allegato come esempio).
La figura deve essere composta da una prima candela (A) che risponda ai seguenti parametri:
La figura deve essere composta ANCHE da una seconda candela (B) che risponda ai seguenti parametri:
Molte grazie!
Ciao!
Riproviamo con questo:
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
TotaleOmbre = OmbraSuperiore + OmbraInferiore
Ampiezza = range //ampiezza della candela (high - low)
// Candela A
IF close[1] > open[1] THEN //---Candela RIALZISTA
CandelaA = (OmbraInferiore[1] >= (Ampiezza[1] * 0.60)) AND (OmbraInferiore[1] <= (Ampiezza[1] * 0.80)) //Ombra inf. tra 0.60 e 0.80
CandelaA = CandelaB AND (OmbraSuperiore[1] >= (Ampiezza[1] * 0.05)) AND (OmbraSuperiore[1] <= (Ampiezza[1] * 0.20)) //Ombra sup. tra 0.05 e 0.20
ELSE //---Candela RIBASSISTA
CandelaA = (OmbraSuperiore[1] >= (Ampiezza[1] * 0.60)) AND (OmbraSuperiore[1] <= (Ampiezza[1] * 0.80)) //Ombra sup. tra 0.60 e 0.80
CandelaA = CandelaA AND (OmbraInferiore[1] >= (Ampiezza[1] * 0.05)) AND (OmbraInferiore[1] <= (Ampiezza[1] * 0.20)) //Ombra sup. tra 0.05 e 0.20
ENDIF
CandelaA = CandelaA AND (Corpo[1] >= (Ampiezza[1] * 0.05)) AND (Corpo[1] <= (Ampiezza[1] * 0.25)) //Corpo tra 0.05 e 0.25
// Candela B
IF close[1] > open[1] THEN //Se la Candela A era RIALZISTA...
CandelaB = close > open[1] //...BULLish, chiusura > apertura Candela A
ELSE //Se la Candela A era RIBASSISTA...
CandelaB = close < open[1] //...BEARish, chiusura < apertura Candela A
ENDIF
CandelaB = CandelaB AND (Corpo >= (Ampiezza * 0.35)) AND (Corpo <= Ampiezza) //Corpo tra 0.35 e 1.00
CandelaB = CandelaB AND (TotaleOmbre >= 0) AND (TotaleOmbre <= (Ampiezza * 0.40)) //Totale ombre tra 0 e 0.40
// Risultato
Risultato = CandelaA AND CandelaB
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
La Candela A è quella precedente (a sinistra nella tua foto, la Pin Bar), mentre quella corrente è quella a destra.
Molte grazie della risposta…tuttavia, non capisco perché..ma la regola non fà ciò che io vorrei.
Per farmi capire meglio, ti allego una regola da te precedentemente inviatami, la seguente:
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
TotaleOmbre = OmbraSuperiore + OmbraInferiore
Ampiezza = range //ampiezza della candela (high - low)
// Regola 1
Regola1 = (TotaleOmbre <= (Ampiezza * 0.4)) AND (Corpo >= (Ampiezza * 0.35))
// Regola 2
Rialzo = (OmbraInferiore[1] >= (Ampiezza[1] * 0.60) AND OmbraInferiore[1] <= (Ampiezza[1] * 0.80))
Ribasso = (OmbraSuperiore[1] >= (Ampiezza[1] * 0.60) AND OmbraSuperiore[1] <= (Ampiezza[1] * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore[1] >= (Ampiezza[1] * 0.00)) AND (OmbraSuperiore[1] <= (Ampiezza[1] * 0.25))
Ribasso = Ribasso AND (OmbraInferiore[1] >= (Ampiezza[1] * 0.00)) AND (OmbraInferiore[1] <= (Ampiezza[1] * 0.25))
Rialzo = Rialzo AND (Corpo[1] >= (Ampiezza[1] * 0.05)) AND (Corpo[1] <= (Ampiezza[1] * 0.20))
Ribasso = Ribasso AND (Corpo[1] >= (Ampiezza[1] * 0.05)) AND (Corpo[1] <= (Ampiezza[1] * 0.20))
Regola2 = 0
IF Rialzo THEN
Regola2 = 1 //restituisce 1 per i pattern al RIALZO
ELSIF Ribasso THEN
Regola2 = 2 //restituisce 2 per i pattern al RIBASSO
ENDIF
// Risultato
Risultato = Regola1 * Regola2
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
La regola di cui sopra, risponde QUASI perfettamente a ciò che io vorrei: l’unico aspetto negativo è il seguente (ed è per questo che sto attendendo, appunto, un “perfezionamento”, ndr): NON “VEDE” QUANDO ENTRAMBE LE CANDELE DEL PATTERN SIANO RIBASSISTE O RIALZISTE…ma, al contrario, per avvisarmi è sufficiente ci sia una pin bar seguita da una candela Marubozu (o, al max, con “poche” ombre), A PRESCINDERE, PERO’, LA DIREZIONE DI ENTRAMBE SIA UGUALE O OPPOSTA!
A me, basterebbe “perfezionare” la regola di cui sopra.
P.S. Al contrario di cercare di “dimenticare” le regole vecchie, come volevamo fare, in questo caso mi riferisco ad una regola vecchia in quanto, usandola, mi trova (ad es stasera) figure giuste come per ENEL o DEUTSCHE BANK (FTSE MIB) che, la regola nuova NON trova (vd. allegati).
Spero averti fornito info sufficienti!
Grazie!
Ok, ma devo rimandare il tutto all’inizio della prossima settimana.
Và benissimo…! 🙂
Questa versione modificata del tuo post del 4 Gennaio dovrebbe fare ciò che chiedi, le candele devono avere lo stesso segno, o entrambe RIBASSISTE o entrambe RIALZISTE (viene restituito1=rialziste e 4=RIBASSISTE):
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
TotaleOmbre = OmbraSuperiore + OmbraInferiore
Ampiezza = range //ampiezza della candela (high - low)
// Regola 1
Regola1 = (TotaleOmbre <= (Ampiezza * 0.4)) AND (Corpo >= (Ampiezza * 0.35))
IF Regola1 AND (close < open) THEN
Regola1 = 2
ENDIF
// Regola 2
Rialzo = (OmbraInferiore[1] >= (Ampiezza[1] * 0.60) AND OmbraInferiore[1] <= (Ampiezza[1] * 0.80))
Ribasso = (OmbraSuperiore[1] >= (Ampiezza[1] * 0.60) AND OmbraSuperiore[1] <= (Ampiezza[1] * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore[1] >= (Ampiezza[1] * 0.00)) AND (OmbraSuperiore[1] <= (Ampiezza[1] * 0.25))
Ribasso = Ribasso AND (OmbraInferiore[1] >= (Ampiezza[1] * 0.00)) AND (OmbraInferiore[1] <= (Ampiezza[1] * 0.25))
Rialzo = Rialzo AND (Corpo[1] >= (Ampiezza[1] * 0.05)) AND (Corpo[1] <= (Ampiezza[1] * 0.20)) AND close > open
Ribasso = Ribasso AND (Corpo[1] >= (Ampiezza[1] * 0.05)) AND (Corpo[1] <= (Ampiezza[1] * 0.20)) AND close < open
Regola2 = 0
IF Rialzo THEN
Regola2 = 1
ELSIF Ribasso THEN
Regola2 = 2
ENDIF
// Risultato
Risultato = Regola1 * Regola2 //1=pattern RIALZISTA, 4=pattern RIBASSISTA
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
Direi perfetto, Roberto…ho guardato un pò al volo ma, a prima vista, sembra proprio fare ciò che ti avevo chiesto! 🙂
Molte grazie! 🙂
Ciao Roberto, come và?
Ti vorrei chiedere 2 regole, se puoi!
PRIMA REGOLA
Una regola (spero, ndr) piuttosto “semplice” per te, visto che si basa cmq sulla seguente regola, da te già precedentemente creata.
//le candele devono avere le seguenti dimensioni:
// l’ombra inferiore (nel caso di candela rialzista) o superiore (nel caso di candela ribassista) deve essere compresa tra il 60 e l’80% dell’intera lunghezza della candela
// il corpo della candela deve essere compreso tra il 5 ed il 25% dell’intera lunghezza della candela
// l’ombra superiore (nel caso di candela rialzista) o inferiore (nel caso di candela ribassista) deve essere compresa tra il 5 ed il 20% dell’intera lunghezza della candela
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
Ampiezza = range //ampiezza della candela (high - low)
Rialzo = (OmbraInferiore >= (Ampiezza * 0.60) AND OmbraInferiore <= (Ampiezza * 0.80))
Ribasso = (OmbraSuperiore >= (Ampiezza * 0.60) AND OmbraSuperiore <= (Ampiezza * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore >= (Ampiezza * 0.00) AND OmbraSuperiore <= (Ampiezza * 0.25))
Ribasso = Ribasso AND (OmbraInferiore >= (Ampiezza * 0.00) AND OmbraInferiore <= (Ampiezza * 0.25))
Rialzo = Rialzo AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20))
Ribasso = Ribasso AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20))
Risultato = 0
IF Rialzo THEN
Risultato = 1 //restituisce 1 per i pattern al RIALZO
ELSIF Ribasso THEN
Risultato = 2 //restituisce 2 per i pattern al RIBASSO
ENDIF
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
Con tale regola, come avrai potuto vedere, si può trovare la classica candela rialzista / ribassista tipo Hammer, con determinate proporzioni.
Ciò che ti chiedo di aggiungere alla suddetta regola è questo:
SECONDA REGOLA
La seconda regola che ti chiedo è uguale al 99% alla prima. L’unica cosa che ti chiedo è la seguente. Immagina io stia cercando le condizioni di cui alla prima regola in un GRAFICO SETTIMANALE..ma stasera è, ad es, lunedì. Come potrai capre, nel grafico settimanale, l’ultima candela che compare è inerente solo lunedì e quindi ha, finora, ben poco valore. Vorrei quindi creare una regola esattamente UGUALE ALLA REGOLA 1 ma che cerchi, quindi, il pattern di cui alla REGOLA 1 NON nelle ultime 2 candele, bensì nella penultima e terz’ultima candela, evitando quindi l’ultima di scarso valore.
Mi sono fatto comprendere??
Molte grazie ancora !!
Ciao!
Andrea
Regola 1/a (per distimguerla dalla vecchia regola 1):
//le candele devono avere le seguenti dimensioni:
// l’ombra inferiore (nel caso di candela rialzista) o superiore (nel caso di candela ribassista) deve essere compresa tra il 60 e l’80% dell’intera lunghezza della candela
// il corpo della candela deve essere compreso tra il 5 ed il 25% dell’intera lunghezza della candela
// l’ombra superiore (nel caso di candela rialzista) o inferiore (nel caso di candela ribassista) deve essere compresa tra il 5 ed il 20% dell’intera lunghezza della candela
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
Ampiezza = range //ampiezza della candela (high - low)
Rialzo = (OmbraInferiore >= (Ampiezza * 0.60) AND OmbraInferiore <= (Ampiezza * 0.80))
Ribasso = (OmbraSuperiore >= (Ampiezza * 0.60) AND OmbraSuperiore <= (Ampiezza * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore >= (Ampiezza * 0.00) AND OmbraSuperiore <= (Ampiezza * 0.25))
Ribasso = Ribasso AND (OmbraInferiore >= (Ampiezza * 0.00) AND OmbraInferiore <= (Ampiezza * 0.25))
Rialzo = Rialzo AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20)) AND (close <= Average[100,1](close)) AND (close >= Average[200,1](close))
Ribasso = Ribasso AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20)) AND (close >= Average[100,1](close)) AND (close <= Average[200,1](close))
Risultato = 0
IF summation[2](Rialzo) = 2 THEN
Risultato = 1 //restituisce 1 per i pattern al RIALZO
ELSIF summation[2](Ribasso) = 2 THEN
Risultato = 2 //restituisce 2 per i pattern al RIBASSO
ENDIF
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
Regola 2/a:
//le candele devono avere le seguenti dimensioni:
// l’ombra inferiore (nel caso di candela rialzista) o superiore (nel caso di candela ribassista) deve essere compresa tra il 60 e l’80% dell’intera lunghezza della candela
// il corpo della candela deve essere compreso tra il 5 ed il 25% dell’intera lunghezza della candela
// l’ombra superiore (nel caso di candela rialzista) o inferiore (nel caso di candela ribassista) deve essere compresa tra il 5 ed il 20% dell’intera lunghezza della candela
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
Ampiezza = range //ampiezza della candela (high - low)
Rialzo = (OmbraInferiore >= (Ampiezza * 0.60) AND OmbraInferiore <= (Ampiezza * 0.80))
Ribasso = (OmbraSuperiore >= (Ampiezza * 0.60) AND OmbraSuperiore <= (Ampiezza * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore >= (Ampiezza * 0.00) AND OmbraSuperiore <= (Ampiezza * 0.25))
Ribasso = Ribasso AND (OmbraInferiore >= (Ampiezza * 0.00) AND OmbraInferiore <= (Ampiezza * 0.25))
Rialzo = Rialzo AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20)) AND (close <= Average[100,1](close)) AND (close >= Average[200,1](close))
Ribasso = Ribasso AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20)) AND (close >= Average[100,1](close)) AND (close <= Average[200,1](close))
Risultato = 0
IF summation[2](Rialzo[1]) = 2 THEN
Risultato = 1 //restituisce 1 per i pattern al RIALZO
ELSIF summation[2](Ribasso[1]) = 2 THEN
Risultato = 2 //restituisce 2 per i pattern al RIBASSO
ENDIF
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
[attachment file=67951]
Ciao, molte grazie della risposta.
Tuttavia credo sinceramente vi sia qualche cosa che non vada in entrambe le formule.
Facendo il ProScreener, sia giornaliero sia settimanale, NON ha trovato NULLA ….se non azioni con grafico…diciamo PIATTO (Vd. allegato), ad es con le ultime candele in cui prezzo di apertura, chiusura, minimo e massimo coincidono.
Vi è la possibilità di migliorare qualcosa? Molte grazie!
Perché un prezzo sia, contemporaneamente, < Ema100 e > Ema200… si, il prezzo deve essere abbastanza congestionato!
Grazie della regola anche se, onestamente….mi SEMBRA (ripeto, SEMBRA, ndr..ammetto dovere controllare..quando trovo tempo.. 🙂 )non rispecchi in toto ciò che chiedevo..mi sembra alquanto strano non riesca a trovare tra MME 100 e 200 ..distanza che, spesso, è piuttosto ampia.
Ti chiedo allora gentilmente se potresti SEMPLIFICARE ..
Basandoti sempre sulla tua seguente regola
//le candele devono avere le seguenti dimensioni:
// l’ombra inferiore (nel caso di candela rialzista) o superiore (nel caso di candela ribassista) deve essere compresa tra il 60 e l’80% dell’intera lunghezza della candela
// il corpo della candela deve essere compreso tra il 5 ed il 25% dell’intera lunghezza della candela
// l’ombra superiore (nel caso di candela rialzista) o inferiore (nel caso di candela ribassista) deve essere compresa tra il 5 ed il 20% dell’intera lunghezza della candela
Corpo = abs(open - close) //grandezza del corpo
OmbraSuperiore = high - max(open,close) //grandezza ombra superiore
OmbraInferiore = min(open,close) - low //grandezza ombra inferiore
Ampiezza = range //ampiezza della candela (high - low)
Rialzo = (OmbraInferiore >= (Ampiezza * 0.60) AND OmbraInferiore <= (Ampiezza * 0.80))
Ribasso = (OmbraSuperiore >= (Ampiezza * 0.60) AND OmbraSuperiore <= (Ampiezza * 0.80))
Rialzo = Rialzo AND (OmbraSuperiore >= (Ampiezza * 0.00) AND OmbraSuperiore <= (Ampiezza * 0.25))
Ribasso = Ribasso AND (OmbraInferiore >= (Ampiezza * 0.00) AND OmbraInferiore <= (Ampiezza * 0.25))
Rialzo = Rialzo AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20))
Ribasso = Ribasso AND (Corpo >= (Ampiezza * 0.05)) AND (Corpo <= (Ampiezza * 0.20))
Risultato = 0
IF Rialzo THEN
Risultato = 1 //restituisce 1 per i pattern al RIALZO
ELSIF Ribasso THEN
Risultato = 2 //restituisce 2 per i pattern al RIBASSO
ENDIF
SCREENER [Risultato] (Risultato AS "Rialzo/Ribasso")
..ti chiedo se puoi creare 2 regole:
STOP.
Vorrei quindi semplificare la regola, eliminando il parametro in base a cui il prezzo debba essere compreso tra le 2 MME.
Molte grazie ciao
ProsSreener candele rialziste / ribassiste come le HAMMER, o le SPIKE
This topic contains 60 replies,
has 2 voices, and was last updated by
robertogozzi
2 years, 10 months ago.
| Forum: | ProScreener: Scansione Mercati & Screener |
| Language: | Italian |
| Started: | 11/15/2017 |
| Status: | Active |
| Attachments: | 20 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.