StochasticOf_Montage.efs

ICE Data Services -


StochasticOf_Montage.efs  EFSLibrary - Discussion Board
  

File Name: StochasticOf_Montage.efs


Description:
Plots the Stochastics of a collection of eSignal Basic Studies.


Formula Parameters:
1. Montage Source - Standard
[Options]
Open
High
Low
Close
HL/2
HLC/3
OHLC/4
Standard
AccDistStudy.ACCDIST
ADXDMStudy.PDI
ADXDMStudy.NDI
ADXDMStudy.ADX
ATRStudy.ATR
BollingerStudy.BASIS
CCIStudy.CCI
ChopStudy.CHOP
DonchianStudy.BASIS
DonchianStudy.LOWER
DonchianStudy.UPPER
EnvelopeStudy.BASIS
EnvelopeStudy.LOWER
EnvelopeStudy.UPPER
MAStudy.SIMPLE
MAStudy.EXPONENTIAL
MAStudy.WEIGHTED
MAStudy.VOLUMEWEIGHTED
MACDStudy.FAST
MACDStudy.SLOW
MACDStudy.MACD
MoneyFlowStudy.MONEYFLOW
MOMStudy.MOM
OBVStudy.OBV
OscStudy.OSC
PercentRStudy.PERCENTR
ROCStudy.ROC
RSIStudy.RSI
StochStudy.FAST
2. Montage Length K - 14
3. Montage Smooth K - 1
4. Montage Length D - 3
5. Montage MA Type - Simple [Simple, Exponential]
6. Montage Upper Band - 80
7. Montage Lower Band - 20
8. Montage Bands' Color - Color.black
9. Montage %K Color - Color.blue
10. Montage %D Color - Color.red
11. Montage %K Thickness - 1
12. Montage %D Thickness - 1

13-17
The last five parameters are changed dynamically based on the
Basic Study selected from the Montage Source parameter. If
the name of any of these parameters is "NA" then no input is
required for that parameter.

Notes:
Version 1.0 7/20/2004

This formula is designed to calculate stochastics based on
the user-defined source selected from the "Montage Source"
parameter via Edit Studies. The default, Standard, uses the
traditional highest high, lowest low and close similar to the
built-in Stochastics study.

Instructions - After selecting a new source for the Montage Source
parameter, select "OK" and close the Edit Studies window. Then
go back into Edit Studies to view the required parameters for
the selected source, if they apply.

Download File:
StochasticOf_Montage.efs




EFS Code:






