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/
|