Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Trend Detection Index for eSignal (EFS)
The trend detection index (TDI) is used to detect when a trend has begun and when it has come to an end. The TDI can be used as a stand-alone indicator or combined with others; it will perform well in detecting the beginning of trends.
Indicator / Formula
/***********************************************************
Description : This Indicator plots the Trend Detection Index
Provided By : TS Support, LLC for eSignal
Modified by : Alexis C. Montenegro 08/04/2006
- converted to efs2 syntax
- added multiple time frame/symbol capability
- added moving average
***********************************************************/
var fpArray = new Array();
function preMain(){
setStudyTitle("Trend Detection Index");
setCursorLabelName("TDI",0);
setCursorLabelName("MAofTDI",1);
setDefaultBarFgColor(Color.blue, 0);
setDefaultBarFgColor(Color.red, 1);
setDefaultBarThickness(1,0);
setDefaultBarThickness(1,1);
var x=0;
fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER);
with(fpArray[x++]){
setLowerLimit(1);
setDefault(12);
}
fpArray[x] = new FunctionParameter("Source", FunctionParameter.STRING);
with(fpArray[x++]){
addOption("open");
addOption("high");
addOption("low");
addOption("close");
addOption("hl2");
addOption("hlc3");
addOption("ohlc4");
setDefault("close");
}
fpArray[x] = new FunctionParameter("Symbol", FunctionParameter.STRING);
with(fpArray[x++]){
setDefault();
}
fpArray[x] = new FunctionParameter("Interval", FunctionParameter.STRING);
with(fpArray[x++]){
setDefault();
}
fpArray[x] = new FunctionParameter("MAType", FunctionParameter.STRING);
with(fpArray[x++]){
addOption("sma");
addOption("ema");
addOption("wma");
setDefault("sma");
}
fpArray[x] = new FunctionParameter("MALength", FunctionParameter.NUMBER);
with(fpArray[x++]){
setLowerLimit(1);
setDefault(3);
}
fpArray[x] = new FunctionParameter("LineColor1", FunctionParameter.COLOR);
with(fpArray[x++]){
setName("Color1");
setDefault(Color.blue);
}
fpArray[x] = new FunctionParameter("LineColor2", FunctionParameter.COLOR);
with(fpArray[x++]){
setName("Color2");
setDefault(Color.red);
}
fpArray[x] = new FunctionParameter("Params", FunctionParameter.BOOLEAN);
with(fpArray[x++]){
setName("Show Parameters");
setDefault(false);
}
}
var bInit = false;
var xTDI = null;
var xMATDI = null;
function main(Length,Source,Symbol,Interval,MAType,MALength,LineColor1,LineColor2,Params){
if(bInit==false){
if(Symbol == null) Symbol = getSymbol();
if(Interval == null) Interval = getInterval();
var vSymbol = Symbol+","+Interval;
xTDI = getSeries(efsInternal("calcTDI", Length,eval(Source)(vSymbol)));
xMATDI = getSeries(eval(MAType)(MALength,xTDI));
setDefaultBarFgColor(LineColor1,0);
setDefaultBarFgColor(LineColor2,1);
addBand(0,PS_SOLID,1,Color.lightgrey,"0");
setShowTitleParameters(eval(Params));
bInit = true;
}
return new Array (xTDI, xMATDI);
}
xMOM = null;
function calcTDI(period, source){
if (xMOM == null) xMOM = mom(period,source);
var MomSum = 0;
var MomSumAbs = 0;
var MomAbsSum = 0;
var MomAbsSum2 = 0;
for (var i=0; i<period-1; i++){
MomSum += xMOM.getValue(-i);
}
MomSumAbs = Math.abs(MomSum);
for (var i=0; i<period-1; i++){
MomAbsSum += Math.abs(xMOM.getValue(-i));
}
for (var i=0; i<period*2-1; i++){
MomAbsSum2 += Math.abs(xMOM.getValue(-i));
}
var ret = MomSumAbs - (MomAbsSum2 - MomAbsSum);
return ret;
}0 comments
Leave Comment
Please login here to leave a comment.
Back