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