This is the indicator that I use on my chart. It is the only indicator I use on a price chart. As far as price is concerned, all I care about is Support and Resistance. I use this indicator on a one minute chart of the ES E-mini SP 500. It plots a Resistance line as soon as a Peak signal fires. When the second Peak signal fires, it plots a new Resistance line, and extends the old Resistance line in a different style. The same happens for Support lines.
This indicator in in Easy Language code, programed in TradeStation. It is shown below, plus attached as an ELD file.
//7-8-11
// Programed by tradescripter
//hh=higher high, ll=lower low
var: hh(False),ll(False),lh(False),hl(False);
var: ClsDwn(False),ClsUp(False);
var: Aftr929(False),Aftr932(False),Aftr939(False);
var: BeforeCls(False);
var: DayHrs(False),newDay(False),OKtoPlot(False);
var: Peak1(False),Peak2(False),Peak3(False),Peak4(False),Peak5(False),Peak6(False);
var: Bttm1(False),Bttm2(False),Bttm3(False),Bttm4(False),Bttm5(False),Bttm6(False);
var: Peak(False),Bttm(False);
var: PeakPrice(H),BttmPrice(L),PriorPeakPrice(H),PriorBttmPrice(L);
var: NoPriorPk(False),NoPriorBttm(False);
var: HL_Price(False),LH_Price(False);
var: NewRzstnceExt(-1), OldRzstnceExt(-1), OldSupport(-1), OldExtSpprt(-1);
var: OldRzstnceBegPrice(h), OldSprtBegPrice(L), OldHiExtBegPrice(H), OldBegPrice2(H);
var: NewRzstnceBegTime(t), NewRzstnceExtBegTime(t), NewLowExtBegTime(t), NewSpprtBegTime(t);
var: NewRzstnceBegDate(D), NewSpprtBegDate(D), NewRzstnceExtBegDate(D), NewLowExtBegDate(D);
var: HierHigh(False), LowerHigh(False), HierLow(False), LowerLow(False);
var: SteppedDwn(0);
var: NewRzstnce(-1), OldRzstnce(-1), NewSpprt(-1);
var: NewSupportExt(-1);
hh=h>h[1];
ll=l<l[1];
lh=h<h[1];
hl=l>l[1];
ClsDwn=c<o;
ClsUp=c>o;
Aftr929=T>929;
Aftr932=T>932;
Aftr939=T>939;
BeforeCls=T<1600;
DayHrs=Aftr929 and BeforeCls;
newDay=date <> date[1];
//OKtoPlot=DayHrs=True;
Peak1=ClsUp[1] and ClsDwn;
Peak2=lh[1] = False and ClsDwn;
Peak3=lh[1] = False and lh;
Peak4=ClsUp[1] and lh;
Peak5=hh[1] and hh = False;
Peak6=hh and ClsUp = False;
Bttm1=ClsDwn[1] and ClsUp;
Bttm2=hl[1] = False and ClsUp;
Bttm3=hl[1] = False and hl;
Bttm4=ClsDwn[1] and hl;
Bttm5=ll[1] and ll = False;
Bttm6=ll and ClsDwn = False;
Peak=(Peak1 = True or Peak2 = True or Peak3 = True or Peak4 = True or Peak5 = True);
Bttm=(Bttm1 = True or Bttm2 = True or Bttm3 = True or Bttm4 = True or Bttm5 = True);
NoPriorPk=Peak[1] = false;
NoPriorBttm=Bttm[1] = false;
if Peak6 and NoPriorPk then
Begin
PeakPrice = H;
End else If
Peak and NoPriorPk then
Begin
PeakPrice = H[1];
End;
if Bttm6 and NoPriorBttm then
BttmPrice=L else If Bttm and NoPriorBttm then
BttmPrice = L[1];
HierLow=BttmPrice>BttmPrice[1];
LowerHigh=PeakPrice<PeakPrice[1];
LowerLow=BttmPrice<BttmPrice[1];
HierHigh=PeakPrice>PeakPrice[1];
if LowerLow then SteppedDwn = 1 else if HierLow then SteppedDwn = 0;
if PeakPrice <> PeakPrice[1] then PriorPeakPrice = PeakPrice[1];
if BttmPrice <> BttmPrice[1] then PriorBttmPrice = BttmPrice[1];
{-- Starts a new Resistance Line, then ends the old Resistance Trend line if a new peak signal fires ---}
If Peak and NoPriorPk Then
Begin
OldRzstnce = NewRzstnce;
If Peak6 and NoPriorPk then
Begin
NewRzstnce = tl_new(d[1], t[1], H, d, t, H);
End
Else
Begin
NewRzstnce = tl_new(d[1], t[1], H[1], d, t, H[1]);
End;
Value1 = TL_SetExtRight(NewRzstnce, True);
Value2 = TL_SetSize(NewRzstnce, 2);
Value3 = TL_SetColor(NewRzstnce, Blue);
If OldRzstnce <> -1 Then
Begin
NewRzstnceBegDate = TL_GetBeginDate(NewRzstnce);
NewRzstnceBegTime = TL_GetBeginTime(NewRzstnce);
OldRzstnceBegPrice = TL_GetBeginVal(OldRzstnce);
Value4 = TL_SetExtRight(OldRzstnce, False); //Stop extending the original line to the right.
Value5 = TL_SetEnd(OldRzstnce, NewRzstnceBegDate, NewRzstnceBegTime, OldRzstnceBegPrice);
End;
End;
{-- Starts a new trendline if a new bottom signal fires ---}
If Bttm and NoPriorBttm Then
Begin
OldSupport = NewSpprt;
If Bttm6 and NoPriorBttm then
Begin
NewSpprt = tl_new(d[1], t[1], L, d, t, L);
End
Else
Begin
NewSpprt = tl_new(d[1], t[1], L[1], d, t, L[1]);
End;
Value6 = TL_SetExtRight(NewSpprt, True);
Value7 = TL_SetSize(NewSpprt, 2);
Value8 = TL_SetColor(NewSpprt, magenta);
If OldSupport <> -1 Then
Begin
NewSpprtBegDate = TL_GetBeginDate(NewSpprt);
NewSpprtBegTime = TL_GetBeginTime(NewSpprt);
OldSprtBegPrice = TL_GetBeginVal(OldSupport);
Value9 = TL_SetExtRight(OldSupport, False);
Value10 = TL_SetEnd(OldSupport, NewSpprtBegDate, NewSpprtBegTime, OldSprtBegPrice);
End;
End;
{-- Extends the old Resistance trendline if a new peak signal fires ---}
If Peak and NoPriorPk and H <= PeakPrice[1] Then
Begin
OldRzstnceExt = NewRzstnceExt;
NewRzstnceExt = tl_new(d[1], t[1], OldRzstnceBegPrice, d, t, OldRzstnceBegPrice);
Value11 = TL_SetExtRight(NewRzstnceExt, True);
Value12 = TL_SetColor(NewRzstnceExt, Blue);
Value13 = Tl_setstyle(NewRzstnceExt, Tool_Dotted);
If OldRzstnceExt <> -1 Then
Begin
NewRzstnceExtBegDate = TL_GetBeginDate(NewRzstnceExt);
NewRzstnceExtBegTime = TL_GetBeginTime(NewRzstnceExt);
OldHiExtBegPrice = TL_GetBeginVal(OldRzstnceExt);
Value14 = TL_SetExtRight(OldRzstnceExt, False);
Value15 = TL_SetEnd(OldRzstnceExt, NewRzstnceExtBegDate, NewRzstnceExtBegTime, OldHiExtBegPrice);
End;
End;
{-- Extends the old support line if a new bttm signal fires ---}
If Bttm and NoPriorBttm and L >= BttmPrice[1] Then
Begin
OldExtSpprt = NewSupportExt;
NewSupportExt = tl_new(d[1], t[1], OldSprtBegPrice, d, t, OldSprtBegPrice);
Value16 = TL_SetExtRight(NewSupportExt, True);
Value17 = TL_SetColor(NewSupportExt, Magenta);
Value18 = Tl_setstyle(NewSupportExt, Tool_Dotted);
If OldExtSpprt <> -1 Then
Begin
NewLowExtBegDate = TL_GetBeginDate(NewSupportExt);
NewLowExtBegTime = TL_GetBeginTime(NewSupportExt);
OldBegPrice2 = TL_GetBeginVal(OldExtSpprt);
Value19 = TL_SetExtRight(OldExtSpprt, False);
Value20 = TL_SetEnd(OldExtSpprt, NewLowExtBegDate, NewLowExtBegTime, OldBegPrice2);
End;
End;
_PRICE_LEVELS_PRICE.ELD