StochWithDslow.efs

ICE Data Services -

StochWithDslow.efs  

EFSLibrary - Discussion Board  

File Name: StochWithDslow.efs

Description:
Stochastic study with an added %D Slow line, which is a simple moving average of the %D line.

Formula Parameters:

  • nKlength: 14
  • nKsmoothing: 1
  • nDlength: 15
  • nDsmoothing: 15
  • %K Color: Blue
  • %D Color: Red
  • %D Slow Color: Brown
  • %K Display: Off

Notes:
Version 2.0 (Updated 10/14/2004)
Notes:

  • Updated parameters to use FunctionParameter Class.
  • Added parameter to turn on/off display of %K, which is off by default.
  • Added parameters to allow user control over study colors.

Download File:
StochWithDslow.efs


EFS Code:

/*****************************************************************
Provided By : eSignal. (c) Copyright 2003
Description:  Stochastics with D Slow

Version:  2.0

2.0 Notes:
    - Updated parameters to use FunctionParameter Class.
    - Added parameter to turn on/off display of %K.
    - Added parameters to allow user control over study colors.

*****************************************************************/

addBand(80, PS_SOLID, 2, Color.yellow, "top");
addBand(20, PS_SOLID, 2, Color.yellow, "bottom");

function preMain() {
    setStudyTitle("Stochastics with D Slow ");
    setStudyMin(-5);
    setStudyMax(105);
    setShowTitleParameters(false);
    setDefaultBarFgColor(Color.blue, 0); // %K
    setDefaultBarFgColor(Color.red, 1); // %D
    setDefaultBarFgColor(Color.brown, 2); // %D Slow
 

    setCursorLabelName("\%K", 0);
    setCursorLabelName("\%D", 1);
    setCursorLabelName("\%D Slow", 2);
    
    var fp1 = new FunctionParameter("nKlength", FunctionParameter.NUMBER);
        fp1.setName("%K Length");
        fp1.setLowerLimit(1);
        fp1.setDefault(14);
    var fp2 = new FunctionParameter("nKsmoothing", FunctionParameter.NUMBER);
        fp2.setName("%K Smoothing");
        fp2.setLowerLimit(1);
        fp2.setDefault(1);
    var fp3 = new FunctionParameter("nDlength", FunctionParameter.NUMBER);
        fp3.setName("%D Length");
        fp3.setLowerLimit(1);
        fp3.setDefault(15);
    var fp4 = new FunctionParameter("nDsmoothing", FunctionParameter.NUMBER);
        fp4.setName("%D Smoothing");
        fp4.setLowerLimit(1);
        fp4.setDefault(15);
    var fp5 = new FunctionParameter("cK", FunctionParameter.COLOR);
        fp5.setName("%K Color");
        fp5.setDefault(Color.blue);
    var fp6 = new FunctionParameter("cD", FunctionParameter.COLOR);
        fp6.setName("%D Color");
        fp6.setDefault(Color.red);
    var fp7 = new FunctionParameter("cDslow", FunctionParameter.COLOR);
        fp7.setName("%D Slow Color");
        fp7.setDefault(Color.brown);
    var fp8 = new FunctionParameter("bKdisplay", FunctionParameter.STRING);
        fp8.setName("Display %K");
        fp8.addOption("ON");
        fp8.addOption("OFF");
        fp8.setDefault("OFF");
}

var study = null;
var vDsmoothing = null;

function main(nKlength, nKsmoothing, nDlength, nDsmoothing, cK, cD, cDslow, bKdisplay) {
    if (study == null) {
        if (nDsmoothing == null) { 
            vDsmoothing = 15;
        } else {
            vDsmoothing = Math.abs(nDsmoothing);
        }
        study = new StochStudy(nKlength, nKsmoothing, nDlength);
        setDefaultBarFgColor(cK, 0);
        setDefaultBarFgColor(cD, 1);
        setDefaultBarFgColor(cDslow, 2);
    }
    
    var vK = study.getValue(StochStudy.FAST);
    if (vK == null) return;
    var vD = study.getValue(StochStudy.SLOW);
    if (vD == null) return;
    
    var aD = study.getValue(StochStudy.SLOW, 0, -vDsmoothing);
    if (aD == null) return;
    
    var dSum = 0;
    for (i = 0; i < vDsmoothing; ++i) {
        dSum += aD[i];
    }
    var vDslow = (dSum/vDsmoothing);
    
    if (bKdisplay == "OFF") vK = vK.toFixed(4);
    
    return new Array(vK, vD, vDslow);
}