[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Looking for an indicator to display higher-highs/lower lows



PureBytes Links

Trading Reference Links

Carrying on from Tim's recent discussion, which is also relevant to 
your chart example.


In your example they recommend drawing a line under the 'pivots'.
Theoretically this plots a classic trend but in practice iti s not so 
easy because the pivots don't play the game by lining up nicely along 
the line. Typically the slope (monentum) of the 'pivot to pivot' line 
changes througout the wave (note that I use my own system for wave 
analysis ... sorry I won't publish my core methods that I still use .. 
especially if they are original work).
There are also other problems with plotting a trendline from low to low 
or high to high e.g. once some retracement starts to occur then some 
lows or highs have to be 'missed' to retain the integrity of the 
sraight line but using ValueWhen(higher low OR lower high,N) can give 
you something precise to work with, including ROC.

IMO the term 'Pivot' is interchangeable with Peak/Trough etc  .. 
sometimes, in my code, I use both terms to mean the same thing.

As per my comments to Tim, I have some old code laying around ... not 
complete and perhaps not the best but it gives you another avenue of 
thought (while I am not using it at the moment I found it a worthwhile 
subject of study and the fact I am not using it is not a negative 
assessment of its value).

Note - all of my examples were written to use as visual tools only - 
they contain a look forward component so they aren't suitable for 
backtesting (they can be recoded for BT) ... a few incomplete examples 
(AFAIK all that I have left) ..... it is basically my own stuff, 
especially the idea of MajorPeaks which are the macro patterns (they 
correspond to a higher timeframe).


Written for AB 4.9 in my early AB days (pretty basic stuff).

Incomplete examples ... use variations to achieve other results 
including similar to the TS example.

Haven't used them for a long time OR checked them recently so no 
guarantees as to their accuracy.

I probably haven't even backtested many or any of them.... I am not 
really an algorithmic trader ... I just use AB for reasearching and 
thinking about strategies etc.

My idea of a peak/trough is based on three bars with the central bar 
either higher or lower.


I did write other versions and consider variations but I think that 
code is gone.

One of the issues in writing code for a peak/trough is identifying when 
two bars have equal highs ... what to do about that is personal 
choice ... I did have some solutions ... it looks like some of the code 
may include some of that stuff ... not sure if it is good or not.

The examples are biased to the long side because I tend to work the 
code out in one direction first and only code the short side later.

***********************************************************

/*PLOTDYNHI*/

/*DYNAMICALLY PLOTS HIGHEST VALUE FOR THE PERIOD*/


//Suitable for overlaying price(C)charts
//DoubleClick left mouse button on any bar in the chart to select the 
period
//DoubleClick left mouse button on space to the right of the chart to 
deselect the period
//If no period is selected the default is all bars



P = (LastValue(BarIndex()) - BeginValue(BarIndex())) + 1;//Periods
PH = HHV(C,P);//PeriodHigh
SD = IIf(DateNum() < BeginValue(DateNum()), Null, LastValue
(PH));//SelectedDate

Plot(SD, "PeriodHi",34,8);

******************************************************************
/*P_DYNHIPEAK*/

/*DYNAMICALLY PLOTS HIGHEST 3 Bar PEAK VALUE FOR THE PERIOD*/


/*Suitable for overlaying price(C)charts*/
/*DoubleClick left mouse button on any bar in the chart to select the 
period*/
/*DoubleClick left mouse button on space to the right of the chart to 
deselect the period*/
/*If no bar is selected the defaults is all bars*/
/*Caution: it will not see peaks with flat tops (two or more equal 
closes)*/
/*Caution:if there is no peak within the selected period the most 
recent peak will be indicated*/ 

PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
PKV = IIf(PK == 1, ValueWhen(PK,C,1), ValueWhen(PK,C,0));//PeakValue
P = (LastValue(BarIndex()) - BeginValue(BarIndex())) + 1;//Periods
HPK = HHV(PKV,P);//HighestPeakValue
SD = IIf(DateNum() < BeginValue(DateNum()), Null, LastValue
(HPK));//SelectedDate

Plot(SD, "PeriodHiPeak",34,8);




********************************************************************
//PLOTMAJORPEAKS

//PLOTS ALL MAJOR PEAK RESISTANCE LINES

//Suitable for overlaying charts
//A MajorPeak is defined as the Highest Peak of any three Peaks


PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
PKV0 = ValueWhen(PK,C,0);//PeakValue0
PKV1 = ValueWhen(PK,C,1);//PeakValue1
PKV2 = ValueWhen(PK,C,2);//PeakValue2
MPK = PKV2 < PKV1 AND PKV1 > PKV0 ;//MajorPeak
MPKV =  ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, 
PKV1,1);   //MajorPeakValue


Plot(MPKV, "LastPeak",34,1);

**********************************************************************

/*P_DYNHIPEAK*/

/*DYNAMICALLY PLOTS HIGHEST 3 Bar PEAK VALUE FOR THE PERIOD*/


