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

[EquisMetaStock Group] Re: Problem with BarsSince and Sum



PureBytes Links

Trading Reference Links

Hi.

First of all, let me thanks to Preston and mc for their help.

Using the formula that Preston gave:

tp:= 14; { time periods in RSI calculation}
plot:= C;
change:= ROC(plot,1,$ );
Z:=Sum(If(change> 0,VOLUME, 0),tp);
Y:=Sum(If(change< 0,Abs(VOLUME) ,0),tp);
Ytemp:=If(y= 0,0.00001, y);
RS:=Z/Ytemp;
100-(100/(1+ RS))

The problem here is the time periods.
As I said, I want to measure volume for each month.
So using Jose's formulas:

{ User input }
EOM:=Input("Final month's end:  [1]True,  [2]Current 
(dynamic)",1,2,1);

{ Choice of Static/Dynamic last EOM signal }
EOM:=If(EOM=2,Cum(1)=LastValue(Cum(1)),
 DayOfMonth()=31);

{ Start of month }
start:=Month()<>Ref(Month(),-1) OR Cum(1)=2;

{ End of month }
end:=PeakBars(1,
 -(start OR Cum(IsDefined(start))=1),1)=0
 OR EOM;

{ Plot signals in own window }
signal:=start-end;

{ Flag Month start and end }
init:=Cum(IsDefined(start+end))=1;
flag:=ValueWhen(1,start-end<>0 OR init,start);

Do you see where the problem is?
When a new month begins, he starts to sum the volume for that 
specific month. I cannot specified a time period for the sum of the 
volume because that time period is give by each day of the month.

Today is August 24, there is 16 tradind days so far in the month. Of 
the 16 trading days, we have 6 days where the close was above the 
previous days close and 10 days where the close was below the 
previous days close.

So as a result, I want to sum the volume for those 6 updays as up 
volume and sum the volume for those 10 downdays as down volume.

The problem here is on how to select those 6 and 10 days as our time 
period for the Sum() function.

Did I make myself clear? This is a bit confuse to explain.

Regards



--- In equismetastock@xxxxxxxxxxxxxxx, "p_panther_73" <mchantzi@xxx> 
wrote:
>
> Preston,
> 
> The formula you gave can be simplified as follows:
> 
> 100-(100/(1+RS))=100*RS/(1+RS)=100*Z/Y/(1+Z/Y)=100*Z/(Z+Y).
> 
> Now, we can clearly see that under this simplified version, one can 
> leave out the if condition for Y (since Z+Y>0).
> What's more, since Z+Y is the total traded volume, one can write 
down:
> 
> tp:=14;
> RapidRsiVol=100*SUM(v*(c>ref(c,-1),tp)/sum(v,tp)
> 
> (This one is taking in assumption that no days we'll have c=ref(c,-
> 1), anyway small difference it'll do.)
> 
> The thing is however, that this will plot as easily can see the 
> fraction of traded volume for the up-days without taking in 
> consideration if they were in a row, as Fernardo wished it to be.
> 
> In the formula i presented, what is actually plotted is the sum of 
> volume for those days that we had c>ref(c,-1) in a row.
> As an example, let's say we have 3 days in a row where prices went 
> up. This formula will sum the volume for these 3 particular trading 
> days. But, if tomorrow price goes down, the formula will return a 
> zero.
> Again, if i got correctly what was asked from the beginning.
> 
> Regards,
> 
> mc
> 
> --- In equismetastock@xxxxxxxxxxxxxxx, pumrysh <no_reply@> wrote:
> >
> > Fernando,
> > 
> > Let's take a look at the Rapid RSI which is a none smoothed 
> version. 
> > Here it is:
> > 
> > Name: Rapid RSI
> > Formula:
> > tp:= 14; { time periods in RSI calculation}
> > plot:= C;
> > change:= ROC(plot,1,$);
> > Z:=Sum(If(change>0,change,0),tp);
> > Y:=Sum(If(change<0,Abs(change),0),tp);
> > Ytemp:=If(y=0,0.00001,y);
> > RS:=Z/Ytemp;
> > 100-(100/(1+RS))
> > 
> > 
> > In order to make the changes you want it would look like this:
> > 
> > Name: Rapid RSI Vol
> > Formula:
> > tp:= 14; { time periods in RSI calculation}
> > plot:= C;
> > change:= ROC(plot,1,$);
> > Z:=Sum(If(change>0,Volume,0),tp);
> > Y:=Sum(If(change<0,Abs(Volume),0),tp);
> > Ytemp:=If(y=0,0.00001,y);
> > RS:=Z/Ytemp;
> > 100-(100/(1+RS))
> > 
> > Notice that the Z and Y variables are the sums you are looking 
for. 
> Z 
> > variable is positive and Y variable is negative. In the case of 
the 
> > RSI it is then indexed.
> > 
> > Hope this helps.
> > 
> > Preston
> > 
> >  
> > 
> > 
> > --- In equismetastock@xxxxxxxxxxxxxxx, "Fernando Santos" 
> > <ptc_man3@> wrote:
> > >
> > > Which RSI pumrysh?
> > > 
> > > I found this two formulas:
> > > 
> > > Q:=Input("Time Periods",1,1000,14); 
> > > 
> > > B:=Input("Field: 1=Close, 2=Open, 3=High, 4=Low, 
5=Volume",1,5,1);
> > > 
> > > Z:=If(B=1,Wilders(If(ROC(C,1,$)>0,ROC(C,1,$),0),LastValue(Q)),If
> > > (B=2,Wilders(If(ROC(O,1,$)>
> > > 0,ROC(O,1,$),0)LastValue(Q)),If(B=3,Wilders(If(ROC(H,1,$)>0,ROC
> > > (H,1,$),0),LastValue(Q)),
> > > If(B=4,Wilders(If(ROC(L,1,$)>0,ROC (L,1,$),0),LastValue
> (Q)),Wilders
> > (If
> > > (ROC(V,1,$)>0
> > > ,ROC(V,1,$),0),LastValue(Q))))));
> > > 
> > > Y:=If(B=1,Wilders(If(ROC(C,1,$)<0,Abs(ROC(C,1,$)),0),LastValue
> > (Q)),If
> > > (B=2,Wilders(If(ROC
> > > (O,1,$) <0,Abs(ROC(O,1,$)),0),LastValue(Q)),If(B=3,Wilders(If
(ROC
> > > (H,1,$)<0,Abs
> > > (ROC(H,1,$)),0),LastValue(Q)),If(B=4,Wilders(If(ROC(L,1,$)0,Abs
> (ROC
> > > (L,1,$)),0),LastValue(Q))
> > > ,Wilders(If(ROC(V,1, $)<0,Abs(ROC(V,1,$)),0),LastValue(Q))))));
> > > 
> > > RS:=Z/Y;
> > > 
> > > 100-(100/(1+RS))
> > > 
> > > 
> > > And this one:
> > > 
> > > 100 - 100/
> > > (1.+ If(Mov(If(P-Ref(P,-1)<0,-(P-Ref(P,-1)),0),23,E)
=0,1000000,Mov
> > (If
> > > (P-Ref(P,-1)>0, P-Ref(P,-1), 0),23,E) /Mov(If(P-Ref(P,-1)<0,-(P-
> Ref
> > > (P,-1)),0),23,E)))
> > > 
> > > Maybe is the late hour that I'm writing this message but I 
didn't 
> > > understand your explanation
> > > 
> > > regards
> > > 
> > > 
> > > 
> > > --- In equismetastock@xxxxxxxxxxxxxxx, pumrysh <no_reply@> 
wrote:
> > > >
> > > > Fernando,
> > > > 
> > > > Take a look at the RSI formula.
> > > > Basically does what you want. To apply it to your situation 
you 
> > > will 
> > > > need to change to the sum of the volume instead of the close 
> but 
> > > > everything else would be the same.
> > > > 
> > > > Preston
> > > > 
> > > > --- In equismetastock@xxxxxxxxxxxxxxx, "Fernando Santos" 
> > > > <ptc_man3@> wrote:
> > > > >
> > > > > Hi.
> > > > > 
> > > > > I'm having some problems with the Sum() and BarsSince()
> function.
> > > > > 
> > > > > What I want is to Sum the volume if and only when c>ref(c,-
1) 
> > but 
> > > > by
> > > > > the numbers of bars of that variable.
> > > > > 
> > > > > Let me explain better, imagine that during this month, the 
> > close 
> > > > was
> > > > > higher then the previous days close 12 times.
> > > > > 
> > > > > How can I say that I want to sum the volume for those 12 
> > specific 
> > > > days
> > > > > when I need to know the time periods for the sum function?
> > > > > 
> > > > > Using barsince() doesn't seem to work since Sum() doesn't 
> > > recognize
> > > > > the barssince() result as time periods.
> > > > > 
> > > > > Any ideas?
> > > > > 
> > > > > Thanks
> > > > >
> > > >
> > >
> >
>



------------------------------------

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/equismetastock/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/equismetastock/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:equismetastock-digest@xxxxxxxxxxxxxxx 
    mailto:equismetastock-fullfeatured@xxxxxxxxxxxxxxx

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