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
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: