Aiuto bullish engulfing in periodo limitato
Forums › ProRealTime forum Italiano › Supporto ProScreener › Aiuto bullish engulfing in periodo limitato
- This topic has 4 replies, 2 voices, and was last updated 5 years ago by robertogozzi.
Tagged: Engulfing
-
-
02/16/2019 at 12:36 AM #91498
Ciao a tutti,
pur usando da diverso tempo prorealtime, mi sto avvicinando solo ora al mondo del linguaggio prt.
Non essendo esperto avrei bisogno di una mano per creare un codice con le seguenti caratteristiche:
-ricerca di un pattern di bullish engulfing classico (apertura candela nuova inferiore a minimo candela precedente, chiusura candela nuova superiore a massimo candela precedente)
-limite temporale di 10 candele (onde evitare di trovare segnali molto vecchi)
-vicinanza a media ponderata di 200 sessioni (nel caso non sia possibile decodificare la prossimitá alla media puó andar bene che il prezzo si trovi sopra la media ponderata 200).
Per ultima cosa vorrei togliermi una curiositá: esistono codici che identificano pattern di gruppi di candele, come bandiere e triangoli?
Grazie in anticipo se qualcuno potrá aiutarmi e buon trading a tutti
Alessandro
02/16/2019 at 6:06 AM #91500Per favore aggiorna il tuo Paese nel profilo. Grazie.
02/16/2019 at 7:36 AM #91503Hai scritto una definizione di ENGULFING che non è quella che è generalmente si da, ad esempio IG (https://www.ig.com/it/gli-engulfing) dice “Chiariamo subito un dubbio: nell’analisi candlestick classica quando parliamo di engulfing dobbiamo considerare solo i corpi e non anche le shadows“, anche INVESTOPEDIA (https://www.investopedia.com/terms/b/bullishengulfingpattern.asp) dice “the body of which completely overlaps or engulfs the body of the previous day’s candlestick“. Nulla vieta, tuttavia, di dargli qualunque altra definizione, magari comprendendo anche le ombre.
Ti posto il codice per determinare le singole parti di una candela, sta a te usarle come preferisci:
12345Rialzista = open < closeRibassista = open > closeCorpo = abs(close - open)OmbraSup = high - max(open,close)OmbraInf = min(open,close) - lowse vuoi trovare il totale delle ombre puoi scrivere:
1OmbraTot = OmbraSup + OmbraInfeccetera…
Il range (la grandezza della candela è data dal Massimo – Minimo, ma è inutile stare a calcolarla in quanto esiste giù la costante predefinita RANGE che ti restituisce questo valore.
Nel mio esempio il Bullish Engulfing si scriverebbe così:
123x1 = Corpo > Corpo[1] //Corpo attuale > del precedentex2 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente RibassistaBullishEngulfing = x1 AND x2 //Vera quando entrambe le condizioni sono vereNel tuo esempio, invece, dovresti definirlo così:
1234x1 = Open < low[1] //Apertura inferiore al minimo precedentex2 = close > high[1] //Chiusura superiore al massimo precedentex3 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente ribassistaBullishEngulfing = x1 AND x2 AND x3 //Vera quanto tutte e tre le condizioni sono soddisfattePer trovare quelle verificatesi entro le ultime 10 candele si scrive:
1Cond1 = summation[10](BullishEngulfing) //Condizione vera se il risultato è > 0Per la condizione relativa alla media:
1Cond2 = close > average[200,0](close)Assemblando tutte le parti insieme ecco lo screener completo:
123456789101112131415161718192021Rialzista = open < closeRibassista = open > closeCorpo = abs(close - open)//OmbraSup = high - max(open,close)//OmbraInf = min(open,close) - low//// ENGULFING - Mia definizione:x1 = Corpo > Corpo[1] //Corpo attuale > del precedentex2 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente RibessistsBullishEngulfing = x1 AND x2 //Vera quando entrambe le condizioni sono vere//// ENGULFING - Tua definizione://x1 = Open < low[1] //Apertura inferiore al minimo precedente//x2 = close > high[1] //Chiusura superiore al massimo precedente//x3 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente ribassista//BullishEngulfing = x1 AND x2 AND x3 //Vera quanto tutte e tre le condizioni sono soddisfatte//Cond1 = summation[10](BullishEngulfing) //Condizione vera se il risultato è > 0Cond2 = close > average[200,0](close)Risultato = Cond1 AND Cond2SCREENER[Risultato]Questa versione è con la mia definizione, se vuoi usarlo con la tua devi commentare le righe 3, 8, 9 e 10 e togliere i commenti dalle righe 13-16.
Ovviamente 10 candele sono molte e troverai un sacco di risultati vecchi. Tieni presente che uno screener fa scansioni di mercato LIVE, quindi andare a trovare qualcosa che può essere accaduto 10 candele prima non è efficace, ormai il segnale probabilmente è partito.
02/18/2019 at 1:17 PM #91632Ciao Roberto,
grazie mille per il prezioso aiuto, effettivamente con 10 candele escono troppi risultati giá passati e non piú utili, alla fine ho sostituito il valore con 3 candele.
Finchè ci sono ne approfitto per chiederti anche un’informazione tecnica: su prorealtime una volta che apro i grafici dei titoli trovati con lo screener devo andare a cercare io manualmente i pattern sul grafico. Sai se esiste un modo per far sí che il grafico mi evidenzi automaticamente il pattern cercato? (su alcuni video ho visto che esiste una specie di indicatore che disegna un picco in corrispondenza della candela cercata con lo screener, solo che al momento non sono ancora riuscito a capire di quale strumento si tratta).
Grazie ancora per l’aiuto
Un saluto
02/18/2019 at 3:46 PM #91648Esiste questo indicatore nella libreria: https://www.prorealcode.com/prorealtime-indicators/candlestick-patterns-recognition/.
Poi ci sono queste aggiunte: https://www.prorealcode.com/topic/mt4-candlesticks-recognizer-to-be-converted-to-prt-code/page/2/#post-26992.
Ovviamente se fai uno screener basato su questi il TUO codice nello screener deve essere IDENTICO a quello dell’indicatore, altrimenti i risultati non combaciano, esempio per AbandonedBabyTop:
1AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high) AND TrendUp[3]Ricordati di mettere, all’inizio dello screener, anche il codice di quelle parti generiche che servono per tutti i pattern:123456789101112131415161718192021222324252627282930313233// Trend direction identification//(choose 0=No Trend check, 1=MACD, 2=SAR[default], 3=Directional Movement, 4=Moving Averagea crossing)// TDS=2body=close-openabody=abs(body)if range>0 thenratio=abody/rangeelseratio=0endifmiddle=(open+close)/2bodytop=max(open, close)bodybottom=min(open, close)shadowtop=high-bodytopshadowbottom=bodybottom-lowlongcandle= (ratio>0.6)//Trend Detectionif TDS=0 thenTrendUp=1TrendDown=1elsif TDS=1 thenTrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)elsif TDS=2 thenTrendUp=(SAR[0.02,0.02,0.2]<low)TrendDown=(SAR[0.02,0.02,0.2]>high)elsif TDS=3 thenTrendUp=(ADX[14]>23 AND DI[14](close)>0)TrendDown=(ADX[14]>23 AND DI[14](close)<0)elsif TDS=4 thenTrendUp=(Average[3](close)>Average[12](close))TrendDown=(Average[3](close)<Average[12](close))endifComunque quando vai ad eseguire lo screener ti verranno segnalate variabili mancanti che dovrai aggiungere o variabili in eccesso che dovrai togliere o commentare.
-
AuthorPosts