Releases: MathisWellmann/trade_aggregation-rs
11.0.0 release
9.1: Entropy CandleComponent
Add the Entropy
CandleComponent
which is the binary shannon entropy using the trade side as inputs.
9.0: Generic `CandleComponent` value
Thanks to @dam5h , this crate now support a generic type as the value
of a CandleComponent
, for much greater user flexibility.
Two new CandleComponent
's exist now:
OpenDateTime
: Keep track of the openingDateTime<Utc>
of a candleOpenTimestamp
: Keep track of the opening timestamp of a candle
Beyond that the TakerTrade
is now able to specify the timestamp_resolution
for greater user flexibility.
Exciting stuff, happy building everyone!
Breaking change to the `GenericAggregator`
To avoid the occasional degenerate candles when using the RelativePrice
aggregation rule, the GenericAggregator
will now include the Trade
that triggers the new candle in both the finished and new candle, such that the Open
and Close
prices will be correct for that particular aggregation mode. This is breaking but will have a negligible effect on the candle appearances. Nonetheless please evaluate the new aggregation logic in GenericAggregator
carefully. In the future it may be expanded with a parameter to optionally exclude the Trade
that triggers a new candle in the old candle if desired (note that this could lead to a not desired Close
in the RelativePrice
aggregation).
Anyways, thanks for choosing trade_aggregation
as your crate of choice :D
New AggregationRule s
With the version 7.1 release, this crate introduces two new (AggregationRule)s.
First the TickRule triggers the candle creation every n tick (trades).
The second new AlignedTimeRule is similar to the TimeRule but additionally makes sure the candles are aligned to the start of the period.
A thank you goes out to @dam5h for creating the AlignedTimeRule.
Happy algotrading everyone!
More flexible Aggregator, by making it generic over input Trade data
This major release adds more convenience for downstream projects that have their own type of trade data that they wish to aggregate.
This is achieved by making the input trade data generic, where each type must implement the new "TakerTrade" trait.
Older code bases can trivially upgrade as the existing "Trade" struct implement this new trait, so usually only a single LOC needs to change.
Many thanks to @dam5h for the idea and the clean execution.
Major v4 Release
The 4th version of this crate introduces the 'GenericAggregator' which is generic over the type of Candle being produced as well as by which rules they are created., e.g. time, volume or other information driven rule.
Candles consist of types that implement the 'CandleComponent' trait and utilize the new 'Candle' derive macro to glue things together. This automatically implements the 'ModularCandle' trait, which enables users to define candles to be produced during the aggregation process.
It also generates getter methods with the name of the component inside the candle.
The rules dictating the conditions under which a Candle is emitted implement the 'AggregationRule' trait, which allows users to easily plug in their own logic for triggering candle creation beyond the time or volume rules.
This is all done in basically two lines of code (except the actual candle definition, where the LOC grow linearly with the number of components in it obviously).
All these changes make for the most flexible, modular and high performance trade aggregation crate out there, benchmarks and tests included.
Happy Trading!