Nos partenaires et nous-mêmes utilisons différentes technologies, telles que les cookies, pour personnaliser les contenus et les publicités, proposer des fonctionnalités sur les réseaux sociaux et analyser le trafic. Merci de cliquer sur le bouton ci-dessous pour donner votre accord. Vous pouvez changer d’avis et modifier vos choix à tout moment. Informations RGPD
-- Indicateur Bougie Flottante v0.4 -- Bastien Faure beobast@gmail.com -- Cet indicateur détecte les bougies flottantes local first, source, period, deviation, BB, bodySize, up, down; function Init() indicator:name("Indicateur Bougie Flottante"); indicator:description("Detecte les bougies flottantes"); indicator:requiredSource(core.Bar); indicator:type(core.Indicator); indicator.parameters:addInteger("period", "Nombre de periodes des BB", "Nombre de periodes des BB", 20, 1, 10000); indicator.parameters:addDouble("deviation", "Ecart-type des BB", "Ecart-type des BB", 2.0, 0.0001, 1000.0); indicator.parameters:addInteger("bodySize", "% du corps de la bougie en dehors des BB", "% du corps de la bougie devant etre en dehors des BB", 90, 1, 100); indicator.parameters:addInteger("size", "Taille", "Taille du drapeau dessinee", 14); end function Prepare(nameOnly) source = instance.source; period = instance.parameters.period; deviation = instance.parameters.deviation; bodySize = instance.parameters.bodySize / 100; first = source:first() + period; local name = profile:id() .. "(" .. source:name() .. ", " .. period .. ", " .. deviation .. ")"; local size = instance.parameters.size; instance:name(name); if nameOnly then return; end BB = core.indicators:create("BB", source, period, deviation); up = instance:createTextOutput("Up", "Up", "Wingdings", size, core.H_Center, core.V_Top, core.rgb(0, 0, 0), first); down = instance:createTextOutput("Down", "Down", "Wingdings", size, core.H_Center, core.V_Bottom, core.rgb(0, 0, 0), first); end function Update(period, mode) if period <= first then return; end BB:update(mode); local top = BB.TL[period]; local bottom = BB.BL[period]; local close = source.close[period]; local open = source.open[period]; local max = math.max(open, close); local min = math.min(open, close); local range = math.abs(open - close); if (max > top and ((max - top) / range) > bodySize) then up:set(period, source.high[period], "\79", ""); elseif (min < bottom and ((bottom - min) / range) > bodySize) then down:set(period, source.low[period], "\79", ""); else up:setNoData(period); down:setNoData(period); end end