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