PureBytes Links
Trading Reference Links
|
GP,
I can not stop myself from expressing my gratitude : your code helped
me in being introduced to the power of Amibroker arrays :
> > ocAvg = (O+C)/2;
> > startOc = ocAvg[startBar];
> > endOc = ocAvg[endBar];
With Regards
Sanjiv Bansal
--- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@xxx>
wrote:
>
> Geary,
>
> Did you use "Cum(1)-1" for 'x' or just "Cum(1)"?
>
> Both the LineArray function and manual line formula work fine for me
> (although I only have EOD data so have to test it with months rather
> than days).
>
> One oversight with the manual line formula though is that it extends
> across the whole chart. To limit it to just between the start and
end
> bars, mask it like this:
>
> mask = x >= startBar && x <= endBar;
> trendLine = IIf(mask, slope*(x-startBar)+startOc, Null);
>
> Regards,
> GP
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Geary" <convertah@> wrote:
> >
> > GP,
> >
> > Thank you for taking the time to help me with the auto trendline
code I
> > greatly appreciate it.
> > When I first tried your original code for the start and end bars:
> >
> > startbar = LastValue(ValueWhen(xx, x, 2)); // Yesterday's
start bar
> > -original
> > endBar = LastValue(ValueWhen(xx, x, 1))-1; // Bar before
today's start
> > bar -original
> >
> > It gave me a trendline through the (o+c)/2 of yesterdays second
bar and
> > todays first bar and it was consistent
> > with every stock I tried. I finally came up with a modified
version that
> > produced a trendline through the (o+c)/2
> > of yesterdays first and last bar that works with every stock:
> >
> > startbar = LastValue(ValueWhen(xx, x, 2)-1); // Yesterday's
start bar
> > -modified
> > endBar = LastValue(ValueWhen(xx, x, 1))-2; // Bar before
today's
> > start bar -modified
> >
> > The modified code only works with the LineArray function as when
I use
> > the slope formula it
> > gives me a small offset from the (o+c)/2.
> >
> > I still need more work on this array stuff because the light has
not
> > gone on quite yet.
> > Once again I am grateful for the help.
> >
> > Thank you,
> > Kind regards
> >
> > Geary
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@>
wrote:
> > >
> > > One issue I can see is that you choose the start and end bars by
> > > comparing their 'y' values to startvalue and endvalue1. If
there are
> > > multiple bars with the same (O+C)/2 value, then the startbar and
> > > endbar formula will find the most recent occurrences, not the
ones
> > > used to obtain startvalue and endvalue1.
> > >
> > > It seems to me you're going about this backwards. I'd find the
bar
> > > numbers first and then their values, not the other way around.
You
> > > already have the start bars marked in the "xx" array, so to get
the
> > > actual bar numbers (or array indices), just use something like:
> > >
> > > x = Cum(1)-1; // Can also use BarIndex();
> > > xx = DateNum() != Ref(DateNum(),-1);
> > > startbar = LastValue(ValueWhen(xx, x, 2)); // Yesterday's start
bar
> > > endBar = LastValue(ValueWhen(xx, x, 1))-1; // Bar before
today's start
> > bar
> > >
> > > The 'y' values are then just:
> > >
> > > ocAvg = (O+C)/2;
> > > startOc = ocAvg[startBar];
> > > endOc = ocAvg[endBar];
> > >
> > > although you should test both bar values for being in the valid
range
> > > 0 to BarCount-1 first. You can plot the line the fundamental
way using
> > > the formula:
> > >
> > > slope = (endOc-startOc)/(endBar-startBar);
> > > trendLine = slope*(x-startBar) + startOc;
> > >
> > > or just use the LineArray function:
> > >
> > > trendLine = LineArray(startBar, startOc, endBar, endOc);
> > >
> > > Note that these plots will only look correct with linear price
scale,
> > > unless the price range is small. If you're using semilog, then
the
> > > line formula is:
> > >
> > > slope = log10(endOc/startOc)/(endBar-startBar);
> > > trendLine = startOc*(10^(slope*(x-startBar)));
> > >
> > > Hope this helps, although note that I haven't actually tried
any of
> > > this code.
> > >
> > > Regards,
> > > GP
> > >
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "convertah" convertah@ wrote:
> > > >
> > > > Hello and good day,
> > > > I have been trying to write a formula that will draw an
automatic
> > > > trendline through the, (O+C)/2, of the first and last five
minute
> > > > candles of yesterday. I'm new to AFL and had fun trying to
get this
> > far,
> > > > which was only accomplished by searching mail archives,the
users
> > guide,
> > > > knowledge bases and, even the "new" googlesearch.
> > > >
> > > > The trendline works perfectly on some stocks but other stocks
will
> > have
> > > > the line through one but not both of the candles; while other
stocks
> > > > show no connection with the trendline at all.
> > > >
> > > > Thoughts on how to make this really work would be greatly
> > appreciated.
> > > >
> > > > This is the code:
> > > >
> > > > x = Cum(1);
> > > >
> > > > xx = DateNum() !=Ref (DateNum(),-1);
> > > >
> > > > startvalue = LastValue(ValueWhen( Ref (xx,79),
(O+C)/2,1 )); /*
> > > > (O+C)/2 of first bar of yesterday */
> > > > endvalue1 = LastValue(ValueWhen( Ref (xx,1),
(O+C)/2,1 )); /*
> > > > (O+C)/2 of last bar of yesterday */
> > > >
> > > > startbar = LastValue( ValueWhen( (O+C)/2 == startvalue, x,
1 ) );
> > > > endbar = LastValue( ValueWhen( (O+C)/2 == endvalue1, x, 1 ) );
> > > >
> > > > Aa = (endvalue1-startvalue)/(endbar-startbar);
> > > > b = startvalue;
> > > >
> > > > trendline = Aa * ( x - startbar ) + b;
> > > >
> > > > Plot( Close, "Price", colorBlue, styleCandle );
> > > > Plot( trendline, "Trendline", colorRed );
> > > >
> > > > Thank you,
> > > > Kind regards
> > > >
> > > > Geary
> > > >
> > >
> >
>
------------------------------------
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/
|