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

Re: Calculating bars between two arguments



PureBytes Links

Trading Reference Links

Markus,
I remake the main part of my previous mail, including Exploration.
For specific question search into your text.
REMAKE.
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);
Filter=y OR z;
AddColumn(y,"y condition",1.0);
AddColumn(Ref(yz,-1),"Bars from y to z",1.0);
AddColumn(z,"z condition",1.0);
AddColumn(Ref(zy,-1),"Bars from z to y",1.0);

The code calculates and plots in Indicator builder the days [bars] 
from z to y and then
the bars from y to z and so on.
In Automatic Analysis, select a "current stock" and Explore for "all 
quotations"
END OF REMAKE.
Dimitris Tsokakis
--- In amibroker@xxxx, "IVA GmbH" <funnybiz@xxxx> wrote:
> Dimitris,
> 
> I had been away for a couple of days - sorry for getting back to 
you a
> little late!!
> 
> Itīs the guys like you, the big-time contributors, that help the 
forum stay
> alive.
> 
> Iīd never found out about this little intricacie with "IIF" that I 
was using
> redundantly!! Damn!

The following z and zz are identical

z=iif(macd()>0,1,0);
zz=macd()>0;

z is 1 when macd() is above 0 and 0 when macd() is not above 0.
The same with zz. Exactly the same, for any use.

> Please allow questions back: why do I have to use the "ExRem" 
function?? To
> make sure that I just detect the FIRST instance of my arguments to 
be true??

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.

> What if I wanted to implement a code that allowed me to lookr for 
the first,
> second, third etc. time, if I desire???

I described the distance from the first z to the first y and then to 
the first next z and so on.
If you want the distance from the 3rd z to the 2nd y for example, you 
have to change the code, although it will become complicated. 
> Besides, your code misses a numcode and/or filter variable. I added 
filter=1
> but still got an error. Probably a minor thing. Would you offer 
your help
> again on this??
The modified code includes AA use.
> Many, many thanks go out to Greece!!
> 
> Markus
> ----- Original Message -----
> From: "dtsokakis" <TSOKAKIS@xxxx>
> To: <amibroker@xxxx>
> 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 returnthe
> > 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/