PureBytes Links
Trading Reference Links
|
Mike,
Not at all, the examples you provided mirror more less the approaches
I tried outside of the loop, the only problem was that those
approaches posed a noticeable degradation in the performance of the
system! Overall the performance of the system was still quite
acceptable except that I thought that by going inside the loop I
might get better execution speed.
I greatly appreciate your response, thanks again.
--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> Hi,
>
> I'll take your word for it, that you need the loop.
>
> That being said, I don't see that your comments exclude any of the
> approaches. It just means that they need to be realigned to include
> the current bar.
>
> Given that you are not altering anything inside your loop (with
> respect to the High values), but rather just comparing two
> consecutive values (highest of two - the value of which is
presumably
> then being used later in the loop), there is no need to repeatedly
> call HHV in the loop. Just do it once outside the loop and refer to
> the resulting elements from inside the loop. Each element of the
> result will be the higher of the current and the preceding bar. As
> you increment through the loop, you will always be seeing the
highest
> of the current (i.e. bar at loop counter index) and the previous
bar
> (i.e. bar at loop counter index - 1).
>
> You can even pull out your entire HHV/LLV calculation and just
refer
> to the i-th result inside the loop e.g.
>
> Result = HHV(High, 2)/LLV(...);
>
> for (i = 1; i < BarCount; i++) {
> ... // Refer to Result[i] here
> }
>
> I believe that any of the following would still give you what you
are
> after, unless I'm misunderstanding what it is you are trying to do.
>
> Option 1:
>
> HighestOfTwo = HHV(High, 2);
>
> for (i = 1; i < BarCount; i++) {
> xyz = HighestOfTwo[i]; // xyz as scaler
> ...
> }
>
> Note that this is identical to just saying:
>
> xyz = HHV(High, 2); // xyz as array
>
> for (i = 1; i < BarCount; i++) {
> ... // refer to xyz[i].
> }
>
> Option 2:
>
> HighestOfTwo = Max(High, Ref(High, -1));
>
> for (i = 1; i < BarCount; i++) {
> xyz = HighestOfTwo[i]; // xyz as scaler
> ...
> }
>
> Same xyz as array approach is possible here too.
>
> Option 3:
>
> for (i = 1; i < BarCount; i++) {
> xyz = High[i];
> if (High[i - 1] > xyz) xyz = High[i - 1]; // highest of 2 incl.
> ...
> }
>
> All of the above will leave you, at each bar, with the higher of
two
> consecutive highs (including the current high) stored in variable
> xyz. Is that not what you were trying to achieve?
>
> I'll withdraw from further replies to allow others to address
> anything that I may have missed, unless you specifically have any
> question regarding what I've posted to date.
>
> Mike
>
> --- In amibroker@xxxxxxxxxxxxxxx, "cottondepot" <bill.ghali@>
> wrote:
> >
> > Mike,
> > Appreciate that, I do need the looping because my code looks back
> > quite a bit.
> >
> > I also need to include the current bar in my HHV/LLV test because
> > I'm setting "Limit Prices" for real-time trading. Obviously
HHV/LLV
> > on the current bar are snapshots in time rather than true
> > reflections of what the high or the low for the bar ends up being.
> >
> > I'm beginning to reach the conclusion that HHV/LLV because they
are
> > themselves in a sense "looping arrays" are not that efficient to
> use
> > inside a loop.
> >
> > I am indeed testing other approaches however before I give up, I
> > wanted to see if anyone else out there had successfully
implemented
> > HHV/LLV within a loop.
> >
> > Again, appreciate your attempts.
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@> wrote:
> > >
> > > Hi,
> > >
> > > I haven't tested any of this for accuracy. But, you can play
with
> > the
> > > following approaches, all of which I've tried to keep within
the
> > > structure of your original code snippet (i.e. assuming that
> > looping
> > > is necessary).
> > >
> > > However, as suggested, looping may not be necessary, and likely
> is
> > > not necessary.
> > >
> > > If I read HHV correctly, then it will include the current bar
in
> > the
> > > calculation. I'm assuming that you do not want to include the
> > current
> > > bar when looking at "the last 2 bars", and so have used Ref
(..., -
> > 1)
> > > to exclude the current bar. Double check this.
> > >
> > > Note too that bar indexing is zero based, so your counter (e.g.
i
> > = )
> > > needs to be 1 less than you might otherwise expect.
> > >
> > > Option 1:
> > >
> > > HighestOfTwo = Ref(HHV(High, 2), -1);
> > >
> > > for (i = 2; i < BarCount; i++) {
> > > xyz = HighestOfTwo[i];
> > > ...
> > > }
> > >
> > > Option 2:
> > >
> > > HighestOfTwo = Max(Ref(High, -1), Ref(High, -2));
> > >
> > > for (i = 2; i < BarCount; i++) {
> > > xyz = HighestOfTwo[i];
> > > ...
> > > }
> > >
> > > Option 3:
> > >
> > > for (i = 2; i < BarCount; i++) {
> > > xyz = High[i - 1];
> > > if (High[i - 2] > xyz) xyz = High[i - 2];
> > > ...
> > > }
> > >
> > > Again, things will go significantly faster if you don't need
the
> > > loops.
> > >
> > > Mike
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "sidhartha70" <sidhartha70@>
> > > wrote:
> > > >
> > > > Help if we knew the full context of the problem... it is
likely
> > that
> > > > you wouldn't need to use HHV/LLV inside a loop. You can
> probably
> > > code
> > > > the use of HHV/LLV outside of the loop. if you need one at
> all...
> > > >
> > > >
> > > > --- In amibroker@xxxxxxxxxxxxxxx, "cottondepot" <bill.ghali@>
> > wrote:
> > > > >
> > > > > Need to use HHV/LLV in a loop:
> > > > >
> > > > > for (i = 3; i < BarCount; i++)
> > > > > {
> > > > > xyz=HHV(High[i],2);
> > > > > ...
> > > > > }
> > > > >
> > > > > Obviously that didn't work. In the loop, I'm trying to use
> > > the "High"
> > > > > of the last 2 bars as the "LimitPrice" on an order.
> > > > >
> > > > > Any pointers would be greatly appreciated.
> > > > >
> > > >
> > >
> >
>
------------------------------------
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|