Announcement

Collapse
No announcement yet.

StochOfRSI.efs

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • StochOfRSI.efs

    File Name: StochOfRSI.efs

    Description:
    Plots the Stochastic %K and %D of the RSI.

    Formula Parameters:
    PriceSource: Default is Close
    rsiLength: Default is 13
    Klength: Default is 8
    Ksmooth: Default is 8
    Dlength: Default is 5
    SmoothKline: Default is False

    Notes:
    All study input parameters are adjustable. Smoothing of %K can be turned on or off by setting the input parameter, SmoothKline, to True or False.

    Download File:
    StochOfRSI.efs

    Image:



    EFS Code:
    PHP Code:
    /*********************************
    Provided By : eSignal. (c) Copyright 2003
    *********************************/

    addBand(90PS_SOLID2Color.yellow"Upper");
    addBand(10PS_SOLID2Color.yellow"Lower");

    function 
    preMain() {
        
    setStudyTitle("Stochastic of RSI ");
        
    setCursorLabelName("\%K of RSI"0);
        
    setCursorLabelName("\%D of RSI"1);
        
    setDefaultBarFgColor(Color.blue0);
        
    setDefaultBarFgColor(Color.red1);
        
        
    setStudyMax(105);
        
    setStudyMin(-5);

        var 
    fp1 = new FunctionParameter("PriceSource"FunctionParameter.STRING);
        
    fp1.setName("RSI Price Source");
        
    fp1.addOption("Open");
        
    fp1.addOption("High");
        
    fp1.addOption("Low");
        
    fp1.addOption("Close");
        
    fp1.addOption("HL/2");
        
    fp1.addOption("HLC/3");
        
    fp1.addOption("OHLC/4");
        
    fp1.setDefault("Close");
        
        var 
    fp2 = new FunctionParameter("rsiLength"FunctionParameter.NUMBER);
        
    fp2.setName("RSI Length");
        
    fp2.setLowerLimit(1);
        
    fp2.setDefault(13);
        
        var 
    fp3 = new FunctionParameter("Klength"FunctionParameter.NUMBER);
        
    fp3.setName("\%K Length");
        
    fp3.setLowerLimit(1);
        
    fp3.setDefault(8);

        var 
    fp4 = new FunctionParameter("Ksmooth"FunctionParameter.NUMBER);
        
    fp4.setName("\%K Smoothing");
        
    fp4.setLowerLimit(1);
        
    fp4.setDefault(8);
        
        var 
    fp5 = new FunctionParameter("Dlength"FunctionParameter.NUMBER);
        
    fp5.setName("\%D Length");
        
    fp5.setLowerLimit(1);
        
    fp5.setDefault(5);
        
        var 
    fp6 = new FunctionParameter("SmoothKline"FunctionParameter.BOOLEAN);
        
    fp6.setName("Smooth \%K");
        
    fp6.setDefault(true);
    }

    function 
    HHrsi(nLength) {
        var 
    hh null;
        
    hh aRSI[0];
        for(
    0nLengthi++) {
            
    hh Math.max(hhaRSI[i]);
        }
        return 
    hh;
    }

    function 
    LLrsi(nLength) {
        var 
    ll null;
        
    ll aRSI[0];;
        for(
    0nLengthi++) {
            
    ll Math.min(llaRSI[i]);
        }
        return 
    ll;
    }

    var 
    vStochRSI null;

    function 
    StochK(inputrsiLengthnLengthnSmoothing) {
        var 
    nState getBarState();
        var 
    percentK;
        var 
    vValue;
        var 
    llhh;
        var 
    sum 0;

        
    ll LLrsi(inputrsiLength)       
        
    hh HHrsi(inputrsiLength);

        if (
    nState == BARSTATE_NEWBAR && vStochRSI != null) {
            
    aStoch.pop();
            
    aStoch.unshift(vStochRSI);
        }

        
    vStochRSI = ((vRSI ll) / (hh ll)) * 100;    // no smoothing
        
    aStoch[0] = vStochRSI;

        if (
    vSmooth == "true" || vSmooth) {
            for(
    0nSmoothingi++) { // for smoothing
                
    sum += aStoch[i];
            }
            
    sum /= nSmoothing;
            return 
    sum;
        } else {
            return 
    vStochRSI;
        }
    }

    function 
    StochD(nSmoothing) {   
        var 
    sum 0;
        for(
    0nSmoothingi++) { 
           
    sum += aStochb[i];
        }
        
    sum sum nSmoothing;
        return 
    sum;
    }

    var 
    RSIstudy null;
    var 
    aRSI null;
    var 
    vRSI null;
    var 
    aStoch null;
    var 
    aStochb null;
    var 
    vSmooth "false";
    var 
    bEdit true;
    var 
    vK null;
    var 
    vD null;
        
    function 
    main(PriceSourcersiLengthKlengthKsmoothDlengthSmoothKline) {
        var 
    nState getBarState();
        
        if (
    bEdit == true || RSIstudy == null || aRSI == null || aStoch == null) {
            
    RSIstudy = new RSIStudy(rsiLengthPriceSource);
            
    aStoch = new Array(Math.max(KsmoothKlength));
            
    aStochb = new Array(Dlength);
            
    aRSI = new Array(Math.max(KlengthKsmooth));
            if (
    SmoothKline != nullvSmooth SmoothKline;
            
    bEdit false;
        }
        
        if (
    nState == BARSTATE_NEWBAR && vRSI != null) {
            
    aRSI.pop();
            
    aRSI.unshift(vRSI);
            
    aStochb.pop();
            
    aStochb.unshift(vK);
        }
        
        
    vRSI RSIstudy.getValue(RSIStudy.RSI);
        if (
    vRSI == null) return;
        
    aRSI[0] = vRSI;


        
    vK null;
        
    vD null;
        
        var 
    vLen Math.max(KlengthKsmooth);
        if (
    aRSI[vLen-1] != null) {
            
    vK StochK(KlengthKlengthKsmooth);
            
    aStochb[0] = vK;
            
    vD StochD(Dlength);
        } else {
            return;
        }

        return new Array(
    vKvD);

    Jason K.
    Project Manager
    eSignal - an Interactive Data company

    EFS KnowledgeBase
    JavaScript for EFS Video Series
    EFS Beginner Tutorial Series
    EFS Glossary
    Custom EFS Development Policy

    New User Orientation
Working...
X