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

Re: [EquisMetaStock Group] help with barsSince



PureBytes Links

Trading Reference Links

Corey

This construction is mine (not the code but the method behind it) and it is
correct just as it is. The variable is used for what I call
"initialisation", and my layout would be I:=Cum(N+X>-1)=1;

The primary purpose of this variable is to give a 1 bar true output for the
FIRST bar where all component binary (or positive) variables are VALID. Once
all components are valid (zero or greater, but not N/A) the cum count will
return a "one", and then return "zero" for every subsequent bar. This is the
most concise way I know to write code to do this. I use the "I" variable as
a fake buy or sell with a simple (non-PREV) latch as in "BarsSince(I OR
N)<BarSince(I OR X);". This usage prevents missing the first signal but
won't function until both 'N' and 'X' are valid. 'I' provides a starting
reference point on a chart that enables latches and the like to be kicked
off in an orderly fashion.

I also find the 'I' variable useful with the ValueWhen() function to
eliminate the long periods of N/A that can result with irregular signals.
This becomes more significant when attempting to back-test on early chart
data where any N/A bar can have, and often does have, a cumulative effect on
subsequent variables.

Hope this explains my thinking behind the 'I' variable.

Roy


----- Original Message -----
From: "CS" <csaxe@xxxxxxx>
To: <equismetastock@xxxxxxxxxxxxxxx>
Sent: Tuesday, March 11, 2003 7:04 AM
Subject: Re: [EquisMetaStock Group] help with barsSince


I got in on this late but will try to take a stab it this.

I ran your code and am not sure if the logic is correct.

When I plot the line:
itl:=Cum(sigtl+rsttl>-1)=1;

It only works once at the very beginning of the chart. Since either sigtl or
rsttl can only be 0 or 1, the addition of both sigtl and rsttl will be
greater than -1 very quickly and stay that way. Cum will only find the first
instance where sigtl and rsttl are greater than -1. Besides, you have a
Boolean operation (rsttl>-1) mixed within a math operation (sigtl+rsttl),
both within Cum. While they may be allowed, they can get confusing quickly.

I usually see lines like that written as:
itl:=Cum(sigtl+rsttl)=1; {does the same thing with less code}

If you want to check for each instance where sigtl and rsttl are greater
than -1, use Sum or ValueWhen.

I also see where you calculate rmbts and do nothing with it. Is it for a
short exit?

I would suggest that you plot each variable separately. See what they do and
when. Work your way down through your formula.

Being able to use LastValue(X +PREV-PREV) to trick functions to accept
dynamic inputs in MS helps to create formulas that can tune themselves, but
a MAJOR re-write of MS formula language is about 5 years past due.

-Corey Saxe

  ----- Original Message -----
  From: emarco
  To: equismetastock@xxxxxxxxxxxxxxx
  Sent: Sunday, March 09, 2003 7:29 PM
  Subject: Re: [EquisMetaStock Group] help with barsSince


  Thanks Roy.
  Unfortunatly it does not work.
  Here's the full code. Thanks again,
  Juan

  LookBack := 34;

  Resistance :=ValueWhen(1,Cross(Mov(C, LookBack,S),C),HHV(H, LookBack));

  Support :=ValueWhen(1,Cross(C,Mov(C, LookBack,S)),LLV(L, LookBack));

  R1:=Resistance;

  S1:=Support;



  sigtl:=If(L>R1,1,0);

  sigts:=If(H<S1,1,0);

  rsttl:=If(H<R1,1,0);

  rstts:=If(L>S1,1,0);

  itl:=Cum(sigtl+rsttl>-1)=1;

  its:=Cum(sigts+rstts>-1)=1;

  rmbtl:=BarsSince(sigtl OR itl)<BarsSince(rsttl OR itl);

  rmbts:=BarsSince(sigts OR its)<BarsSince(rstts OR its);


stlong:=If(HHV(H,LastValue(PREV+BarsSince(rmbtl=0)-PREV))-ATR(6)*2.5<C,1,0);

  stlong;




  ----- Original Message -----
  From: "Roy Larsen" <rlarsen@xxxxxxxxxxxxxx>
  To: <equismetastock@xxxxxxxxxxxxxxx>
  Sent: Sunday, March 09, 2003 6:38 PM
  Subject: Re: [EquisMetaStock Group] help with barsSince


  > Juan
  >
  > Thanks to Corey Saxe there is a way that MS will accept a variable as
  > constant. Try redefining your variable using
  > LastValue(PREV+"Variable Data"-PREV)
  >
  > This method does not work on every occasion but there are a couple of
  things
  > you can do to help.
  > 1. Make sure your variable is greater than or equal to one.
  > 2. Make sure your variable is a whole number.
  >
  > LastValue() can be used in a number of situations to make a result
  suitable
  > for using as a constant, but only where the last value of the variable
is
  > the same as on every other bar. The above example of adding then
  subtracting
  > PREV from the current value appears to return the "actual" value rather
  than
  > the "last" value, and therefore is accepted as a "constant" by many MS
  > functions.
  >
  > I have some doubts about the code you have given as an example and doubt
  it
  > could work in its present form even without MetaStock's perceived
  > inadequacies. The code appears to be looking for results from two If()
  > statements yet I can only see one If(). It also seems to me that the
  > calculated "constant" for the HHV periods has no check to ensure that it
  is
  > a whole number.
  >
  > When looking for assistance with code it is also helpful if associated
  code
  > can be supplied. You may know how "rmbtl" is calculated but those
capable
  of
  > offering help won't. Providing actual code or at least a working
  substitute
  > will increase your chances of real help that goes beyond "buy some more
  > software".
  >
  > Good luck with your attempts to solve your problem whichever method you
  > choose to use.
  >
  > Roy
  >
  > ----- Original Message -----
  > From: "emarco" <emarco@xxxxxxxxxxxxxxx>
  > To: <equismetastock@xxxxxxxxxxxxxxx>
  > Sent: Saturday, March 08, 2003 11:37 AM
  > Subject: [EquisMetaStock Group] help with barsSince
  >
  >
  > This is a trailing stop. The problem is that MS does not accept variable
  > data in HHV.
  >
  >
  >
  > stlong:=if(HHV(H,BarsSince(rmbtl=0))-ATR(6)*2.5>C,1,0),1,0)
  >
  >
  > As you can see, MS does not accept barssince as a period data.
  > How can I solve this problem?
  > Thanks
  >
  > Juan
  >
  >
  >
  >
  >
  > To unsubscribe from this group, send an email to:
  > equismetastock-unsubscribe@xxxxxxxxxxxxxxx
  >
  >
  >
  > Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
  >
  >



        Yahoo! Groups Sponsor
              ADVERTISEMENT




  To unsubscribe from this group, send an email to:
  equismetastock-unsubscribe@xxxxxxxxxxxxxxx



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



To unsubscribe from this group, send an email to:
equismetastock-unsubscribe@xxxxxxxxxxxxxxx

 

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