PureBytes Links
Trading Reference Links
|
Hello (Tim?).
Would these speculative ideas help?
1. For a database subset (watchlist etc) that is constant for the
period:
create a composite (as per Graham's or other code in recent
composite posts except without the averaging component);
and then divide ROC(~composite,periods) by periods to standardise
the composite to % per bar (day, week?).
That would give you a standardised composite 'momentum' type
indicator for your watchlist etc.
I don't know if I would describe it as 'unweighted' as it is
monentum biased but it might be 'unweighted' by your definition.
If you want to do it for a complete database you can create the
composite without looping etc and use ROC/periods in the same way.
2. For a rotating subset, say a watchlist, create a composite for
the 'current' bar (day, week, month etc), (without the averaging
component);
perform an ROC(~periodcomposite,1) = PC,
and then create your running watchlist composite of the period
result ATC(PC etc) over the bar range that interests you.
There is no need to give any consideration to averaging as the
~watchlist has already been standardised to % per period basis.
The ROC% composite index is also zerobased for any range so there is
no need to set and maintain an intitial stating or 'base'value.
If the criteria for rotating symbols in and out of the watchlist is
constant over time then method 2 would be going awfully close to
being a pseudo backtester with the 'composite' plot analagous to an
equity curve, wouldn't it?
An interesting conceptual extrapolation of that idea would be to
replace the 'watchlist' with a set of trading rules which would
create a dynamic composite 'on the fly'.
(I think that idea or somethng like it has been talked about
somewhere else in AB; maybe by Tomasz?)
As I can barely write a line of code to save myself I can't help
with specific code or any further clarification.
I have just offered my comments as a starting point for one possible
solution or maybe as an interesting discussion piece.
BrianB2.
--- In amibroker@xxxxxxxxxxxxxxx, "timgadd" <timgadd@xxx> wrote:
>
> After spending MUCH time searching, I have found this topic
started
> many times in the group archive, but i've never seen a final
solution
> given in AFL. I would greatly appreciate assistance with the AFL
code
> or reference to a prior solution.
>
> The standard AddToComposite function produces a "price weighted"
> composite. For analyzing the breadth of a sector, for
> instance, "unweighted" composites are more appropriate and
revealing.
> I have seen the term "equal weighted" used for what i am calling
> an "unweighted" composite, so i will explain in boring detail what
i
> am looking for just to be clear.
>
> By unweighted composite, i refer to one that is produced by
> calculating an arithmetic or geometric average of the day to day %
> change for each component, so that each component has equal weight
> (no weighting is introduced by the calculation). I am interested
in
> the arithmetic average - the simplest form, but i don't know how
to
> initialize the starting value and then cumulate(?) the successive %
> change averages for the open, high, low, close (volumes are simply
> added). I have seen references regarding problems with averaging
> values for high and low for this type of composite, so if
necessary,
> a composite calculated on the close only will suffice. I am only
> interested in the average changes between end-of-day values, but
> would like to produce candlesticks of the composites if possible.
>
> Assuming closing values only, each composite will start with an
> initial value (like 100) and then, for each day, the average of
all
> the %changes (from the previous day) will be added to the
preceding
> value. Using a simple 3 component composite as an example, assume
for
> the second value of the composite (remember the first value will
be
> 100), we have the following %changes.
>
> Component1 = +1.2%
> Component2 = +2.4%
> Component3 = -1.7%
>
> So the first day's average %change = ( 0.012 + 0.024 - 0.017 ) / 3
>
> 100 + ((0.012 + 0.024 - 0.017) / 3) + (the next day's average %
> change) + ...
>
> The component values for volume are just added (or averaged) to
get
> the daily values.
>
> TIA for any help.
>
|