Bonjour,
Je recherche un screener pour détecter les double Bottom avec les conditions suivantes:
Les cours sont au dessus de la M200 Croissante et dont les échanges sont supérieur à 150 000€ (Capitalisation).
Proximité d’un support si possible.
Merci par avance
Bonjour,
Avant de coder j’ai pris quelques décisions par défaut. Je les détaille car chacune peut être ajustée en modifiant les paramètres en tête de code :
- Volume minimum 150 000€ : interprété comme volume échangé quotidien (
Volume × Close), pas capitalisation boursière — ce chiffre serait ridiculement faible pour une capitalisation. - Double Bottom : détection par pivots avec période 5 (5 barres de chaque côté). Confirmation 5 barres après le second creux.
- Tolérance entre les deux creux : 2%.
- Séparation minimum entre creux : 10 barres (un W trop serré n’est pas un W).
- Ancienneté maximum du premier creux : 60 barres.
- Fraîcheur du second creux : maximum 15 barres depuis sa confirmation (motif encore “vivant”).
- Proximité du support : cours actuel entre
creux × 0.97 et creux × 1.05. C’est ce qui capture la “proximité d’un support” — on n’attend pas la cassure du neckline, on veut le prix encore près de la zone.
Filtres complémentaires : clôture au-dessus de la MM200 et MM200 croissante (pente positive sur 5 barres).
Code :
//PRC_Double-Bottom-Support-Screener
//Double Bottom près d'un support, au-dessus d'une MM200 croissante, avec liquidité minimum
//Ivan Gonzalez @ www.prorealcode.com
// --- Paramètres (modifiables, pas de DEFPARAM en screener) ---
prd = 5 // barres de chaque côté du pivot
tolPct = 0.02 // tolérance entre les deux creux (2%)
freshMax = 15 // ancienneté max du 2nd creux depuis confirmation
sepMin = 10 // séparation min entre les deux creux (en barres)
windowMax = 60 // ancienneté max du 1er creux
proxAbove = 0.05 // distance max du cours AU-DESSUS du creux (5%)
proxBelow = 0.03 // perforation max EN DESSOUS du creux (3%)
volMin = 150000 // volume monétaire quotidien minimum
// --- Détection pivot low symétrique ---
// La barre [prd] est la plus basse sur fenêtre 2*prd+1 -> pivot confirmé prd barres plus tard
isPivotLow = low[prd] <= lowest[(prd)*2+1](low)
if isPivotLow then
$pivLowY[lastset($pivLowY)+1] = low[prd]
$pivLowX[lastset($pivLowX)+1] = barindex[prd]
endif
// --- Comparaison des deux derniers pivots ---
n = lastset($pivLowY)
if n >= 2 then
pl1 = $pivLowY[n-1]
pl1x = $pivLowX[n-1]
pl2 = $pivLowY[n]
pl2x = $pivLowX[n]
similar = abs(pl1 - pl2) / pl1 <= tolPct
fresh = (barindex - pl2x) <= freshMax
separation = (pl2x - pl1x) >= sepMin
notTooOld = (barindex - pl1x) <= windowMax
nearSupport = close >= pl2 * (1 - proxBelow) and close <= pl2 * (1 + proxAbove)
else
similar = 0
fresh = 0
separation = 0
notTooOld = 0
nearSupport = 0
pl2 = 0
endif
// --- Filtres tendance et liquidité ---
ma200 = average[200](close)
aboveMA = close > ma200
maRising = ma200 > ma200[5]
liquid = average[20](volume) * close >= volMin
cond = similar and fresh and separation and notTooOld and nearSupport and aboveMA and maRising and liquid
SCREENER[cond](pl2 AS "Support", (close-pl2)/pl2*100 AS "% s/Support", average[20](volume)*close AS "Vol €")