/*Suitable for overlaying price(C)charts*/
/*DoubleClick left mouse button on any bar in the chart to select the 
period*/
/*DoubleClick left mouse button on space to the right of the chart to 
deselect the period*/
/*If no bar is selected the defaults is all bars*/
/*Caution: it will not see peaks with flat tops (two or more equal 
closes)*/
/*Caution:if there is no peak within the selected period the most 
recent peak will be indicated*/ 

PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
PKV = IIf(PK == 1, ValueWhen(PK,C,1), ValueWhen(PK,C,0));//PeakValue
P = (LastValue(BarIndex()) - BeginValue(BarIndex())) + 1;//Periods
HPK = HHV(PKV,P);//HighestPeakValue
SD = IIf(DateNum() < BeginValue(DateNum()), Null, LastValue
(HPK));//SelectedDate

Plot(SD, "PeriodHiPeak",34,8);

**********************************************************

//P_3BarPeaks

//Suitable for overlaying charts
//References future bars

//PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
//PKV = ValueWhen(PK,C,1);//PeakValue
//Plot(PKV, "LastPeak",34,1);

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

/* draw horizontal lines at hi & lo pivot points*/
//JohnRUK TraderJUK
//Shifts resistance line 1 bar
//3 Bar peaks

//P = ParamField("Price field",-1);
//Hipiv = IIf(P<Ref(P,-1) AND (Ref(P,-1)>Ref(P,-2)),1,0);
//Lopiv = IIf(P>Ref(P,-1) AND (Ref(P,-1)<Ref(P,-2)),1,0);
//hiline=ValueWhen(hipiv==1,Ref(P,-1),1);
//loline=ValueWhen(lopiv==1,Ref(P,-1),1);
//Plot (Hiline,"hiline",colorRed);
//Plot (Loline,"loline",colorBlue);

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

/*P_Peaks*/

/*PLOTALLPEAKS*/

/*PLOTS ALL PEAK VALUES FOR THE PERIOD*/


//Suitable for overlaying price(C)charts
//References future bars
//Recognises flat peaks of any length


PKR = ROC(C,1) >= 0 AND Ref(ROC(C,1),1) < 0 ;//PeakRight
PKRV = ValueWhen(PKR == 1, C,1);//PeakRightValue
PKL = ROC(C,1) > 0 AND Ref(ROC(C,1),1) <= 0 ;//PeakLeft
BSPKL = BarsSince(PKL == 1);//BarsSincePeakLeft
PKP = ValueWhen(PKR == 1, BSPKL,1);//PeakPeriods
PKPH = HHV(C,PKP + 1); //PeakPeriodHigh
PKV = ValueWhen(PKRV == PKPH AND PKR == 1, PKRV,1);//PeakValue

Plot(PKV, "PeakHi",34,8);

*****************************************************************

/*P_HHV*/

P = Param("periods",7,0,50,1);
H = HHV(C,P);
Plot(H,"HHV",34,1);

*******************************************************************

//PLOTLASTPEAK

//Suitable for overlaying charts
//Once overlayed on one chart use the keyboard arrows to scroll up or 
down through symbol lists
//SelectedDate ignores dates (bars) before the peak
//Add additional resistance lines if a deeper history is required
//Code variations can identify major peaks or change the timeframe 
upwards

//PLOTS THE MOST RECENT PEAK RESISTANCE LINE

PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
PKV = ValueWhen(PK,C,1);//PeakValue
PKD = ValueWhen(PK,DateNum(),1);//PeakDate
SD = IIf(DateNum() < LastValue(PKD,lastmode = True ), Null, LastValue
(PKV,Lastmode = True));//SelectedDate

Plot(SD, "LastPeak",34,8);

//PLOT 2ND LAST PEAK RESISTANCE LINE

PKV2 = ValueWhen(PK,C,2);//PeakValue2
PKD2 = ValueWhen(PK,DateNum(),2);//PeakDate2
SD2 = IIf(DateNum() < LastValue(PKD2,lastmode = True ), Null, LastValue
(PKV2,Lastmode = True));//SelectedDate

Plot(SD2, "LastPeak2",34,8);

****************************************************************

//PLOTCurrentMAJORPEAKS

//Suitable for overlaying charts
//A MajorPeak is defined as the Highest Peak central to any three Peaks

//PLOT THE LAST MAJOR PEAK RESISTANCE LINE


PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
PKV0 = ValueWhen(PK,C,0);//PeakValue0
PKV1 = ValueWhen(PK,C,1);//PeakValue1
PKV2 = ValueWhen(PK,C,2);//PeakValue2
MPK = PKV2 < PKV1 AND PKV1 > PKV0 ;//MajorPeak
MPKV =  ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, 
PKV1,1);   //MajorPeakValue
MPKD = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, DateNum
(),1);   //MajorPeakDate
SD = IIf(DateNum() < LastValue(MPKD,lastmode = True ), Null, LastValue
(MPKV,Lastmode = True));//SelectedDate

