/****************************/
/* */
/* Quadra Trading System */
/* Version 1.30 */
/* (11 August 2012) */
/* */
/****************************/
SetChartOptions(0, chartShowDates | chartWrapTitle);
/**********************/
/* */
/* Define Wilder's MA */
/* */
/**********************/
function WilderMA(Field, Period)
{
X[0] = Field[0];
for(i = 1; i < BarCount; i++)
{
X[i] = Field[i]/Period + X[i - 1] * (Period - 1)/Period;
}
return X;
}
/**********************/
/* */
/* Define EMA */
/* */
/**********************/
function MyEMA(Field, Period)
{
Y[0] = Field[0];
for(i = 1; i < BarCount; i++)
{
Y[i] = (Field[i] - Y[i - 1]) * 2/(Period + 1) + Y[i - 1];
}
return Y;
}
/********************/
/* */
/* Wilder's MAs */
/* */
/********************/
A1 = WilderMA(C, 5);
A2 = WilderMA(C, 8);
A3 = WilderMA(C, 13);
A4 = MyEMA(C, 50);
/********************/
/* */
/* Candle Color */
/* */
/********************/
Green = C > O;
Red = C < O;
for(i = 1; i<BarCount; i++)
{
if(C[i] == O[i])
{
if(Green[i - 1] AND C[i] >= C[i - 1]) Green[i] = 1;
if(Red[i - 1] AND C[i] <= C[i - 1]) Red[i] = 1;
}
}
/********************/
/* */
/* COMPUTE SL */
/* */
/********************/
PrevHi = H;
PrevLo = L;
SLBuy = Null;
SLShort = Null;
GUp = GapUp();
GDn = GapDown();
for(i = 2; i < BarCount; i++)
{
PrevLo[i] = PrevLo[i - 1];
if(L[i - 2] >= L[i - 1] AND L[i - 1] <= L[i])
{
PrevLo[i] = L[i - 1];
}
PrevHi[i] = PrevHi[i - 1];
if(H[i - 2] <= H[i - 1] AND H[i - 1] >= H[i])
{
PrevHi[i] = H[i - 1];
}
}
/********************/
/* */
/* BUY/SELL */
/* */
/********************/
Buy = (A1 > A2 AND A2 > A3);
Sell =(A1 < A2 AND A2 < A3);
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell, Buy);
Bought = Flip(Buy, Sell);
Sold = Flip(Sell, Buy);
for(i = 1; i <BarCount; i++)
{
SLShort[i] = Min(PrevHi[i], PrevHi[i - 1]) + 0.1;
if(GDn[i]) SLShort[i] = L[i - 1] + 0.1;
if(Sell[i]) break;
}
for(i = 1; i <BarCount; i++)
{
SLBuy[i] = Max(PrevLo[i], PrevLo[i - 1]) - 0.1;
if(GUp[i]) SLBuy[i] = H[i - 1] - 0.1;
if(Buy[i]) break;
}
for(i = 1; i < BarCount; i++)
{
if(Buy[i]) SLBuy[i] = PrevLo[i - 1] - 0.1;
if(Bought[i]) SLBuy[i] = Max(SLBuy[i - 1], PrevLo[i] - 0.1);
if(GUp[i]) SLBuy[i] = H[i - 1] - 0.1;
if(Sell[i]) SLShort[i] = PrevHi[i - 1] + 0.1;
if(Sold[i]) SLShort[i] = Min(PrevHi[i - 1], PrevHi[i]) + 0.1;
if(GDn[i]) SLShort[i] = L[i - 1] + 0.1;
}
for(i = 1; i<BarCount; i++)
{
if(SLShort[i] > SLShort[i - 1]) SLShort[i] = SLShort[i - 1];
}
Marker1 = Buy * shapeUpArrow + Sell * shapeDownArrow;
MarkerColor = IIf(Buy, colorBrightGreen, colorYellow);
Marker1Dist = IIf(Buy, 0.995 * L, 1.005 * H);
EMA_Position = IIf(A4 > A3 AND A4 > A2 AND A4 > A1, 1, IIf(A4 < A3 AND A4 < A2 AND A4 < A1, -1, 0));
/***********************/
/* */
/* SHOW/HIDE Option */
/* */
/***********************/
Arrows = ParamToggle("Show Arrows", "NO|YES");
ShowTSL= ParamToggle("Show TSL Line", "NO|YES");
_N(Title = EncodeColor(colorAqua) + "QUADRA EOD TRADING SYSTEM by Savant Garde; AFL Version 1.30 by Anant Navale\n\n"
+ EncodeColor(colorPink) + StrFormat("{{NAME}}({{INTERVAL}}), {{DATE}} : {{OHLCX}}, Vol=%1.0f\n{{VALUES}}\n", V)
+ "EMA50 location: " + EncodeColor(colorBrightGreen) + WriteIf(EMA_Position > 0, "Above, ", "")
+ EncodeColor(colorLightGrey) + WriteIf(EMA_Position == 0, "Inside, ", "")
+ EncodeColor(colorRed) + WriteIf(EMA_Position < 0, "Below, ", "")
+ EncodeColor(colorBrightGreen) + WriteIf(Green, " Green Candle", "")
+ EncodeColor(colorRed) + WriteIf(Red, " RedCandle\n\n", "\n\n")
+ EncodeColor(colorWhite) + WriteIf(Buy, "Buy Above " + (H + 0.1), "")
+ WriteIf(Sell, "Sell Below " + (L - 0.1), "")
+ WriteIf(Buy, " StopLoss = " + SLBuy, "")
+ WriteIf(Sell, " StopLoss = " + SLShort, ""));
if(Status("action") == actionIndicator)
{
Plot(A4, "EMA50", colorLightGrey, styleLine | styleThick);
Plot(A3, "Wilder MA13", colorRed, styleLine);
Plot(A2, "Wilder MA8", colorLightOrange, styleLine);
Plot(A1, "Wilder MA5", colorBrightGreen, styleLine);
if(ShowTSL)
{
Plot(SLBuy, "SL for Buy", colorLightBlue, styleDots);
Plot(SLShort, "SL for Short", colorGold, styleDots);
}
Plot(C, "", IIf(Green, colorGreen, IIf(Red, colorRed, colorGrey50)), styleCandle);
if(Arrows)
{
PlotShapes(Marker1, MarkerColor, 0, MArker1Dist);
}
}
if(Status("action") == actionExplore)
{
Filter = Buy | Sell;
SetOption("NoDefaultColumns", True);
AddTextColumn(Name(), "SYMBOL");
AddColumn(DateTime(), "DATE", formatDateTime);
AddColumn(IIf(Buy, 66, 83), "TRIGGER", formatChar, colorWhite, IIf(Buy, colorGreen, colorRed));
AddColumn(EMA_Position, "EMA Position",1.0);
AddColumn(IIf(Buy, H + 0.1, L - 0.1), "TRIG PRICE", 1.2);
AddColumn(IIf(Buy, SLBuy, SLShort), "Stop Loss", 1.2);
AddColumn(C, "Last Close", 1.2);
}