File Name: PerformanceComp.efs
Description:
Compare up to 3 symbols on a % performance basis as a non-price study.
Formula Parameters:
Symbol1: Any valid symbol
Symbol2: Any valid symbol
Notes:
Must apply a time template that is not in dynamic mode to establish a specific starting point. This formula will not display useful results if your time template is in dynamic mode. For intra-day chart intervals, it is recommended to set the start/end times in your time template to the market’s open and close times.
Download File:
PerformanceComp.efs
EFS Code:
Description:
Compare up to 3 symbols on a % performance basis as a non-price study.
Formula Parameters:
Symbol1: Any valid symbol
Symbol2: Any valid symbol
Notes:
Must apply a time template that is not in dynamic mode to establish a specific starting point. This formula will not display useful results if your time template is in dynamic mode. For intra-day chart intervals, it is recommended to set the start/end times in your time template to the market’s open and close times.
Download File:
PerformanceComp.efs
EFS Code:
PHP Code:
/*************************************************
Provided By : eSignal. (c) Copyright 2003
*************************************************/
addBand(0, PS_SOLID, 2, Color.grey, "0");
var vLoaded = false;
var cSym = "";
function preMain() {
if (vLoaded == false) {
setStudyTitle("\% Performance ... Add Symbol(s)");
setCursorLabelName("", 0);
setCursorLabelName("Add Symbol", 1);
setCursorLabelName("Add Symbol", 2);
setDefaultBarFgColor(Color.blue, 0);
setDefaultBarFgColor(Color.red, 1);
setDefaultBarFgColor(Color.green, 2);
} else {
if (vSymbols[1] != null || vSymbols[2] != null) {
setStudyTitle("\% Performance " + cSym + " vs. ");
}
setCursorLabelName(cSym + " \% Return", 0);
if (vSymbols[1] != null) {
setCursorLabelName(vSymbols[1] + " \% Return", 1);
}
if (vSymbols[2] != null) {
setCursorLabelName(vSymbols[2] + " \% Return", 2);
}
}
}
var vSymbols = new Array(3);
var vBase = new Array(3);
var b = new Array(3);
for (i = 0; i < 3; ++i) {
vBase[i] = 100;
}
var vCalcStart = false;
function adj() {
for(cntr = 0; cntr < 3; ++cntr) {
b[cntr] = (vBase[cntr] - 100);
}
}
function ret_calc(pNew,pOld){
var r = ((pNew-pOld)/pOld);
return r;
}
function main(Symbol1, Symbol2) {
if (vLoaded == false) {
cSym = getSymbol();
vSymbols[0] = cSym;
for (cntr = 1; cntr < 3; ++cntr) {
if (eval("Symbol" + cntr) != null) {
vSymbols[cntr] = eval("Symbol" + cntr);
}
}
for (i = 0; i < 3; ++i) {
vBase[i] = 100;
}
adj();
vLoaded = true;
vCalcStart = false;
preMain();
}
if (getBarState() == BARSTATE_NEWBAR) {
for (cntr = 0; cntr < 3; ++cntr) {
if (vSymbols[cntr] != null) {
var p0 = close(0, 1, vSymbols[cntr]);
if (vCalcStart == false) {
var p1 = open(-1, 1, vSymbols[cntr]);
} else {
var p1 = close(-1, 1, vSymbols[cntr]);
}
if (p0 != null && p1 != null) {
var tReturn = ret_calc(p0, p1);
vBase[cntr] += (vBase[cntr] * tReturn);
}
}
}
vCalcStart = true;
adj();
}
return b;
}