|
Brian & Mark,
Thanks for responses. Valuewhen was the function I
was somehow forgetting - too much screen time ;-)
Code below draws simple hi/lo pivot level lines on
selected plot.
John <|:-) .........(dunces hat)
8<
/* draw horizontal lines at hi & lo pivot
points*/ 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);
8<
----- Original Message -----
Sent: Friday, October 13, 2006 3:29
AM
Subject: [amibroker] Re: Can be coded
without loop?
Hello John,
I came out of weekly hibernation on account of you being
a gentleman and a scholar.
Here is a small suite that fits nicely
with Prakash's example. I modified his code to make it consistent with my
style (I prefer bar charts to candlestick and generally overlay for this
type of *indicator*). I haven't got around to doing the
troughs. They are the introductory modules for some higher level indicators
(still in the pipeline).
I hope they offer some help or stimulate
some ideas that lead to resolutions for
you.
---------------------------------------------------------- //PLOTSRCHANNEL
//Plots
a support and resistance channel //Top Band looks back X periods and plots
a new recent HHV each time the Close crosses above the MA //Bottom Band
looks back X periods and plots a new recent LLV each time Close crosses
below the MA //Suitable for overlaying on charts
/* Modified from
AFL Code by Prakash Shenoi */
P=
Param("Periods",10,1,30,1);//Periods R=ValueWhen(Cross(C,MA(C,P)),HHV(H,P),1);//Resistance S=ValueWhen(Cross(MA(C,P),C),LLV(L,P),1);//Support Plot
(R,"Res",34,8+16); Plot
(S,"Supp",32,8+16);
----------------------------------------------------------
//PLOTALLPEAKS
//PLOTS
ALL PEAK RESISTANCE LINES
//Suitable for overlaying charts //Best
viewed with chart in colorBlack, styleLine view //This example is for use
with Price(C) charts //Peaks can be defined for any array //A Peak is
defined as the Highest High central to any three bars /*Alternative Peak
definitions can use more bars AND/OR allow for equal highs on consecutive
bars*/ /*Green is chosen as the Resistance line color to standardise
ProfitStop lines for Bull trades*/ /*Red is chosen as the Support line
color to standardise StopLoss lines for Bear trades*/
PK = C >
Ref(C,-1) AND Ref(C,1) < C;//Peak PKV =
ValueWhen(PK,C,1);//PeakValue Plot(PKV,
"LastPeak",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 nominated peak //Add additional resistance lines if
a deeper history is required /*Code variations can identify major peaks or
alternatively 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 (unwrap this line back to SD)
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 (unwrap this
line back to SD)
Plot(SD2,
"LastPeak2",34,8);
----------------------------------------------------------
//PlotDynHiPeak
//DYNAMICALLY
PLOTS HIGHEST PEAK VALUE FOR THE PERIOD
//Suitable for overlaying
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*/ /*Caution: it will not see peaks
with flat tops (two or more equal closes)*/ /*Caution: (draft code)
occasionally selects HHV resistance one bar outside of range, cause not
known*/
PK = C > Ref(C,-1) AND Ref(C,1) < C;//Peak PKV =
ValueWhen(PK,C,1);//PeakValue P =
LastValue(BarIndex(),Lastmode=True) -
BeginValue(BarIndex ());//Period (unwrap this line back to P) HPK =
HHV(PKV,P);//HighestPeakValue SD = IIf(DateNum() <
BeginValue(DateNum()), Null,
LastValue (HPK,lastmode=True));//SelectedDate (unwrap this line
back to SD)
Plot(SD, "PeriodHiPeak",34,8);
BrianB2
8:-).............(RayBans on forehead)
--- In [EMAIL PROTECTED]ps.com,
"John R" <[EMAIL PROTECTED]> wrote: > > Hi > > I wanted
to plot some horizontal lines extending from successive hi and lo >
pivot points. The code below illustrates the intention but does not work
as > I guess IIF is evaluating the argument arrays prior to
execution. > > Wondering if there is a way to do this without
looping? Basically need > method to propagate same value thru array
until condition changes then > propagate next value... >
> John > > 8< > /* draw horizontal lines at hi
& lo pivot points*/ > //P = ParamField("Price
field",-1); > p=Close; > 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); >
Hline=0; >
hline=IIf(hipiv==1,Ref(p,-1),Ref(hline,-1)); > Plot
(C,"close",colorBlack); > Plot
(Hline,"hline",colorRed); > 8< >
/ >
__._,_.___
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For other support material please check also:
http://www.amibroker.com/support.html
SPONSORED LINKS
__,_._,___
|