File Name: MovingAverageRibbon.efs
Description:
Moving Average Ribbon
Formula Parameters:
Base Length: 10
Arithmetic Or Geometric 1 Or 2: 1
Increment Or Multiplier: 10
Line Thickness: 2
Display Title Value: False
Notes:
Plots a "Moving Average Ribbon" using the gradient color system ╓ it
is created using a series of exponential moving averages of various
lengths. The lengths of the averages are calculated based on the length
of the first moving average line which is set by the input BaseLength.
Each subsequent length is calculated based on the ArithOrGeom_1or2 input.
Download File:
MovingAverageRibbon.efs
EFS Code:
Description:
Moving Average Ribbon
Formula Parameters:
Base Length: 10
Arithmetic Or Geometric 1 Or 2: 1
Increment Or Multiplier: 10
Line Thickness: 2
Display Title Value: False
Notes:
Plots a "Moving Average Ribbon" using the gradient color system ╓ it
is created using a series of exponential moving averages of various
lengths. The lengths of the averages are calculated based on the length
of the first moving average line which is set by the input BaseLength.
Each subsequent length is calculated based on the ArithOrGeom_1or2 input.
Download File:
MovingAverageRibbon.efs
EFS Code:
PHP Code:
/*********************************
Provided By:
eSignal (Copyright c eSignal), a division of Interactive Data
Corporation. 2008. 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:
Moving Average Ribbon
Version: 1.0.0 22/09/2008
Formula Parameters: Default:
* Base Length 10
* Arithmetic Or Geometric 1 Or 2 1
* Increment Or Multiplier 10
* Line Thickness 2
* Display Title Value False
Notes:
Plots a "Moving Average Ribbon" using the gradient color system ╓ it
is created using a series of exponential moving averages of various
lengths. The lengths of the averages are calculated based on the length
of the first moving average line which is set by the input BaseLength.
Each subsequent length is calculated based on the ArithOrGeom_1or2 input.
**********************************/
var fpArray = new Array();
var bInit = false;
function preMain() {
setPriceStudy(true);
setShowCursorLabel(false);
setShowTitleParameters( false );
setStudyTitle("Moving Average Ribbon");
setCursorLabelName("XMA1", 0);
setCursorLabelName("XMA2", 1);
setCursorLabelName("XMA3", 2);
setCursorLabelName("XMA4", 3);
setCursorLabelName("XMA5", 4);
setCursorLabelName("XMA6", 5);
setCursorLabelName("XMA7", 6);
setCursorLabelName("XMA8", 7);
setDefaultBarFgColor(Color.RGB(255,255,0), 7);
setDefaultBarFgColor(Color.RGB(255,200,0), 6);
setDefaultBarFgColor(Color.RGB(255,150,0), 5);
setDefaultBarFgColor(Color.RGB(255,150,0), 4);
setDefaultBarFgColor(Color.RGB(255,100,0), 3);
setDefaultBarFgColor(Color.RGB(255,50,0), 2);
setDefaultBarFgColor(Color.RGB(255,0,0), 1);
setDefaultBarFgColor(Color.RGB(255,0,0), 0);
setPlotType(PLOTTYPE_LINE, 0);
setPlotType(PLOTTYPE_LINE, 1);
setPlotType(PLOTTYPE_LINE, 2);
setPlotType(PLOTTYPE_LINE, 3);
setPlotType(PLOTTYPE_LINE, 4);
setPlotType(PLOTTYPE_LINE, 5);
setPlotType(PLOTTYPE_LINE, 6);
setPlotType(PLOTTYPE_LINE, 7);
setDefaultBarThickness(2, 0);
setDefaultBarThickness(2, 1);
setDefaultBarThickness(2, 2);
setDefaultBarThickness(2, 3);
setDefaultBarThickness(2, 4);
setDefaultBarThickness(2, 5);
setDefaultBarThickness(2, 6);
setDefaultBarThickness(2, 7);
askForInput();
var x=0;
fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Display Cursor Labels");
setDefault(false);
}
fpArray[x] = new FunctionParameter("BaseLength", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("Base Length");
setLowerLimit(1);
setDefault(10);
}
fpArray[x] = new FunctionParameter("ArithOrGeom_1or2", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("Arithmetic Or Geometric (1 Or 2)");
setLowerLimit(1);
setDefault(1);
}
fpArray[x] = new FunctionParameter("IncrementOrMultiplier", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("Increment Or Multiplier");
setLowerLimit(1);
setDefault(10);
}
fpArray[x] = new FunctionParameter("Thickness", FunctionParameter.NUMBER);
with(fpArray[x++]){
setName("Line Thickness");
setLowerLimit(1);
setDefault(2);
}
}
var aLength = new Array(8);
var aSmoothingFactor = new Array(8);
var aXMA = new Array(8);
var aXMA_Ref = new Array(8);
var aColor = new Array(8);
function main(BaseLength, ArithOrGeom_1or2, IncrementOrMultiplier, Thickness, ViewValue) {
var nCounter = 0;
var nState = getBarState();
if ( bInit == false ) {
setDefaultBarThickness(Thickness, 0);
setDefaultBarThickness(Thickness, 1);
setDefaultBarThickness(Thickness, 2);
setDefaultBarThickness(Thickness, 3);
setDefaultBarThickness(Thickness, 4);
setDefaultBarThickness(Thickness, 5);
setDefaultBarThickness(Thickness, 6);
setDefaultBarThickness(Thickness, 7);
setShowCursorLabel(ViewValue);
ClearArrays();
bInit = true;
}
if (nState == BARSTATE_NEWBAR) {
for (var i = 1; i <= 8; i++) {
aXMA_Ref[i] = aXMA[i];
}
}
if (getCurrentBarCount() == 1 ) {
aLength[1] = BaseLength ;
aSmoothingFactor[1] = 2 / ( aLength[1] + 1 );
aXMA[1] = close(0);
for (nCounter = 1; nCounter <= 7; nCounter++) {
if (ArithOrGeom_1or2 == 1)
aLength[nCounter + 1] = aLength[nCounter] + IncrementOrMultiplier;
else
aLength[nCounter + 1] = aLength[nCounter] * IncrementOrMultiplier;
aSmoothingFactor[nCounter + 1] = 2 / (aLength[nCounter + 1] + 1);
aXMA[nCounter + 1] = close(0);
}
} else {
for (nCounter = 1; nCounter <= 8; nCounter++) {
aXMA[nCounter] = aXMA_Ref[nCounter] + aSmoothingFactor[nCounter] * (close(0) - aXMA_Ref[nCounter]);
}
}
return new Array(aXMA[8], aXMA[7], aXMA[6], aXMA[5], aXMA[4], aXMA[3], aXMA[2], aXMA[1]);
}
function ClearArrays(){
for (var i = 1; i <= 8; i++) {
aLength[i] = 0;
aSmoothingFactor[i] = 0;
aXMA[i] = 0;
aXMA_Ref[i] = 1;
aColor[i] = 0;
}
}