Hébergeur de fichiers indépendant

BBNarrow.lua

À propos

Type de fichier
Fichier LUA de 4 Ko (text/plain)
Confidentialité
Fichier public, envoyé le 13 février 2019 à 18:43, depuis l'adresse IP 88.167.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 28 fois depuis l'envoi du fichier
Page de téléchargement

Aperçu du fichier


-- Indicateur BB Narrow v0.3
-- Bastien Faure beobast@gmail.com
-- Cet indicateur colorie les lignes de BB lorsque celles ci sont étroites, c'est à dire avec une largeur inférieure à un certain seuil (15 points par défaut)

local first, source, period, deviation, BB, hideAverage, BB_Top, BB_Bottom, BB_Middle;

function Init()
    indicator:name("Indicateur BB Narrow");
    indicator:description("Colorie les lignes de BB dans les zones etroites");
    indicator:requiredSource(core.Bar);
    indicator:type(core.Indicator);
    indicator.parameters:addGroup("Calcul");
    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:addGroup("Style");
    indicator.parameters:addColor("bandsColor", "Couleur des lignes en zone etroite", "Couleur des lignes hautes et basses en zone etroite", core.rgb(0, 0, 0));
    indicator.parameters:addInteger("bandsWidth", "Largeur des lignes en zone etroite", "Largeur des lignes hautes et basses en zone etroite", 2, 1, 5);
    indicator.parameters:addInteger("bandsStyle", "Style des lignes en zone etroite", "Style des lignes hautes et basses en zone etroite", core.LINE_SOLID);
    indicator.parameters:setFlag("bandsStyle", core.FLAG_LINE_STYLE);
	indicator.parameters:addBoolean("hideAverage", "Masquer la ligne moyenne en zone etroite", "Masquer la ligne moyenne en zone etroite", false);
    indicator.parameters:addColor("averageColor", "Couleur de la ligne moyenne en zone etroite", "Couleur de la ligne moyenne en zone etroite", core.rgb(0, 0, 0));
    indicator.parameters:addInteger("averageWidth", "Largeur de la ligne moyenne en zone etroite", "Largeur de la ligne moyenne en zone etroite", 2, 1, 5);
    indicator.parameters:addInteger("averageStyle", "Style de la ligne moyenne en zone etroite", "Style de la ligne moyenne en zone etroite", core.LINE_SOLID);
    indicator.parameters:setFlag("averageStyle", core.FLAG_LINE_STYLE);
	indicator.parameters:addDouble("maxWidth", "Seuil des bandes etroites", "Les lignes des BB seront coloriees si la largeur des BB est inferieure a ce seuil", 15.0, 0.0, 100.0);
end

function Prepare(nameOnly)
    source = instance.source;
    period = instance.parameters.period;
    deviation = instance.parameters.deviation;
	
    first = source:first() + period;
    local name = profile:id() .. "(" .. source:name() .. ", " .. period .. ", " .. deviation .. ")";
    instance:name(name);
    if nameOnly then return; end
	
    BB = core.indicators:create("BB", source, period, deviation);
    BB_Top = instance:addStream("BB_Top", core.Line, name .. ".Top", "TL", instance.parameters.bandsColor, first);
	BB_Top:setWidth(instance.parameters.bandsWidth);
    BB_Top:setStyle(instance.parameters.bandsStyle);
	BB_Bottom = instance:addStream("BB_Bottom", core.Line, name .. ".Bottom", "BL", instance.parameters.bandsColor, first);
	BB_Bottom:setWidth(instance.parameters.bandsWidth);
    BB_Bottom:setStyle(instance.parameters.bandsStyle);
	
	if not instance.parameters.hideAverage then
		BB_Middle = instance:addStream("BB_Middle", core.Line, name .. ".Middle", "AL", instance.parameters.averageColor, first);
		BB_Middle:setWidth(instance.parameters.averageWidth);
		BB_Middle:setStyle(instance.parameters.averageStyle);
	end
end

function Update(period, mode)
    if period <= first then return; end
    BB:update(mode);
    local top = BB.TL[period];
    local bottom = BB.BL[period];
    BB_Top[period] = top;
    BB_Bottom[period] = bottom;
    if not hideAverage then BB_Middle[period] = BB.AL[period]; end
    if (top - bottom > instance.parameters.maxWidth) then
        BB_Top:setBreak(period, true);
        BB_Bottom:setBreak(period, true);
        if not hideAverage then BB_Middle:setBreak(period, true); end
    end
end



Partager le fichier

Télécharger BBNarrow.lua

Télécharger le fichier (4 Ko)