Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
TD Moving Average 2 for Amibroker (AFL)
TD’s moving average type 2
By milostea – rcarjunk1206 [at] charter.ent
Screenshots
Indicator / Formula
_SECTION_BEGIN("TDMA-II");
/******************************************************************
* TD Moving Average II:
* Enter long: if "tdmaentry" is greater than 0
* Enter short: if "tdmaentry" is less than 0
* Exit long: if "tdmastop" is 1
* Exit short: if "tdmastop" is -1
*
* Improvements: Regression testing on the best combination of
* moving averages.
*******************************************************************/
TDPlotStyle = ParamStyle("Plot Style", styleLine);
TDSHortPeriods = Param("Short Periods", 3, 1, 100, 1);
TDLongPeriods = Param("Long Periods", 34, 1, 100, 1);
shortma = MA(C, TDSHortPeriods);
longma = MA(C, TDLongPeriods);
shortroc = ROC(shortma, TDSHortPeriods - 1);
longroc = ROC(longma, 1);
tdma2longtrigger = Cross(shortma, longma);
tdma2shorttrigger = Cross(longma, shortma);
tdma2long = shortma > longma;
tdma2short = longma > shortma;
tdma2green = shortroc > 0 AND longroc > 0;
tdma2red = shortroc < 0 AND longroc < 0;
tdmastop[0] = 0;
tdmaentry[0] = 0;
bTrend = 0;
nEntryAt = 0;
nShortEntryAt = 0;
nLongEntryAt = 0;
for (x = 0; x < BarCount; x++)
{
//loop to figure out the trends and correponding stops
tdmastop[x] = 0;
tdmaentry[x] = 0;
if (tdma2longtrigger[x] == 1)
{
//we have a cross to the upside
if (bTrend < 0)
tdmastop[x] = 0-1;
//if we were in a short, exit here
bTrend = 1; //start the up trend
}
else if (tdma2shorttrigger[x] == 1)
{
//we have a cross to the downside
if (bTrend > 0)
tdmastop[x] = 1;
//if we were in a long, exit here.
bTrend = 0-1; //start the down trend
}
if (tdma2long[x] == 1 AND tdma2green[x] == 1)
{
//TD says that you enter only after the cross AND
//the ROCs for both MAs are positive.
if (bTrend == 1)
{
//OK. let's go long
tdmaentry[x] = 1; //OK, we enter at the close here. This could also be the Open for next Day. bTrend++; //set the flag that we're now long
nLongEntryAt = x; //save the bar's index for later. This is our 'trigger' Day
}
}
if (tdma2short[x] == 1 AND tdma2red[x] == 1)
if (bTrend == 0-1)
{
//we do the same here but in the opposite direction (short trade)
tdmaentry[x] = 0-1;
bTrend--;
nShortEntryAt = x;
}
if (bTrend > 1)
{
//OK. We are in a long trade. See if our stop was hit.
if (L[x] <= (tdma2long[nLongEntryAt] - 0.50))
//NOTE: I use 50 cents below the MA for my stop.
{
if (x < nLongEntryAt)
//make sure that we don't exit on the "trigger" day
{
bTrend = 0; //no trend
tdmastop[x] = 1; //long exit
}
}
}
if (bTrend < 0-1)
{
//OK. We are in a short trade. See if our stop was hit.
if (H[x] >= (tdma2long[nShortEntryAt] + 0.50))
if (x < nShortEntryAt)
{
bTrend = 0; //no trend
tdmastop[x] = 0-1; //short exit
}
}
}
Plot(shortma, "TDMA-2S", IIf(shortroc > 0, colorGreen, colorRed), TDPlotStyle | styleNoRescale | styleNoTitle, Null, Null, 0);
Plot(longma, "TDMA-2L", IIf(longroc > 0, colorGreen, colorRed), TDPlotStyle | styleNoRescale, Null, Null, 0);
entryshape = IIf(tdmaentry == 1, shapeUpArrow, IIf(tdmaentry < 0, shapeDownArrow, shapeNone));
//I use a hollow circle (red or green) to indicate an exit
exitshape = IIf(tdmastop == 1, shapeHollowCircle, IIf(tdmastop < 0, shapeHollowCircle, shapeNone));
PlotShapes(entryshape, IIf(tdmaentry == 1, colorGreen, IIf(tdmaentry < 0, colorRed, colorBlack)), 0, IIf(tdmaentry == 1, Low, IIf(tdmaentry < 0, High, C)), IIf(tdmaentry == 1, - 10, IIf(tdmaentry < 0, 5, - 10)));
PlotShapes(exitshape, IIf(tdmastop == 1, colorGreen, IIf(tdmastop < 0, colorRed, colorBlack)), 0, IIf(tdmastop == 1, Low, IIf(tdmastop < 0, High, C)), IIf(tdmastop == 1, - 13, IIf(tdmastop < 0, 13, - 15)));
_SECTION_END();0 comments
Leave Comment
Please login here to leave a comment.
Back