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

Re: [amibroker] Re: Calculating bars between two arguments



PureBytes Links

Trading Reference Links

x=Cum(1);

z=Low<Ref(LLV(Low,5), -1);
zz=ValueWhen(z,x,1);
Low1=ValueWhen(z,Low,1);

y=High>Ref(HHV(High,5), -1);
yy=ValueWhen(y,x,1);
High1=ValueWhen(y,High,1);

/*Added to visualize the high and low*/

Buy=z;//low-green arrow
Sell=y;//high-red arrow
Buy=ExRem(Buy,Sell);Sell=ExRem(Sell,Buy);

/**************************************/
Filter=1;
AddColumn(Low1,"Low");
AddColumn(ValueWhen(z,DateNum(),1),"date Z",1);
AddColumn(High1,"high");
AddColumn(ValueWhen(y,DateNum(),1),"date Y",1);
AddColumn(abs(zz-yy),"Bars between",1);

IVA GmbH wrote:

> Dimitris,
>
> you hit the nail on its head pretty well.
>
> That was pretty much what I tried to accomplish. I might take it a
> little
> further with your assistance later on.
>
> A few more questions if you allow:
>
> 1./ Why do you say below
> zy=(BarsSince(y)>BarsSince(z))*(BarsSince(z));//bars from z to y
> yz=(BarsSince(z)>BarsSince(y))*(BarsSince(y));//bars from y to z
>
> Isnīt ZY=Barssince (y)- barssince (z)???? Analogue for YZ? Why ">" and
> "<",
> please??
>
> 2./ Can draw the swings from the lows and highs directly in the chart
> instead of a separate indicator?
>
> 3./ what code would I have to use when -after having detected z and y-
> I
> additionally wanted to check for the lowest low in between? Well,
> Lowestsince might work. But if I wanted to detect the next
> llv>Ref(llv(low,5),-1) before y (letīs call that one point x) and then
> check
> if Y was the highest high between x and y, lowestsince wouldnīt work
> anymore
> since it would relate to ALL quotes after sx, correct? Is there any
> cokkand
> that checkest for the highest hifh or the lowest low for a desired
> period of
> time instead of all following bars after a condition is met?
>
> Appreciate it, Dimitris!!!!
>
> Markus
>
> ----- Original Message -----
> From: "dtsokakis" <TSOKAKIS@xxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Sunday, June 30, 2002 1:10 PM
> Subject: [amibroker] Re: Calculating bars between two arguments
>
>
> Markus,
> As I wrote in my previous reply, zz and yy, as defined through
> Valuewhen function, are continuous Arrays, with values for every bar
> and not only for the condition bars. Consequently you can not define
> a time interval between yy and zz.
> You just suppose and you are interested for yy and zz values on the
> condition days.
> So, I will keep your
> "I basically tried to determine howe many bars (i.e. time interval)
> would be
> in between thos two conditions" to continue.
> This is the time interval between y and z [or respectively z and y]
> and we shall try to express it.
> The next question is about multiple z or multiple y.
> Like buy/sell, we usually have a series
> 00z0zzz00yyy0yy000000zz0zzz0zz0000y.
> Do we search the interval between the first z till the first y OR the
> interval between the last z till the first y?
> Let us solve the first z till the first y.
> a. Begin with the two conditions
> z=IIf(Low<Ref(LLV(Low,5), -1),1,0);
> y=IIf (High>Ref(HHV(High,5), -1),1,0);
> b. Write them without iif statement
> z=Low<Ref(LLV(Low,5),-1);
> y=High>Ref(HHV(High,5), -1);
> It is the exactly the same, z is 1 when cond=true and 0 when false.
> c. Remove excessive z or excessive y
> z=ExRem(z,y);y=ExRem(y,z);
> Now you may calculate the days from z to y or from y to z.
> The full code is
>
> z=Low<Ref(LLV(Low,5),-1);//the z condition
> y=High>Ref(HHV(High,5), -1);//the y condition
> z=ExRem(z,y);y=ExRem(y,z);//remove excessive z or excessive y
> Plot(20*z,"",1,2);//z condition graph, 20* is for scaling purposes
> Plot(20*y,"",4,2);//y condition graph
> zy=(BarsSince(y)>BarsSince(z))*(BarsSince(z));//bars from z to y
> yz=(BarsSince(z)>BarsSince(y))*(BarsSince(y));//bars from y to z
> Plot(zy,"",3,1);Plot(yz,"",2,1);
>
> The code calculates and plots the days [bars] from z to y and then
> the bars from y to z and so on.
> If you need something more, let me know.
> Dimitris Tsokakis
>
> --- In amibroker@xxxx, "IVA GmbH" <funnybiz@xxxx> wrote:
> > Dimitris,
> >
> > thanks for taking the time.
> >
> > I understand what you said about z and y. As far as zz and yy
> goes, they
> > are giving me a specific low and or high value, right? And thus,
> why is the
> > time interval between them "meaningless" (what do you mean by THAT,
> > please?). The reason to split the forumula in z and zz is just for
> easier
> > reading. I could have put everything in one formula as I did below.
> >
> > I basically tried to determine howe many bars (i.e. time interval)
> would be
> > in between thos two conditions. I thought of datenum function but
> realized
> > that I could not use them for computation like datenum(yy) - datenum
>
> (zz) to
> > determine the time interval (number of days).
> >
> > I assume that barssince is as well not an ideal solution since you
> see for
> > zz that I want to check when the condition was true for the FIRST
> time. This
> > is someting barssince doesnīt provide. It could for instance happen
> that
> > z/zz happened AFTER y/yy (looking from retrospective). In this case
> I want
> > those signals to be skipped since this case doesnīt apply to the
> pattern I
> > try to detect.
> >
> > I cut and pasted the code below and got and error message (need to
> define a
> > filter variable). What is the problem here? I went one step further
> and put
> > the conditions for z and zz together like
> > z=ValueWhen((IIf(Low<Ref(LLV(Low,5), -1),1,0)==1),Low,1) but again
> got the
> > same error. I canīt see my mistake! Everything seems to be logic??
> >
> > What information would you need to judge how to go, Dimitris?
> >
> > Many thanks!!!!!
> >
> > Markus
> >
> > ----- Original Message -----
> > From: "dtsokakis" <TSOKAKIS@xxxx>
> > To: <amibroker@xxxx>
> > Sent: Saturday, June 29, 2002 9:17 PM
> > Subject: [amibroker] Re: Calculating bars between two arguments
> >
> >
> > Hi Markus,
> > There is something to be explained here:
> > z and y are conditions, their value is 0 or 1.
> > zz and yy are continuous functions with various values.
> > Perhaps you need the time interval from z to y [or from y to z]. It
> > has some meaning, because z and y are events.
> > The time interval between zz and yy is meaningless.
> > Try the
> > z=IIf(Low<Ref(LLV(Low,5), -1),1,0);
> > zz=ValueWhen(z==1,Low,1);
> > y=IIf (High>Ref(HHV(High,5), -1),1,0);
> > yy=ValueWhen(y==1,High,1);
> > Plot(z,"",1,2);Plot(y,"",4,2);
> > Plot(zz,"",5,1);Plot(yy,"",7,1);
> > to see what I mean.
> > Can you be more specific ?
> > DT
> > --- In amibroker@xxxx, "IVA GmbH" <funnybiz@xxxx> wrote:
> > > Folks,
> > >
> > > would someone help me with this:
> > >
> > > I need to calculate how many time periods have been passed since
> > >
> > > zz and yy
> > >
> > > whereby
> > >
> > > z=iif(low<Ref(llv(low,5), -1),1,0)
> > > zz=valuewhen(z==1,low,1)
> > >
> > > and
> > >
> > > y=iif (high>Ref(hhv(high,5), -1),1,0)
> > > yy=valuewhen(y==1,high,1)
> > >
> > > ???????????????
> > >
> > > I thought of
> > >
> > > barssince (y==1) - barssince (zz==1) but that dosnīt return the
> > desired result.
> > >
> > > Thanks a lot!!
> > >
> > > Markus
> >
> >
> >
> >
> >
> > Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
>
>
>
> Your use of Yahoo! Groups is subject to
> http://docs.yahoo.com/info/terms/
>
>
>
>
> Yahoo! Groups Sponsor
ADVERTISEMENT

>
> Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.