Quadra Trading System

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4
At a glance
Powered by AI
The document describes a trading system that uses Wilder's Moving Averages (MAs) and an Exponential Moving Average (EMA) to generate buy and sell signals. It also defines steps to calculate stop losses.

The Quadra Trading System is a technical analysis based trading strategy that uses Wilder's MAs of different periods and an EMA to identify buy and sell signals.

Wilder's MAs of periods 5, 8 and 13 candles are defined and calculated. An EMA of period 50 candles is also defined and calculated.

/****************************/

/* */
/* 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 = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close


%g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));

/*_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);
}

You might also like