/*********************************Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2009. All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only and may be modified and saved under a new file name. eSignal is not responsible for the functionality once modified. eSignal reserves the right to modify and overwrite this EFS file with each new release.Description: Qualitative Quantitative Estimation Version: 1.0 07/19/2009 Formula Parameters: Default: RSI Length 14 SF 5 Notes: **********************************/var fpArray = new Array();var bInit = false;function preMain(){ setPriceStudy(false); setShowCursorLabel(true); setShowTitleParameters(false); setStudyTitle("Qualitative Quantitative Estimation"); setCursorLabelName("QQE", 0); setDefaultBarFgColor(Color.blue, 0); setPlotType(PLOTTYPE_LINE, 0); setDefaultBarThickness(2, 0); setDefaultBarFgColor(Color.red, 1); setPlotType(PLOTTYPE_LINE, 1); setDefaultBarThickness(1, 1); var x = 0; fpArray[x] = new FunctionParameter("RSILength", FunctionParameter.NUMBER); with(fpArray[x++]) { setName("RSI Length"); setLowerLimit(1); setDefault(14); } fpArray[x] = new FunctionParameter("SF", FunctionParameter.NUMBER); with(fpArray[x++]) { setLowerLimit(1); setDefault(5); } }var xTrLevelSlow = null;var xRSI = null;function main(RSILength, SF) {var nBarState = getBarState();var nTrLevelSlow = 0; if (nBarState == BARSTATE_ALLBARS) { if(RSILength == null) RSILength = 14; if(SF == null) SF = 5; } if (bInit == false) { xTrLevelSlow = efsInternal("Calc_TrLevelSlow", SF, RSILength); xRSI = getSeries(xTrLevelSlow, 1); bInit = true; } nTrLevelSlow = xTrLevelSlow.getValue(0) if (nTrLevelSlow== null) return; return new Array(xRSI.getValue(0), nTrLevelSlow);}var bSecondInit = false;var xMaAtrRsi = null;var xMARSI = null;var tr = 0;var tr1 = 0;function Calc_TrLevelSlow(SF, RSILength) {var nBarState = getBarState();var nRes = 0;var WildersLength = RSILength * 2 - 1; nRes = tr; if (bSecondInit == false) { xMARSI = efsInternal("Calc_AtrRSI", SF, RSILength); xMaAtrRsi = ema(WildersLength, ema(WildersLength , getSeries(xMARSI, 1))); bSecondInit = true; } if (xMaAtrRsi.getValue(-1) == null) return; if (nBarState == BARSTATE_NEWBAR) { tr1 = tr; } var rsi0 = xMARSI.getValue(0); var rsi1 = xMARSI.getValue(-1); var dar = xMaAtrRsi.getValue(0) * 4.236; var dv = tr1; if (rsi0 < tr1) { tr = rsi0 + dar; if (rsi1 < dv) { if (tr > dv) { tr = dv; } } nRes = tr; } else { tr = rsi0 - dar; if (rsi1 > dv) { if (tr < dv) { tr = dv; } } nRes = tr; } return new Array(nRes, rsi0);}bThreadInit = false;var xLocalRSI = null;var xLocalRSIMA = null;function Calc_AtrRSI(SF, RSILength) {var nRes = 0;var nRSI = 0;var nRSI1 = 0; if (bThreadInit == false) { xLocalRSI = rsi(RSILength); xLocalRSIMA = ema(SF, xLocalRSI); bThreadInit = true; } nRSI = xLocalRSIMA.getValue(0); nRSI1 = xLocalRSIMA.getValue(-1); if (nRSI1 == null) return; nRes = Math.abs(nRSI1 - nRSI); return new Array(nRSI, nRes);} |