Vorrei una scansione che mi fornisce le candele doji su delle mie liste grazie
Lo screener che ti ho creato analizza le candele di tutti i strumenti presenti nelle tue liste e seleziona solo quelle che formano un pattern Doji. Il Doji è una candela particolare in cui il prezzo di apertura e quello di chiusura sono praticamente identici, il che crea un corpo molto piccolo o quasi inesistente.
Lo screener riconosce quattro varianti di Doji. Il Doji Standard ha ombre simili sia sopra che sotto e indica indecisione generale del mercato. Il Dragonfly Doji ha un’ombra lunga verso il basso e quasi nessuna ombra in alto, ed è considerato un segnale potenziale di inversione rialzista. Il Gravestone Doji è il contrario, con un’ombra lunga verso l’alto e quasi nulla in basso, e suggerisce una possibile inversione ribassista. Il Long-legged Doji ha ombre lunghe sia sopra che sotto e indica una forte indecisione o volatilità durante la seduta.
Il parametro principale da regolare è DojiPercent, impostato di default a 5. Questo valore rappresenta la percentuale massima che il corpo della candela può occupare rispetto al range totale della candela. Se lo abbassi a 3 lo screener sarà più severo e troverà solo i Doji più puri. Se lo alzi a 8 o 10 sarà più permissivo e troverà più risultati.
Nello screener vengono mostrate anche alcune colonne aggiuntive come la percentuale del corpo, il range totale della candela e la lunghezza delle ombre superiore e inferiore, così puoi vedere subito di che tipo di Doji si tratta senza aprire il grafico.
// ============================================
// Screener Candele DOJI
// Identifica tutti i principali pattern Doji:
// - Doji standard
// - Dragonfly Doji
// - Gravestone Doji
// - Long-legged Doji
// ============================================
// --- Parametro regolabile ---
DojiPercent = 5 // % massima del corpo rispetto al range totale della candela
// --- Calcolo del range e del corpo ---
iRange = high - low
Body = abs(close - open)
UpperShadow = high - max(close, open)
LowerShadow = min(close, open) - low
// --- Condizione base: il corpo deve essere molto piccolo rispetto al range ---
// Evita divisione per zero
isDoji = (irange > 0) and (body <= irange * DojiPercent / 100)
// --- Doji Standard: ombre simili sopra e sotto ---
isStandardDoji = isDoji and (uppershadow > 0) and (lowershadow > 0) and (abs(uppershadow - lowershadow) <= irange * 0.3)
// --- Dragonfly Doji: ombra lunga in basso, ombra superiore minima ---
isDragonfly = isDoji and (lowershadow >= irange * 0.6) and (uppershadow <= irange * 0.1)
// --- Gravestone Doji: ombra lunga in alto, ombra inferiore minima ---
isGravestone = isDoji and (uppershadow >= irange * 0.6) and (lowershadow <= irange * 0.1)
// --- Long-legged Doji: ombre lunghe sia sopra che sotto ---
isLongLegged = isDoji and (uppershadow >= irange * 0.3) and (lowershadow >= irange * 0.3)
// --- Segnale finale: qualsiasi tipo di Doji ---
Signal = isStandardDoji OR isDragonfly OR isGravestone OR isLongLegged
SCREENER[Signal] (body / range * 100 AS "Corpo %", Range AS "Range", uppershadow AS "Ombra Alta", lowershadow AS "Ombra Bassa")
Mille grazie , vorrei profittare della sua disponibilità per chiedere se è possibile fare una ricerca delle doji per il long (aggiungendo nella ricerca che il prezzo sia minore della media a 20 periodi e maggiore della media a 50 periodi) e l’altro per lo short (aggiungendo nella ricerca che il prezzo sia maggiore della media a 20 periodi e minore della media a 50 periodi .
Ancora Grazie Saluti
@achille2, puoi ottenere esattamente quello che chiedi creando due screener distinti:
- uno per i setup Long (prezzo < media 20 e > media 50)
- uno per i setup Short (prezzo > media 20 e < media 50)
Qui sotto trovi il codice completo del tuo screener Doji originale, esteso con le condizioni sulle medie mobili a 20 e 50 periodi.
Screener DOJI per setup Long
// ============================================
// Screener Candele DOJI - Setup LONG
// ============================================
// --- Parametro regolabile ---
DojiPercent = 5 // % massima del corpo rispetto al range totale della candela
// --- Calcolo del range e del corpo ---
iRange = high - low
Body = abs(close - open)
UpperShadow = high - max(close, open)
LowerShadow = min(close, open) - low
// --- Condizione base: il corpo deve essere molto piccolo rispetto al range ---
// Evita divisione per zero
isDoji = (iRange > 0) AND (Body <= iRange * DojiPercent / 100)
// --- Doji Standard: ombre simili sopra e sotto ---
isStandardDoji = isDoji AND (UpperShadow > 0) AND (LowerShadow > 0) AND (abs(UpperShadow - LowerShadow) <= iRange * 0.3)
// --- Dragonfly Doji: ombra lunga in basso, ombra superiore minima ---
isDragonfly = isDoji AND (LowerShadow >= iRange * 0.6) AND (UpperShadow <= iRange * 0.1)
// --- Gravestone Doji: ombra lunga in alto, ombra inferiore minima ---
isGravestone = isDoji AND (UpperShadow >= iRange * 0.6) AND (LowerShadow <= iRange * 0.1)
// --- Long-legged Doji: ombre lunghe sia sopra che sotto ---
isLongLegged = isDoji AND (UpperShadow >= iRange * 0.3) AND (LowerShadow >= iRange * 0.3)
// --- Medie mobili ---
MM20 = Average[20](close)
MM50 = Average[50](close)
// --- Condizione trend per il LONG ---
// Prezzo minore della media a 20 periodi e maggiore della media a 50 periodi
LongFilter = (close < MM20) AND (close > MM50)
// --- Segnale finale: qualsiasi tipo di Doji + filtro LONG ---
Signal = (isStandardDoji OR isDragonfly OR isGravestone OR isLongLegged) AND LongFilter
SCREENER[Signal] (Body / iRange * 100 AS "Corpo %", iRange AS "Range", UpperShadow AS "Ombra Alta", LowerShadow AS "Ombra Bassa", MM20 AS "MM20", MM50 AS "MM50")
Screener DOJI per setup Short
// ============================================
// Screener Candele DOJI - Setup SHORT
// ============================================
// --- Parametro regolabile ---
DojiPercent = 5 // % massima del corpo rispetto al range totale della candela
// --- Calcolo del range e del corpo ---
iRange = high - low
Body = abs(close - open)
UpperShadow = high - max(close, open)
LowerShadow = min(close, open) - low
// --- Condizione base: il corpo deve essere molto piccolo rispetto al range ---
// Evita divisione per zero
isDoji = (iRange > 0) AND (Body <= iRange * DojiPercent / 100)
// --- Doji Standard: ombre simili sopra e sotto ---
isStandardDoji = isDoji AND (UpperShadow > 0) AND (LowerShadow > 0) AND (abs(UpperShadow - LowerShadow) <= iRange * 0.3)
// --- Dragonfly Doji: ombra lunga in basso, ombra superiore minima ---
isDragonfly = isDoji AND (LowerShadow >= iRange * 0.6) AND (UpperShadow <= iRange * 0.1)
// --- Gravestone Doji: ombra lunga in alto, ombra inferiore minima ---
isGravestone = isDoji AND (UpperShadow >= iRange * 0.6) AND (LowerShadow <= iRange * 0.1)
// --- Long-legged Doji: ombre lunghe sia sopra che sotto ---
isLongLegged = isDoji AND (UpperShadow >= iRange * 0.3) AND (LowerShadow >= iRange * 0.3)
// --- Medie mobili ---
MM20 = Average[20](close)
MM50 = Average[50](close)
// --- Condizione trend per lo SHORT ---
// Prezzo maggiore della media a 20 periodi e minore della media a 50 periodi
ShortFilter = (close > MM20) AND (close < MM50)
// --- Segnale finale: qualsiasi tipo di Doji + filtro SHORT ---
Signal = (isStandardDoji OR isDragonfly OR isGravestone OR isLongLegged) AND ShortFilter
SCREENER[Signal] (Body / iRange * 100 AS "Corpo %", iRange AS "Range", UpperShadow AS "Ombra Alta", LowerShadow AS "Ombra Bassa", MM20 AS "MM20", MM50 AS "MM50")
Logica in breve:
- La parte iniziale è identica al tuo screener: calcola iRange, Body, UpperShadow, LowerShadow e riconosce i quattro tipi di Doji usando isStandardDoji, isDragonfly, isGravestone, isLongLegged.
- Si aggiungono due medie mobili semplici: MM20 = Average[20](close) e MM50 = Average[50](close).
- Per il Long si usa la condizione: close < MM20 e close > MM50.
- Per lo Short la condizione opposta: close > MM20 e close < MM50.
- Il segnale finale combina il pattern Doji con il filtro di trend: Signal = (qualunque Doji) AND filtroLong/Short.