Plot(SD, "LastMajorPeak",34,8);



//PLOT THE SECOND LAST MAJOR PEAK RESISTANCE LINE


//PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
//PKV0 = ValueWhen(PK,C,0);//PeakValue0
//PKV1 = ValueWhen(PK,C,1);//PeakValue1
//PKV2 = ValueWhen(PK,C,2);//PeakValue2
//MPK = PKV2 < PKV1 AND PKV1 > PKV0 ;//MajorPeak
MPKV2 =  ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, 
PKV1,2);   //MajorPeakValue
MPKD2 = ValueWhen(Ref(MPK,-1) == 0 AND MPK == 1, DateNum
(),2);   //MajorPeakDate
SD2 = IIf(DateNum() < LastValue(MPKD2,lastmode = True ), Null, LastValue
(MPKV2,Lastmode = True));//SelectedDate

Plot(SD2, "LastMajorPeak",34,8);

******************************************************************

//PLOT ALL PEAKS

//Suitable for overlaying charts
//References future bars

//PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak
//PKV = ValueWhen(PK,C,1);//PeakValue
//Plot(PKV, "LastPeak",34,1);

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

/* draw horizontal lines at hi & lo pivot points*/
//JohnRUK TraderJUK
//Shifts resistance line 1 bar

//P = ParamField("Price field",-1);
//Hipiv = IIf(P<Ref(P,-1) AND (Ref(P,-1)>Ref(P,-2)),1,0);
//Lopiv = IIf(P>Ref(P,-1) AND (Ref(P,-1)<Ref(P,-2)),1,0);
//hiline=ValueWhen(hipiv==1,Ref(P,-1),1);
//loline=ValueWhen(lopiv==1,Ref(P,-1),1);
//Plot (Hiline,"hiline",colorRed);
//Plot (Loline,"loline",colorBlue);

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

/*P_TROUGHS*/

/*PLOTS ALL TROUGH VALUES FOR THE PERIOD*/


//Suitable for overlaying price(C)charts
//References future bars
//Recognises flat troughs of any length


TR = ROC(C,1) <= 0 AND Ref(ROC(C,1),1) > 0 ;//TroughRight
TRV = ValueWhen(TR == 1, C,1);//TroughRightValue
TL = ROC(C,1) < 0 AND Ref(ROC(C,1),1) >= 0 ;//TroughLeft
BSTL = BarsSince(TL == 1);//BarsSinceTroughLeft
TP = ValueWhen(TR == 1, BSTL,1);//PeakPeriods
TPL = LLV(C,TP + 1); //TroughPeriodLow
TV = ValueWhen(TRV == TPL AND TR == 1, TRV,1);//TroughValue

Plot(TV, "TroughLo",32,8);


*****************************************************************

/*PLOTSALLMAJORTROUGHS*/

/*PLOTS ALL MAJOR TROUGH VALUES FOR THE PERIOD*/


//Suitable for overlaying price(C)charts
//References future bars
//Recognises flat troughs of any length
//A Major Trough comprises any two Troughs where a Trough is followed 
by a higher Trough


TR = ROC(C,1) <= 0 AND Ref(ROC(C,1),1) > 0 ;//TroughRight
TRV = ValueWhen(TR == 1, C,1);//TroughRightValue
TL = ROC(C,1) < 0 AND Ref(ROC(C,1),1) >= 0 ;//TroughLeft
BSTL = BarsSince(TL == 1);//BarsSinceTroughLeft
TP = ValueWhen(TR == 1, BSTL,1);//TroughPeriods
TPL = LLV(C,TP + 1); //TroughPeriodLow
//TV = ValueWhen(TRV == TPL AND TR == 1, TRV,1);//TroughValue
//MTV = ValueWhen(TV < Ref(TV,1),TV,1);

TV0 = ValueWhen(TRV == TPL AND TR == 1, TRV,0);//TroughValue0
TV1 = ValueWhen(TRV == TPL AND TR == 1, TRV,1);//TroughValue1
TV2 = ValueWhen(TRV == TPL AND TR == 1, TRV,2);//TroughValue2
TV3 = ValueWhen(TRV == TPL AND TR == 1, TRV,3);//TroughValue3

MT = TV2 > TV1 AND TV1 < TV0 OR TV3 > TV2 AND TV2 == TV1 AND TV1 < 
TV0;                                      ; //MajorTrough
MTV =  ValueWhen(Ref(MT,-1) == 0 AND MT == 1, 
TV1,1);   //MajorTroughValue

Plot(MTV, "MajorTroughLo",32,8);






--- In amibroker@xxxxxxxxxxxxxxx, "droskill" <droskill@xxx> wrote:
>
> Hey all - I'm looking for an indicator that produces something similar
> to this chart from Tradestation:
> 
> http://www.elitetrader.com/vb/attachment.php?s=&postid=1582014
> 
> I'm talking about the code to show a higher high and lower lows.
> 
> Any help appreciated!
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html

*********************************
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/