QQE.efs
EFSLibrary - Discussion Board
File Name: QQE.efs
Description:
Qualitative Quantitative Estimation
Formula Parameters:
- RSI Length : 14
- SF : 5
Notes:
Download File:
QQE.efs
EFS Code:
/********************************* 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); }