Filter scrips near support and resistance (trend) lines

#1
AFL available.. Filter scrips near support and resistance (trend) lines

Hi all,
I'm referring the following AFL (by Kelvin Hand).

I need help on filtering scrips list for extended support and resistance lines (the scrip has no extended lines but lines are limited to current last bar alone).

Note:
Scrips CLOSE price just 1-2% near from support/resistance lines need to get filtered (so that in advance scrips will be taken for long or short position).
AFL has support and resistance lines until today EOD bar. But the lines have to get extended from today's bar and have to be shown in the chart.

Can anybody help kindly..

Thanks in advance :)

Code:
_SECTION_BEGIN("Supply Demand");
SetChartOptions(0, chartShowArrows | chartShowDates);
SetChartBkColor(ParamColor("Outer Panel", colorBlack));
SetChartBkGradientFill(ParamColor("Upper Chart", colorDarkGrey), ParamColor("Lower Chart", colorDarkGrey));
GraphXSpace = Param("GraphXSpace", 10, 0, 100, 1);

colorHighliter = IIf(C >= O, ColorRGB(0, 128, 0), ColorRGB(128, 0, 0));

//Demand Point - SUPPORT
colorDemandPoint = ParamColor("Demand Line", ColorRGB(0, 128, 255));
DemandPoint = (Ref(L, -1) < Ref(L, -2)) & (L < Ref(L, -1)) & (L < Ref(L, 1)) & (Ref(L, 1) < Ref(L, 2));

//Supply Point - RESISTANCE
colorSupplyPoint = ParamColor("Supply Line", ColorRGB(255, 128, 0));
SupplyPoint = (Ref(H, -1) > Ref(H, -2)) & (H > Ref(H, -1)) & (H > Ref(H, 1)) & (Ref(H, 1) > Ref(H, 2));

CountTrendBars = 0;
//CurrentBar = BarCount - 1;
dx0 = dx1 = dy0 = dy1 = 0;
sx0 = sx1 = sy0 = sy1 = 0;


//-- Modified by KelvinHand -----------
function VisiBarsPerChart()
{
lvb=Status("lastvisiblebar");
fvb=Status("firstvisiblebar");
return Min(lvb-fvb,BarCount-fvb);
}


nBars=1.5*VisiBarsPerChart();
if (nBars <BarCount)
iLimit = (BarCount-1) - nBars;
else
iLimit = 0;

//------------------------------------


for (i = BarCount-1; i>iLimit; i--) {
if (DemandPoint[i]) {
if (dx1 == 0 & dy1 == 0) {
dx1 = i;
dy1 = L[i];
} else {
dx0 = i;
dy0 = L[i];
}
if (dx0 != 0 & dx1 != 0 & dy0 != 0 & dy1 != 0) {
if (dy0 < dy1) {
a = (-dy0 + dy1) / (-dx0 + dx1);
b = dy0 - dx0 * a;
for (j = dx1; j < BarCount; j++) {
if (j != dx1) {
y2 = a * j + b;
if (C[j] < y2) {
dy1 = y2;
dx1 = j;
colorHighliter[j] = ColorRGB(128, 0, 128);
CountTrendBars[j] = dx1 - dx0 - 1;
break;
}
}
}
if (dy1 != y2) {
dy1 = y2;
dx1 = BarCount - 1;
}
Plot(LineArray(dx0, dy0, dx1, dy1, 0), "", colorDemandPoint, styleThick);
}
dx1 = dx0;
dy1 = dy0;
dx0 = dy0 = 0;
}	
}
if (SupplyPoint[i]) {
if (sx1 == 0 & sy1 == 0) {
sx1 = i;
sy1 = H[i];
} else {
sx0 = i;
sy0 = H[i];
}
if (sx0 != 0 & sx1 != 0 & sy0 != 0 & sy1 != 0) {
if (sy0 > sy1) {
a = (-sy0 + sy1) / (-sx0 + sx1);
b = sy0 - sx0 * a;
for (j = sx1; j < BarCount; j++) {
if (j != sx1) {
y2 = a * j + b;
if (C[j] > y2) {
sy1 = y2;
sx1 = j;
colorHighliter[j] = ColorRGB(128, 128, 0);
CountTrendBars[j] = sx1 - sx0 - 1;
break;
}
}
}
if (sy1 != y2) {
sy1 = y2;
sx1 = BarCount - 1;
}
Plot(LineArray(sx0, sy0, sx1, sy1, 0), "", colorSupplyPoint, styleThick);

}
sx1 = sx0;
sy1 = sy0;
sx0 = sy0 = 0;
}	
}	
}