/*********************************************************Provided By : eSignal � July 2004                         Special contributions from Alexis C. MontenegroVersion 1.0  7/20/2004Notes:This formula is designed to calculate stochastics based onthe user-defined source selected from the "Montage Source"parameter via Edit Studies.  The default, Standard, uses thetraditional highest high, lowest low and close similar to thebuilt-in Stochastics study.!!!!!!!!!!! After selecting a new source for the Montage Sourceparameter, select "OK" and close the Edit Studies window. Then go back into Edit Studies to view the required parameters for the selected source, if they apply. !!!!!!!!!!!!!!!!!!!!!!!!!!!!Formula Parameters:             Defaults:1.  Montage Source              Standard     [Options]     Open     High     Low     Close     HL/2     HLC/3     OHLC/4     Standard     AccDistStudy.ACCDIST     ADXDMStudy.PDI     ADXDMStudy.NDI     ADXDMStudy.ADX     ATRStudy.ATR     BollingerStudy.BASIS     CCIStudy.CCI     ChopStudy.CHOP     DonchianStudy.BASIS     DonchianStudy.LOWER     DonchianStudy.UPPER     EnvelopeStudy.BASIS     EnvelopeStudy.LOWER     EnvelopeStudy.UPPER     MAStudy.SIMPLE     MAStudy.EXPONENTIAL     MAStudy.WEIGHTED     MAStudy.VOLUMEWEIGHTED     MACDStudy.FAST     MACDStudy.SLOW     MACDStudy.MACD     MoneyFlowStudy.MONEYFLOW     MOMStudy.MOM     OBVStudy.OBV     OscStudy.OSC     PercentRStudy.PERCENTR     ROCStudy.ROC     RSIStudy.RSI     StochStudy.FAST2.  Montage Length K            14 3.  Montage Smooth K            1 4.  Montage Length D            3 5.  Montage MA Type             Simple6.  Montage Upper Band          807.  Montage Lower Band          208.  Montage Bands' Color        Color.black9.  Montage %K Color            Color.blue10. Montage %D Color            Color.red11. Montage %K Thickness        112. Montage %D Thickness        113-17The last five parameters are changed dynamically based on theBasic Study selected from the Montage Source parameter.  Ifthe name of any of these parameters is "NA" then no input is required for that parameter.**********************************************************/var xMA  = null;var vBasicStudy = null;var xMA1 = null;var xMA2 = null;var xMA3 = null;function preMain() {    setStudyTitle("Stochastic Montage");    setShowTitleParameters(false);    setCursorLabelName("%K", 0);    setCursorLabelName("%D", 1);    setDefaultBarFgColor(Color.blue, 0);    setDefaultBarFgColor(Color.red, 1);    setDefaultBarThickness(1, 0);    setDefaultBarThickness(1, 1);    setStudyMax(105);    setStudyMin(-5);        var fp1 = new FunctionParameter("Source", FunctionParameter.STRING);    fp1.setName("Montage 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.addOption("Standard");	fp1.addOption("AccDistStudy.ACCDIST");	fp1.addOption("ADXDMStudy.PDI");	fp1.addOption("ADXDMStudy.NDI");	fp1.addOption("ADXDMStudy.ADX");	fp1.addOption("ATRStudy.ATR");	fp1.addOption("BollingerStudy.BASIS");	fp1.addOption("CCIStudy.CCI");	fp1.addOption("ChopStudy.CHOP");	fp1.addOption("DonchianStudy.BASIS");	fp1.addOption("DonchianStudy.LOWER");	fp1.addOption("DonchianStudy.UPPER");	fp1.addOption("EnvelopeStudy.BASIS");	fp1.addOption("EnvelopeStudy.LOWER");	fp1.addOption("EnvelopeStudy.UPPER");	fp1.addOption("MAStudy.SIMPLE");	fp1.addOption("MAStudy.EXPONENTIAL");	fp1.addOption("MAStudy.WEIGHTED");	fp1.addOption("MAStudy.VOLUMEWEIGHTED");	fp1.addOption("MACDStudy.FAST");	fp1.addOption("MACDStudy.SLOW");	fp1.addOption("MACDStudy.MACD");	fp1.addOption("MoneyFlowStudy.MONEYFLOW");	fp1.addOption("MOMStudy.MOM");	fp1.addOption("OBVStudy.OBV");	fp1.addOption("OscStudy.OSC");	fp1.addOption("PercentRStudy.PERCENTR");	fp1.addOption("ROCStudy.ROC");	fp1.addOption("RSIStudy.RSI");	fp1.addOption("StochStudy.FAST");	fp1.setDefault("Standard");        var fp4 = new FunctionParameter("LengthK", FunctionParameter.NUMBER);    fp4.setName("Montage Length K");	fp4.setLowerLimit(1);		fp4.setDefault(14); 		var fp5 = new FunctionParameter("SmoothK", FunctionParameter.NUMBER);    fp5.setName("Montage Smooth K");	fp5.setLowerLimit(1);		fp5.setDefault(1); 		var fp6 = new FunctionParameter("LengthD", FunctionParameter.NUMBER);    fp6.setName("Montage Length D");	fp6.setLowerLimit(1);		fp6.setDefault(3); 		var fp7 = new FunctionParameter("MAType", FunctionParameter.STRING);    fp7.setName("Montage MA Type");	fp7.addOption("Exponential");    fp7.addOption("Simple");	fp7.setDefault("Simple"); 		var fp8 = new FunctionParameter("Upper", FunctionParameter.NUMBER);    fp8.setName("Montage Upper Band");	fp8.setLowerLimit(0);		fp8.setDefault(80); 		var fp9 = new FunctionParameter("Lower", FunctionParameter.NUMBER);    fp9.setName("Montage Lower Band");	fp9.setLowerLimit(0);		fp9.setDefault(20);         var fp10 = new FunctionParameter("cBands", FunctionParameter.COLOR);    fp10.setName("Montage Bands' Color");    fp10.setDefault(Color.black);    var fp11 = new FunctionParameter("cK", FunctionParameter.COLOR);    fp11.setName("Montage \%K Color");    fp11.setDefault(Color.blue);    var fp12 = new FunctionParameter("cD", FunctionParameter.COLOR);    fp12.setName("Montage \%D Color");    fp12.setDefault(Color.red);    var fp13 = new FunctionParameter("nK", FunctionParameter.NUMBER);    fp13.setName("Montage \%K Thickness");    fp13.setLowerLimit(1);    fp13.setDefault(1);    var fp14 = new FunctionParameter("nD", FunctionParameter.NUMBER);    fp14.setName("Montage \%D Thickness");    fp14.setLowerLimit(1);    fp14.setDefault(1);    fp15 = new FunctionParameter("nNum1", FunctionParameter.NUMBER);    fp15.setName("Study Number Parameter1");    fp15.setDefault(5);    fp16 = new FunctionParameter("nNum2", FunctionParameter.NUMBER);    fp16.setName("Study Number Parameter2");    fp16.setDefault(10);    fp17 = new FunctionParameter("nNum3", FunctionParameter.NUMBER);    fp17.setName("Study Number Parameter3");    fp17.setDefault(1);    fp18 = new FunctionParameter("sString1", FunctionParameter.STRING);    fp18.setName("Study Price Source");	fp18.addOption("Open");    fp18.addOption("High");    fp18.addOption("Low");    fp18.addOption("Close");    fp18.addOption("HL/2");	fp18.addOption("HLC/3");	fp18.addOption("OHLC/4");	fp18.setDefault("Close");    fp19 = new FunctionParameter("sString2", FunctionParameter.STRING);    fp19.setName("Study Boolean Parameter");	fp19.addOption("true");    fp19.addOption("false");	fp19.setDefault("false");}var aSource = null;var aHiVal = null;var aLoVal = null;var vEMA = null;var vEMA1 = null;var dPercent = 0.0;var bPrimed = false;    var aValue = null;var bEdit = true; function main(Source, LengthK, SmoothK, LengthD, MAType, Upper, Lower, cBands,               cK, cD, nK, nD, nNum1, nNum2, nNum3, sString1, sString2) {    if (bEdit == true) {        drawTextPixel(5, 5, " Edit @URL=EFS:editStudies", null, null,             Text.RELATIVETOLEFT|Text.RELATIVETOBOTTOM|Text.BOLD|Text.CENTER|Text.BUTTON,            null, 10, "Edit");        for (var i = 15; i < 20; i++) {            eval("fp" + i + ".setName('NA')");        }        if(Source=="Standard") {            setStudyTitle("Stochastic - Standard");            if(xMA1 == null) xMA1 = new MAStudy(1,0,"Close",MAStudy.SIMPLE);            if(xMA2 == null) xMA2 = new MAStudy(1,0,"High",MAStudy.SIMPLE);            if(xMA3 == null) xMA3 = new MAStudy(1,0,"Low",MAStudy.SIMPLE);        } else {                if(Source=="Open"||Source=="High"||Source=="Low"||Source=="Close"||Source=="HL/2"||Source=="HLC/3"||Source=="OHLC/4"){                setStudyTitle("Stochastic of - " + Source);                if(xMA == null) xMA = new MAStudy(1,0,Source,MAStudy.SIMPLE);                if(xMA1 == null) xMA1 = new MAStudy(1,0,xMA,MAStudy.MA,MAStudy.SIMPLE);            } else switch (Source) {                case "AccDistStudy.ACCDIST" :                    setStudyTitle("Stochastic of - AccDist");                    if(vBasicStudy == null) vBasicStudy = new AccDistStudy();                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;	                 case "ADXDMStudy.PDI" :                    setStudyTitle("Stochastic of - ADXDM.PDI");                    fp15.setName("DI Length");                    fp16.setName("ADX Length");                    if(vBasicStudy == null) vBasicStudy = new ADXDMStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "ADXDMStudy.NDI" :                    setStudyTitle("Stochastic of - ADXDM.NDI");                    fp15.setName("DI Length");                    fp16.setName("ADX Length");                    if(vBasicStudy == null) vBasicStudy = new ADXDMStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;	                 case "ADXDMStudy.ADX" :                    setStudyTitle("Stochastic of - ADXDM.ADX");                    fp15.setName("DI Length");                    fp16.setName("ADX Length");                    if(vBasicStudy == null) vBasicStudy = new ADXDMStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "ATRStudy.ATR" :                    setStudyTitle("Stochastic of - ATR");                    fp15.setName("ATR Length");                    if(vBasicStudy == null) vBasicStudy = new ATRStudy(nNum1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "BollingerStudy.BASIS" :                    setStudyTitle("Stochastic of - Bollinger.BASIS");                    fp15.setName("Bollinger Length");                    fp16.setName("Bollinger Standard Deviation");                    fp18.setName("Bollinger Price Source");                    if(vBasicStudy == null) vBasicStudy = new BollingerStudy(nNum1, sString1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "CCIStudy.CCI" :                    setStudyTitle("Stochastic of - CCI");                    fp15.setName("CCI Length");                    fp18.setName("CCI Price Source");                    if(vBasicStudy == null) vBasicStudy = new CCIStudy(nNum1, sString1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "ChopStudy.CHOP" :                    setStudyTitle("Stochastic of - Chop");                    fp15.setName("Chop Length");                    if(vBasicStudy == null) vBasicStudy = new ChopStudy(nNum1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "DonchianStudy.BASIS" :                    setStudyTitle("Stochastic of - Dochian.BASIS");                    fp15.setName("Donchian Length");                    fp16.setName("Donchian Offset");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) vBasicStudy = new DonchianStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "DonchianStudy.LOWER" :                    setStudyTitle("Stochastic of - Dochian.LOWER");                    fp15.setName("Donchian Length");                    fp16.setName("Donchian Offset");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) vBasicStudy = new DonchianStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "DonchianStudy.UPPER" :                    setStudyTitle("Stochastic of - Dochian.UPPER");                    fp15.setName("Donchian Length");                    fp16.setName("Donchian Offset");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) vBasicStudy = new DonchianStudy(nNum1, nNum2);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "EnvelopeStudy.BASIS" :                    setStudyTitle("Stochastic of - Envelope.BASIS");                    fp15.setName("Envelope Length");                    fp16.setName("Envelope Offset");                    fp17.setName("Envelope Percent");                    fp18.setName("Envelope Price Source");                    fp19.setName("Envelope Exponential");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new EnvelopeStudy(nNum1, nNum2, sString1, eval(sString2), nNum3);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;	                 case "EnvelopeStudy.LOWER" :                    setStudyTitle("Stochastic of - Envelope.LOWER");                    fp15.setName("Envelope Length");                    fp16.setName("Envelope Offset");                    fp17.setName("Envelope Percent");                    fp18.setName("Envelope Price Source");                    fp19.setName("Envelope Exponential");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new EnvelopeStudy(nNum1, nNum2, sString1, eval(sString2), nNum3);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "EnvelopeStudy.UPPER" :                    setStudyTitle("Stochastic of - Envelope.UPPER");                    fp15.setName("Envelope Length");                    fp16.setName("Envelope Offset");                    fp17.setName("Envelope Percent");                    fp18.setName("Envelope Price Source");                    fp19.setName("Envelope Exponential");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new EnvelopeStudy(nNum1, nNum2, sString1, eval(sString2), nNum3);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;	                 case "MAStudy.SIMPLE" :                    setStudyTitle("Stochastic of - MA.SIMPLE");                    fp15.setName("MA Length");                    fp16.setName("MA Offset");                    fp18.setName("MA Price Source");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new MAStudy(nNum1, nNum2, sString1, MAStudy.SIMPLE);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,MAStudy.MA,MAStudy.SIMPLE);                    break;                case "MAStudy.EXPONENTIAL" :                    setStudyTitle("Stochastic of - MA.EXPONENTIAL");                    fp15.setName("MA Length");                    fp16.setName("MA Offset");                    fp18.setName("MA Price Source");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new MAStudy(nNum1, nNum2, sString1, MAStudy.EXPONENTIAL);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,MAStudy.MA,MAStudy.SIMPLE);                    break;                case "MAStudy.WEIGHTED" :                    setStudyTitle("Stochastic of - MA.WEIGHTED");                    fp15.setName("MA Length");                    fp16.setName("MA Offset");                    fp18.setName("MA Price Source");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new MAStudy(nNum1, nNum2, sString1, MAStudy.WEIGHTED);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,MAStudy.MA,MAStudy.SIMPLE);                    break;                case "MAStudy.VOLUMEWEIGHTED" :                    setStudyTitle("Stochastic of - MA.VOLUMEWEIGHTED");                    fp15.setName("MA Length");                    fp16.setName("MA Offset");                    fp18.setName("MA Price Source");                    if (nNum2 > 0) nNum2 = 0;                    if(vBasicStudy == null) {                        vBasicStudy = new MAStudy(nNum1, nNum2, sString1, MAStudy.VOLUMEWEIGHTED);                    }                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,MAStudy.MA,MAStudy.SIMPLE);                    break;                case "MACDStudy.FAST" :                    setStudyTitle("Stochastic of - MACD.FAST");                    fp15.setName("MACD Fast Length");                    fp16.setName("MACD Slow Length");                    fp17.setName("MACD Signal Smoothing");                    fp18.setName("MACD Price Source");                    fp19.setName("MACD Simple MA");                    if(vBasicStudy == null) vBasicStudy = new MACDStudy(nNum1, nNum2, nNum3, sString1, eval(sString2));                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "MACDStudy.SLOW" :                    setStudyTitle("Stochastic of - MACD.SLOW");                    fp15.setName("MACD Fast Length");                    fp16.setName("MACD Slow Length");                    fp17.setName("MACD Signal Smoothing");                    fp18.setName("MACD Price Source");                    fp19.setName("MACD Simple MA");                    if(vBasicStudy == null) vBasicStudy = new MACDStudy(nNum1, nNum2, nNum3, sString1, eval(sString2));                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "MACDStudy.MACD" :                    setStudyTitle("Stochastic of - MACD.MACD");                    fp15.setName("MACD Fast Length");                    fp16.setName("MACD Slow Length");                    fp17.setName("MACD Signal Smoothing");                    fp18.setName("MACD Price Source");                    fp19.setName("MACD Simple MA");                    if(vBasicStudy == null) vBasicStudy = new MACDStudy(nNum1, nNum2, nNum3, sString1, eval(sString2));                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "MoneyFlowStudy.MONEYFLOW" :                    setStudyTitle("Stochastic of - MoneyFlow");                    fp15.setName("Money Flow Length");                    if(vBasicStudy == null) vBasicStudy = new MoneyFlowStudy(nNum1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "MOMStudy.MOM" :                    setStudyTitle("Stochastic of - MOM");                    fp15.setName("MOM Length");                    fp18.setName("MOM Price Source");                    if(vBasicStudy == null) vBasicStudy = new MOMStudy(nNum1, sString1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "OBVStudy.OBV" :                    setStudyTitle("Stochastic of - OBV");                    if(vBasicStudy == null) vBasicStudy = new OBVStudy();                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "OscStudy.OSC" :                    setStudyTitle("Stochastic of - OSC");                    fp15.setName("OSC Fast Length");                    fp16.setName("OSC Slow Length");                    fp18.setName("OSC Price Source");                    fp19.setName("OSC Exponential");                    if(vBasicStudy == null) vBasicStudy = new OscStudy(nNum1, nNum2, sString1, eval(sString2));                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "PercentRStudy.PERCENTR" :                    setStudyTitle("Stochastic of - PercentR");                    fp15.setName("PercentR Length");                    if(vBasicStudy == null) vBasicStudy = new PercentRStudy(nNum1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "RSIStudy.RSI" :                    setStudyTitle("Stochastic of - RSI");                    fp15.setName("RSI Length");                    fp18.setName("RSI Price Source");                    if(vBasicStudy == null) vBasicStudy = new RSIStudy(nNum1, sString1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                   case "ROCStudy.ROC" :                    setStudyTitle("Stochastic of - ROC");                    fp15.setName("ROC Length");                    fp18.setName("ROC Price Source");                    if(vBasicStudy == null) vBasicStudy = new ROCStudy(nNum1, sString1);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                case "StochStudy.FAST" :                    setStudyTitle("Stochastic of - Stoch.FAST");                    fp15.setName("Stoch \%K Length");                    fp16.setName("Stoch \%K Smoothing");                    fp17.setName("Stoch \%D Length");                    if(vBasicStudy == null) vBasicStudy = new StochStudy(nNum1, nNum2, nNum3);                    if(xMA1 == null) xMA1 = new MAStudy(1,0,vBasicStudy,eval(Source),MAStudy.SIMPLE);                    break;                                }        }                // Study formatting        addBand( Upper, PS_SOLID, 1, eval(cBands), 2);        addBand( Lower, PS_SOLID, 1, eval(cBands), 3);        setDefaultBarFgColor(cK, 0);        setDefaultBarFgColor(cD, 1);        setDefaultBarThickness(nK, 0);        setDefaultBarThickness(nD, 1);                bEdit = false;    }    if (Source=="Standard") {        vMA1 = xMA1.getValue(MAStudy.MA);        vMA2 = xMA2.getValue(MAStudy.MA);        vMA3 = xMA3.getValue(MAStudy.MA);    } else {        vMA1 = xMA1.getValue(MAStudy.MA);        vMA2 = xMA1.getValue(MAStudy.MA);        vMA3 = xMA1.getValue(MAStudy.MA);    }    if(vMA1==null||vMA2==null||vMA3==null) return;        if(aSource == null) aSource = new Array(LengthK+SmoothK);    if(aHiVal == null) aHiVal = new Array(LengthK+SmoothK);    if(aLoVal == null) aLoVal = new Array(LengthK+SmoothK);        if(getBarState()==BARSTATE_NEWBAR){        aSource.pop();        aHiVal.pop();        aLoVal.pop();        aSource.unshift(vMA1);        aHiVal.unshift(vMA2);        aLoVal.unshift(vMA3)    }else{        aSource[0] = vMA1;        aHiVal[0] = vMA2;        aLoVal[0] = vMA3;    }        var Offset;    var cc = 0;    var hh = 0;    var ll = 0;    var percentK;    var sum = 0;            if (aHiVal[(LengthK+SmoothK)-1] == null) return;    if (aLoVal[(LengthK+SmoothK)-1] == null) return;    var i;    for(i = 0; i < SmoothK; i++) {        Offset = i;                cc = aSource[Offset];                // The portion of the array to get stochK is from Offset to LengthK+Offset.        var vValueH = aHiVal.slice(Offset,LengthK+Offset);        if(vValueH == null) return ;                var vValueL = aLoVal.slice(Offset,LengthK+Offset);        if(vValueL == null) return ;                    var j;        for(j = 0; j < LengthK; j++) {            if(j == 0) {                hh = vValueH[j];                ll = vValueL[j];            } else {                hh = Math.max(hh, vValueH[j]);                ll = Math.min(ll, vValueL[j]);            }        }                percentK = ((cc - ll) / (hh - ll)) * 100;                sum += percentK;    }    sum /= SmoothK;           var vPlot = sum;        if (aValue == null) {        aValue = new Array(LengthD);    }    if (getBarState() == BARSTATE_NEWBAR) {        aValue.pop();          aValue.unshift(vPlot);     } else {        aValue[0] = vPlot;    }        var k=0;    var nSum = 0;    for (k = 0; k < LengthD; ++k) {        nSum += aValue[k];    }        var vSMA = nSum/LengthD;            if(MAType=="Exponential"){        if(aValue[LengthD-1] != null) vEMA = EMA(LengthD, aValue);          return new Array (sum,vEMA);    }else{        return new Array (sum,vSMA);    }    }function EMA(LengthD, aValue) {    var dSum = 0.0;    if(getBarState() == BARSTATE_ALLBARS || bPrimed == false) {        dPercent = (2.0 / (LengthD + 1.0));        bPrimed = false;    }    if (getBarState() == BARSTATE_NEWBAR) {        vEMA1 = vEMA;    }    if(bPrimed == false) {        for(var i = 0; i < LengthD; i++) {            dSum += aValue[i];        }        bPrimed = true;        return (dSum / LengthD);    } else {        return (((aValue[0] - vEMA1) * dPercent) + vEMA1);    }}function editStudies() {    askForInput("Stochastic Montage");}