Announcement

Collapse
No announcement yet.

EMAof(StochOfRSI).efs

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

  • EMAof(StochOfRSI).efs

    File Name: EMAof(StochOfRSI).efs

    Description:
    Plots the Exponential Moving Average of the %K output from a Stochastic of RSI study.

    Formula Parameters:
    RSI Price Source - Close - [Open, High, Low, Close, HL/2, HLC/3, OHLC/4]
    RSI Length - 13
    %K Length - 8
    %K Smoothing - 8
    %D Length - 5
    Smooth %K - true - [true, false]
    EMA Length - 3


    Notes:
    NA


    Download File:
    EMAof(StochOfRSI).efs



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

    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);
        
    setCursorLabelName("EMA of \%K "2);
        
    setDefaultBarFgColor(Color.blue0);
        
    setDefaultBarFgColor(Color.red1);
        
    setDefaultBarFgColor(Color.navy2);
        
        
    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);
        
        var 
    fp7 = new FunctionParameter("EMAlength"FunctionParameter.NUMBER);
        
    fp7.setName("EMA Length");
        
    fp7.setLowerLimit(1);
        
    fp7.setDefault(3);
    }

    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 == true) {
            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;
    }

    function 
    EMA(nLengthnArray) {
        var 
    nBarState getBarState();
        var 
    dSum 0.0;

        if(
    nBarState == BARSTATE_ALLBARS || bPrimed == false) {
            
    dPercent = (2.0 / (nLength 1.0));
            
    bPrimed false;
        }

        if (
    nBarState == BARSTATE_NEWBAR) {
            
    vEMA1 vEMA;
        }

        if(
    bPrimed == false) {
            for(
    0nLengthi++) {
                
    dSum += nArray[i];
            }
            
    bPrimed true;
            
    //debugPrintln(nArray);
            
    return (dSum nLength);
        } else {
            return (((
    vK vEMA1) * dPercent) + vEMA1);
        }
    }

    var 
    RSIstudy null;
    var 
    aRSI null;
    var 
    vRSI null;
    var 
    aStoch null;
    var 
    aStochb null;
    var 
    vSmooth "true";
    var 
    bEdit true;
    var 
    vK null;
    var 
    vD null;

    // EMA variables
    var vEMA null;
    var 
    vEMA1 null;
    var 
    dPercent 0.0;
    var 
    bPrimed false;

        
    function 
    main(PriceSourcersiLengthKlengthKsmoothDlengthSmoothKlineEMAlength) {
        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(Math.max(DlengthEMAlength));
            
    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;
        }

        if (
    aStochb[EMAlength-1] != null && !isNaN(aStochb[EMAlength-1])) {
            
    vEMA EMA(EMAlengthaStochb);
        }

        return new Array(
    vKvDvEMA);

    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