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 Double Bougie v0.4 -- Bastien Faure beobast@gmail.com -- Double Bougie Haussière = 2 bougies consécutives haussières dont au moins une avec un corps > 3 points -- Double Bougie Baissière = 2 bougies consécutives baissières dont au moins une avec un corps > 3 points local color = core.colors(); local first, source, open, close, high, low, colorCandles, flagCandles, up, down; function Init() indicator:name("Indicateur Double Bougie"); indicator:description("Colorie les double bougies avec impulsion"); indicator:requiredSource(core.Bar); indicator:type(core.Indicator); indicator.parameters:addDouble("impulse", "Seuil Impulsion", "Taille minimale du corps d'une bougie impulsive", 3.0); indicator.parameters:addBoolean("colorCandles", "Colorier les doubles bougies", "Colorier les double bougies", true); indicator.parameters:addColor("colorUp", "Couleur Double Bougie Haussiere", "Couleur d'une double bougie haussiere", color.Green); indicator.parameters:addColor("colorDown", "Couleur Double Bougie Baissiere", "Couleur d'une double bougie baissiere", color.OrangeRed); indicator.parameters:addColor("colorDefaultUp", "Couleur defaut bougie haussiere", "Couleur par defaut d'une bougie haussiere", core.COLOR_UPCANDLE); indicator.parameters:addColor("colorDefaultDown", "Couleur defaut bougie bassiere", "Couleur par defaut d'une bougie baissiere", core.COLOR_DOWNCANDLE); indicator.parameters:addBoolean("flagCandles", "Flecher les doubles bougies", "Flecher les double bougies", true); indicator.parameters:addInteger("size", "Taille de la fleche", "Taille de la fleche dessinee", 14); end function Prepare(nameOnly) source = instance.source; first = source:first()+2; local size = instance.parameters.size; local name = profile:id() .. "(" .. source:name() .. ")"; instance:name(name); if nameOnly then return; end colorCandles = instance.parameters.colorCandles; flagCandles = instance.parameters.flagCandles; if colorCandles then open = instance:addStream("open", core.Line, name, "open", color.Black, first) high = instance:addStream("high", core.Line, name, "high", color.Black, first) low = instance:addStream("low", core.Line, name, "low", color.Black, first) close = instance:addStream("close", core.Line, name, "close", color.Black, first) instance:createCandleGroup("", "ColorCandle", open, high, low, close); end if flagCandles then up = instance:createTextOutput("", "Up", "Wingdings", size, core.H_Center, core.V_Top, instance.parameters.colorUp, first); down = instance:createTextOutput("", "Down", "Wingdings", size, core.H_Center, core.V_Bottom, instance.parameters.colorDown, first); end end function Update(period) if period <= first then return; end local open0, close0, open1, close1 = source.open[period], source.close[period], source.open[period - 1], source.close[period - 1]; local impulse = instance.parameters.impulse; local doubleUp = close0 > open0 and close1 > open1 and ((close0 - open0) >= impulse or (close1 - open1) >= impulse); local doubleDown = close0 < open0 and close1 < open1 and ((open0 - close0) >= impulse or (open1 - close1) >= impulse); if doubleUp or doubleDown then if colorCandles then open[period], close[period], high[period], low[period] = open0, close0, source.high[period], source.low[period]; open:setColor(period, (doubleUp and instance.parameters.colorUp or instance.parameters.colorDown)); end if flagCandles then if doubleUp then up:set(period, source.high[period], "\159", ""); else down:set(period, source.low[period], "\159", ""); end end else if colorCandles then open[period] = nil; end if flagCandles then up:setNoData(period); down:setNoData(period); end end end