Hébergeur de fichiers indépendant

DoubleBougie.lua

À propos

Type de fichier
Fichier LUA de 4 Ko (text/plain)
Confidentialité
Fichier public, envoyé le 27 février 2019 à 11:10, depuis l'adresse IP 92.171.x.x (France)
Sécurité
Ne contient aucun Virus ou Malware connus - Dernière vérification: hier
Statistiques
La présente page de téléchargement a été vue 57 fois depuis l'envoi du fichier
Page de téléchargement

Aperçu du fichier


-- 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



Partager le fichier

Télécharger DoubleBougie.lua

Télécharger le fichier (4 Ko)