Hai 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:
Rialzista = open < close
Ribassista = open > close
Corpo = abs(close - open)
OmbraSup = high - max(open,close)
OmbraInf = min(open,close) - low
se vuoi trovare il totale delle ombre puoi scrivere:
OmbraTot = OmbraSup + OmbraInf
eccetera…
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ì:
x1 = Corpo > Corpo[1] //Corpo attuale > del precedente
x2 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente Ribassista
BullishEngulfing = x1 AND x2 //Vera quando entrambe le condizioni sono vere
Nel tuo esempio, invece, dovresti definirlo così:
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
Per trovare quelle verificatesi entro le ultime 10 candele si scrive:
Cond1 = summation[10](BullishEngulfing) //Condizione vera se il risultato è > 0
Per la condizione relativa alla media:
Cond2 = close > average[200,0](close)
Assemblando tutte le parti insieme ecco lo screener completo:
Rialzista = open < close
Ribassista = open > close
Corpo = abs(close - open)
//OmbraSup = high - max(open,close)
//OmbraInf = min(open,close) - low
//
// ENGULFING - Mia definizione:
x1 = Corpo > Corpo[1] //Corpo attuale > del precedente
x2 = Rialzista AND Ribassista[1] //Candela attuale rialzista e precedente Ribessists
BullishEngulfing = 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 è > 0
Cond2 = close > average[200,0](close)
Risultato = Cond1 AND Cond2
SCREENER[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.