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

RE: [GT] New EMA



Attached the update which aborts on out of scope data... Th.

> -----Original Message-----
> From: Weigert, Thomas [mailto:weigert
AT
mst.edu]
> Sent: Thursday, February 28, 2008 10:56 PM
> To: devel
AT
geniustrader.org
> Subject: RE: [GT] New EMA
> 
> Yes, as usual in GT, when you try to get the value of an indicator
> before the dependencies are satisfied, it will complain. This
indicator
> is available only from 1993-1-29 on for EMA(20).
> 
> I put an additional test in that causes the indicator to abort in
these
> cases. Thus data will only be returned if the dependencies are
> satisfied.
> 
> That raises the interesting question: How should one handle requests
for
> data where dependencies are not satisfied.
> 
> In GT in general the series is aborted (if calculate_interval is used)
> or the data is skipped until legal data is found (if calculate is
used).
> Of course, often one could make calculate_interval be more forgiving,
as
> in this case, but we should decide on a consistent pattern.
> 
> Th.
> 
> > -----Original Message-----
> > From: Robert A. Schmied [mailto:ras
AT
acm.org]
> > Sent: Thursday, February 28, 2008 9:14 PM
> > To: devel
AT
geniustrader.org
> > Subject: Re: [GT] New EMA
> >
> > when operating at the start of data it complained:
> > ras [ 5148 ] %    ./display_indicator.pl --start 1993-01-04 --end
> 1993-07-
> > 01 I:EMA 13000
> > Indicator I:EMA has 1 value ... all values selected
> >         I:EMA/1  <=> EMA[20,{I:Prices CLOSE}]
> >
> >         timeframe day, time periods 0 .. 123
> > Calculating indicator ...
> > Use of uninitialized value in subtraction (-) at
> ../GT/Indicators/EMA.pm
> > line 126.
> > Use of uninitialized value in addition (+) at
../GT/Indicators/EMA.pm
> line
> > 126.
> > EMA[20,{I:Prices CLOSE}][1993-01-05 00:00:00] = 1.9978
> > EMA[20,{I:Prices CLOSE}][1993-01-06 00:00:00] = 3.7676
> > EMA[20,{I:Prices CLOSE}][1993-01-07 00:00:00] = 5.3456
> >
> > so i hacked around and came up with
> >
> >     my $ema;
> >     for (my $i = $first+1; $i <= $last; $i++) {
> >         my $oldema = $indic->get($name, $i - 1);
> >         ( defined($oldema) )
> >           ? $ema = $alpha * ($self->{'args'}->get_arg_values($calc,
> $i, 2)
> > - $oldema) + $oldema
> >           : $ema = $alpha * ($self->{'args'}->get_arg_values($calc,
> $i,
> > 2));
> >         $indic->set($name, $i, $ema);
> >     }
> >
> > you may have a better option, but it solves the issue noted above
and
> i
> > think
> > the answers remain the same.

Attachment: EMA.pm
Description: EMA.pm