File Name: EMAAngle.efs
Description:
EMA Angle
Formula Parameters:
Length : 34
AngleTreshold : 0.2
StartEMAShift : 6
EndEMAShift : 0
Price Scale : 10000
Notes:
Download File:
EMAAngle.efs
EFS Code:
Description:
EMA Angle
Formula Parameters:
Length : 34
AngleTreshold : 0.2
StartEMAShift : 6
EndEMAShift : 0
Price Scale : 10000
Notes:
Download File:
EMAAngle.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:
EMA Angle
Version: 1.0 09/30/2009
Formula Parameters: Default:
Length 34
AngleTreshold 0.2
StartEMAShift 6
EndEMAShift 0
Price Scale 10000
Notes:
**********************************/
var fpArray = new Array();
var bInit = false;
function preMain(){
setPriceStudy(false);
setShowCursorLabel(true);
setShowTitleParameters(false);
setStudyTitle("EMA Angle");
setCursorLabelName("EMAAngle", 0);
setPlotType(PLOTTYPE_HISTOGRAM, 0);
setDefaultBarFgColor(Color.red, 0);
setDefaultBarThickness(2,0);
var x = 0;
fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
with(fpArray[x++]) {
setLowerLimit(1);
setDefault(34);
}
fpArray[x] = new FunctionParameter("AngleTreshold", FunctionParameter.NUMBER);
with(fpArray[x++]) {
setLowerLimit(0.00001);
setDefault(0.2);
}
fpArray[x] = new FunctionParameter("StartEMAShift", FunctionParameter.NUMBER);
with(fpArray[x++]) {
setLowerLimit(1);
setDefault(6);
}
fpArray[x] = new FunctionParameter("EndEMAShift", FunctionParameter.NUMBER);
with(fpArray[x++]) {
setLowerLimit(0);
setDefault(0);
}
fpArray[x] = new FunctionParameter("PriceScale", FunctionParameter.NUMBER);
with(fpArray[x++]) {
setLowerLimit(0);
setDefault(10000);
}
}
var xMA = null;
function main(Length, AngleTreshold, StartEMAShift, EndEMAShift, PriceScale) {
var nBarState = getBarState();
var nEndMA = 0;
var nStartMA = 0;
var nAngle = 0;
var dFactor = 3.14159 / 180.0;
var mFactor = PriceScale;
var ShiftDif = StartEMAShift - EndEMAShift;
if (nBarState == BARSTATE_ALLBARS) {
if(Length == null) Length = 34;
if(AngleTreshold == null) AngleTreshold = 0.2;
if(StartEMAShift == null) StartEMAShift = 6;
if(EndEMAShift == null) EndEMAShift = 0;
if(PriceScale == null) PriceScale = 10000;
}
mFactor = PriceScale;
mFactor /= ShiftDif;
if (bInit == false) {
xMA = ema(Length, ohlc4());
bInit = true;
}
nEndMA = xMA.getValue(-EndEMAShift);
nStartMA = xMA.getValue(-StartEMAShift);
if (nEndMA == null || nStartMA == null) return;
nAngle = mFactor * (nEndMA - nStartMA);
if(nAngle > AngleTreshold) setBarFgColor(Color.green)
else if (nAngle < -AngleTreshold) setBarFgColor(Color.red)
else setBarFgColor(Color.black);
return nAngle;
}