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

[amibroker] Re: Auto trendline



PureBytes Links

Trading Reference Links

GP,

This is the code that I am using:

x = Cum(1);

xx =  DateNum() !=Ref(DateNum(),-1);

startbar = LastValue(ValueWhen(xx, x, 2)-1); // Yesterday's start bar
endBar = LastValue(ValueWhen(xx, x, 1)-2); // Bar before today's start
bar

ocAvg = (O+C)/2;
startOc = ocAvg[startBar];
endOc = ocAvg[endBar];

trendLine = LineArray(startBar, startOc, endBar, endOc,3);

Plot( Close, "Price", colorBlue, styleCandle );
Plot( trendline, "Trendline", colorRed );

The trendline works just as I wanted but when you mentioned  EOD data I
took a look at daily thru monthly charts and the trendline does not plot
at all,  intraday data plots just fine, so I'm a bit mystified.

I use the trendline as a current day filter so I use it extended.
The next step is to try and produce two more parallel trendlines that
will be placed at the high and low of yesterday, yielding a regression
channel that yields additional filtering.

Your help, and AmiBroker has allowed me to begin to analyze and follow
the patterns that I see in the market. Up till now I have seen these
repeating patterns as only, after the fact and too late to act upon. Now
I believe I will be able to detect them as they evolve and grow.

Once again thank you,
Best regards

Geary


--- In amibroker@xxxxxxxxxxxxxxx, "sumangalam" <sumangalam@xxx> wrote:
>
> 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@
> 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/