QCharts_Keltner.efs

ICE Data Services -


QCharts_Keltner.efs  EFSLibrary - Discussion Board
  

File Name: QCharts_Keltner.efs


Description:
This is the Keltner study with the same parameter options as the Keltner study from QCharts with the exception of the Volume source.


Formula Parameters:
Length: 8
Source: AvgHLC
__ [Open, High, Low, Close, AvgHL, AvgHLC, AvgOHLC, AvgOC, AvgHLC]
Exponential: true
Bands Color: blue
Bands Thickness: 1
Bands Multiplier: 1.3
Basis Color: red
Basis Thickness: 1
Display Basis Line: true

Notes:
The bands are based on the average of the High-Low for the same number of periods as specified by the Length parameter multiplied by the Bands Multiplier.

Download File:
QCharts_Keltner.efs




EFS Code:






/*****************************************Provided By : eSignal. (c) Copyright 2006******************************************/function preMain() {    setPriceStudy(true);    setStudyTitle("QCharts Keltner");    setShowTitleParameters(false);        setCursorLabelName("K-Upper", 0);    setCursorLabelName("K-Basis", 1);    setCursorLabelName("K-Lower", 2);    setDefaultBarFgColor(Color.blue, 0); // upper	setDefaultBarFgColor(Color.red, 1);  // basis	setDefaultBarFgColor(Color.blue, 2); // lower		var fp1 = new FunctionParameter("nLength", FunctionParameter.NUMBER);        fp1.setName("Length");        fp1.setLowerLimit(1);        fp1.setDefault(8);	var fp2 = new FunctionParameter("Source", FunctionParameter.STRING);        fp2.setName("Source");        fp2.addOption("Open");        fp2.addOption("High");        fp2.addOption("Low");        fp2.addOption("Close");        fp2.addOption("AvgHL");        fp2.addOption("AvgHLC");        fp2.addOption("AvgOHLC");        fp2.addOption("AvgOC");        fp2.setDefault("AvgHLC");	var fp3 = new FunctionParameter("bExp", FunctionParameter.BOOLEAN);        fp3.setName("Exponential");        fp3.setDefault(true);	var fp4 = new FunctionParameter("cBands", FunctionParameter.COLOR);        fp4.setName("Bands Color");        fp4.setDefault(Color.blue);	var fp5 = new FunctionParameter("nBandThick", FunctionParameter.NUMBER);        fp5.setName("Bands Thickness");        fp5.setLowerLimit(1);        fp5.setDefault(1);	var fp6 = new FunctionParameter("nMult", FunctionParameter.NUMBER);        fp6.setName("Bands Multiplier");        fp6.setLowerLimit(0);        fp6.setDefault(1.3);	var fp7 = new FunctionParameter("cBasis", FunctionParameter.COLOR);        fp7.setName("Basis Color");        fp7.setDefault(Color.red);	var fp8 = new FunctionParameter("nBasisThick", FunctionParameter.NUMBER);        fp8.setName("Basis Thickness");        fp8.setLowerLimit(1);        fp8.setDefault(1);	var fp9 = new FunctionParameter("bDisplay", FunctionParameter.BOOLEAN);        fp9.setName("Display Basis Line");        fp9.setDefault(true);}var bInit = false;var xKeltner = null;function main(nLength, Source, bExp, cBands, nBandThick, nMult, cBasis, nBasisThick, bDisplay) {    if (bInit == false) {        xKeltner = efsInternal("calcKeltner", nLength, Source, bExp, nMult);        setStudyTitle("QCharts Keltner ("+ nLength + ", " + Source + ", " + bExp + ", " + nMult + ")");        setDefaultBarFgColor(cBands, 0);        setDefaultBarFgColor(cBasis, 1);        setDefaultBarFgColor(cBands, 2);        setDefaultBarThickness(nBandThick, 0);        setDefaultBarThickness(nBasisThick, 1);        setDefaultBarThickness(nBandThick, 2);        bInit = true;    }        var nUpper = getSeries(xKeltner, 0);    var nBasis = getSeries(xKeltner, 1);    var nLower = getSeries(xKeltner, 2);        if (bDisplay == false) nBasis = nBasis.toFixed(2);        return new Array(nUpper, nBasis, nLower);}var xSource  = null;var xBasis   = null;var xBands   = null;var xBandSrc = null;function calcKeltner(nLen, src, b, n) {    var nU, nB, nL, nAvgR        if (xSource == null) {        switch (src) {            case "Open":                 xSource = open();                break;            case "High":                 xSource = high();                break;            case "Low":                 xSource = low();                break;            case "Close":                 xSource = close();                break;            case "AvgHL":                 xSource = hl2();                break;            case "AvgOHLC":                 xSource = ohlc4();                break;            case "AvgOC":                 xSource = efsInternal("calcOC");                break;            default:                xSource = hlc3();        }    }        if (xBasis == null) {        xBandSrc = efsInternal("calcAvgRange");        if (b) {            xBasis   = ema(nLen, xSource);            xBands   = ema(nLen, xBandSrc);        } else {            xBasis   = sma(nLen, xSource);            xBands   = sma(nLen, xBandSrc);        }    }        nAvgR = xBands.getValue(0);    nB    = xBasis.getValue(0);    if (nB == null || nAvgR == null) return;        nU = nB + (n * nAvgR);    nL = nB - (n * nAvgR);        return new Array(nU, nB, nL);}function calcOC() {    return (open(0) + close(0)) / 2;}function calcAvgRange() {    return (high(0) - low(0));}