//Stop Loss & Targets
for (i = BarCount-1; i>iLimit; i--) {
if (colorHighliter[i] == ColorRGB(128, 0, 128)) {
StopLoss = 0;
for (j = i - CountTrendBars[i]; j <= i; j++) {
StopLoss = Max(H[j], StopLoss);
}
if (i - (BarCount - 1) != 0) {
t1 = C[i] - (StopLoss - C[i]);
t2 = C[i] - ((StopLoss - C[i]) * 1.272);
t3 = C[i] - ((StopLoss - C[i]) * 1.618);
Plot(LineArray(i, StopLoss + 0.01, BarCount - 1, StopLoss + 0.01, 0), "", colorRed, styleDots | styleNoLabel);
Plot(LineArray(i, C[i], BarCount - 1, C[i], 0), "", colorYellow, styleDots);
Plot(LineArray(i, t1, BarCount - 1, t1, 0), "", colorRed, styleDots | styleNoLabel);
Plot(LineArray(i, t2, BarCount - 1, t2, 0), "", colorRed, styleDots | styleNoLabel);
Plot(LineArray(i, t3, BarCount - 1, t3, 0), "", colorRed, styleDots | styleNoLabel);
PlotText("Stop Loss\n@" + WriteVal(StopLoss + 0.01, 1.2), BarCount, StopLoss + 0.01, colorWhite);
PlotText("T1 @" + WriteVal(t1, 1.2), BarCount, t1, colorWhite);
PlotText("T2 @" + WriteVal(t2, 1.2), BarCount, t2, colorWhite);
PlotText("T3 @" + WriteVal(t3, 1.2), BarCount, t3, colorWhite);
}
break;
}
if (colorHighliter[i] == ColorRGB(128, 128, 0)) {
StopLoss = 9999;
for (j = i - CountTrendBars[i]; j <= i; j++) {
StopLoss = Min(L[j], StopLoss);
}
if (i - (BarCount - 1) != 0) {
t1 = C[i] + (C[i] - StopLoss);
t2 = C[i] + ((C[i] - StopLoss) * 1.272);
t3 = C[i] + ((C[i] - StopLoss) * 1.618);
Plot(LineArray(i, StopLoss - 0.01, BarCount - 1, StopLoss - 0.01, 0), "", colorRed, styleDots | styleNoLabel);
Plot(LineArray(i, C[i], BarCount - 1, C[i], 0), "", colorYellow, styleDots);
Plot(LineArray(i, t1, BarCount - 1, t1, 0), "", colorBrightGreen, styleDots | styleNoLabel);
Plot(LineArray(i, t2, BarCount - 1, t2, 0), "", colorBrightGreen, styleDots | styleNoLabel);
Plot(LineArray(i, t3, BarCount - 1, t3, 0), "", colorBrightGreen, styleDots | styleNoLabel);
PlotText("Stop Loss\n@" + WriteVal(StopLoss - 0.01, 1.2), BarCount, StopLoss - 0.01, colorWhite);
PlotText("T1 @" + WriteVal(t1, 1.2), BarCount, t1, colorWhite);
PlotText("T2 @" + WriteVal(t2, 1.2), BarCount, t2, colorWhite);
PlotText("T3 @" + WriteVal(t3, 1.2), BarCount, t3, colorWhite);
}	
break;
}
}

//Price
SetBarFillColor(colorHighliter);
Plot(C, "Close", IIf(colorHighliter == ColorRGB(128, 0, 128), ColorRGB(255, 0, 255), IIf(colorHighliter == ColorRGB(128, 128, 0), colorYellow, IIf(C > O, colorBrightGreen, IIf(C < O, colorRed, colorWhite)))), styleCandle);

//Volume
/*colorVolume = ParamColor("Volume Area", ColorRGB(128, 0, 128));
Plot(Volume, "", colorVolume, styleArea | styleOwnScale | styleNoLabel, Null, Null, 0, 0, 1);*/

Title = Name() + " - {{INTERVAL}} - {{DATE}} - Open = " + NumToStr(O, 1.2) + ", High = " + NumToStr(H, 1.2) + ", Low = " + NumToStr(L, 1.2) + ", Close = " + NumToStr(C, 1.2) + " (" + WriteVal(ROC(C, 1), 1.2) + "%)" + ", Volume = " + WriteVal(Volume, 1.2);
_SECTION_END();
 
Last edited:
#4
Yes, we should say thanks to Kelvin Hand and the developers of this AFL. Really these kind of people are good hearted.

Friends, still can anybody help for the query please.. Take care.
 
#8
Could somebody help please.

Just a filter for AUTOmatically drawn trendlines considering today's candle as point (drawing lines by lowest lows and highest highs) so that with the explored list we can trade for tomorrow (if today's close is nearby trendline).

Thanks.
 

Similar threads