Changelog
All notable changes to this project will be documented in this file.
The project adheres to Semantic Versioning ⧉.
4.0.1
Release Date: 20/07/26
- Fix README docs links
4.0.0
Release Date: 20/07/26
- Support python 3.14
-
Non-backward compatible changes:
- Nested naming delimiter changed
.is replaced with: - Altered the vast majority of Indicators Generated naming.
- Indicator names are built centrally in
Indicator._generate_name()from_name_parts() - Indicators with extra parameters
_name_parts()instead of_generate_name() - Default
_name_parts()isperiodandsource(when those fields exist on the indicator)
- Indicator names are built centrally in
- Removed
ManagedandNestedSourcefrom publichexitalexports (useadd_state(); import fromhexital.core.indicatorif needed) - Renamed series retrieval methods
Indicator.readings()->Indicator.series()for one indicator's values across candlesHexital.reading_as_list()->Hexital.series()for one named indicator seriesHexital.readings()->Hexital.all_series()for all indicator series in the strategy
- Separated candle timeframe metadata from resampling
candle.timeframeis metadata only — it does not configure managers or indicator naming- Resampling runs only when
indicator.timeframe=orhexital.timeframe=is set - Removed
timeframe=fromappend/prepend/insert; label candles at source instead - Managers accept candles whose label is equal to or finer than the manager transform
- Timeframe default has changed from str CONST "default" TimeFrame DEFAULT = "N"
- Reworked child indicator API
- Added
add_child(indicator, ...)as the single entry point for attaching child indicators - Added
ChildWhenwithBEFORE,AFTER, andMANUALmembers; exported fromhexital - Added convenience methods
add_child_after()andadd_child_managed() add_child()acceptsChildWhenor a string value; invalid values raiseInvalidIndicator
- Added
- Removed
add_sub_indicator()andadd_managed_indicator()— useadd_child()instead - Removed
sub_indicatorsandmanaged_indicatorsdicts onIndicator— usechildreninstead - Removed
prior_calcproperty andIndicatorModeenum - Removed
find_candle_pairing()— usecandles_for()andcandle_pair()instead IndicatorCollectionnow requiresindicator_field()on dataclass fields or explicit indicators passed to__init__
- Nested naming delimiter changed
-
Added explicit candle stream helpers on
Hexitalcandles_for(name)returns the stream for an indicator, timeframe, or OHLCV fieldcandle_pair(indicator, indicator_cmp)returns two streams for movement comparison
- Added
indicator_field()for explicitIndicatorCollectionregistration - Fixed
purge()to recursively clear nested child indicator readings - Added
Hexital.from_settings()to reconstruct a strategy from a settings dictionary - Added
Statehelper for indicator state- Added
Indicator.add_state()to register state backed by a managed child Stateprovidesprev(),reading(),set(),update(), andsource()— replacing manualManaged+NestedSource- Exported
Statefromhexital; built-in stateful indicators migrated to use it
- Added
- Added QOL methods on
Indicator- OHLCV properties:
open,high,low,close,volume - Shorthand methods:
prev(),at(),src(),prev_src(),at_src()
- OHLCV properties:
- Major Typing update, some method clean up and optimisation
- Performance optimisations for appending
- Made
Candle.__eq__()symmetric while preserving lenient comparison - Updated Test verification
-
Added
Timeframeargument to helper generating Candle methods for easier setting from existing data -
Added Indicators
- Added AO
- Added BandWidth
- Added CCI (CCI)
- Added ChandelierExit
- Added CKSP
- Added CMF
- Added DEMA
- Added Fisher
- Added COPC
- Added KAMA
- Added KST
- Added Linear Regression
- Added NATR
- Added PPO
- Added PSAR
- Added Regression Channel
- Added Regression Slope
- Added Squeeze (SQ)
- Added Squeeze Pro (SQPRO)
- Added TEMA
- Added TRIX
- Added Ultimate Oscillator (UO)
- Added Vortex
- Added WillR (WillR)
- Added ZScore (ZS)
- Modified Indicators
- KC can now be ran with EMA or SMA, and uses TR by default
- WMA uses O(1) incremental rolling after seed period
- BBANDS now takes optional Multiplier defaults 2.0
3.0.1
Release Date: 2025-04-08
- CandlestickType now re-calculates after prepending to ensure prev transformed are still correct
- Optimise Indicator
_reading_dup()(I think im dumb) - Updated
resample_candles()to make use of CalcMode
3.0.0
Release Date: 2025-04-08
-
Non-backward compatible changes:
- Hexital and Indicator
append()will now only append to Candles and not sort placement. - Renamed Indicator
as_list()toreadings() - Renamed
find_candles()tofind_candle_pairing() - Removed
has_reading()as pointless with methodexists() - Candle with no
timestampwill no longer use current UTC time
- Hexital and Indicator
-
Candle's no longer require a Timestamp
- Reworked and optimised
append()and addedinsert()andprepend() - Added IndicatorCollection as a way to better reference Indicator's
- More options when setting indicator 'Source' - str | Indicator | NestedSource
- Updated Sub/Managed Indicator's to generate name based of parents if none set
- Added Specific reading typing for Indicators
- Reworked CandlestickType to be faster and can generate larger set of Candlesticks
2.0.3
Release Date: 2025-02-12
- Added option when converting Candle to include the readings
- Updated
settingsto work correctly in Indicator, and added it to Hexital - Fixed
- Fixed Minor bug in
_find_calc_index()
- Fixed Minor bug in
2.0.2
Release Date: 2025-02-04
- Added
as_list()andas_dict()methods to Candle - Added
clean_copy()to Candle to copy core values to new Candle object- Will remove indicators/sub_indicators
- Default used when appending new Candle
- Added
readings()to Hexital - Optimisation
- Removed use of
deepcopy()forclean_copy()
- Removed use of
- Fixes
- Corrected filler candles in timeframe to have 0 aggregation factor
- Corrected VWAP Naming
- Prevent DEFAULT timeframe being same as another set timeframe
- DEFAULT is renamed to the correct timeframe is set in Hexital
2.0.1
Release Date: 2025-01-12*
- Fixes
- Corrected merged candles not combining aggregation factor
- Fix error when appending a list with one Candle
2.0.0
Release Date: 2024-12-19
-
Non-backward compatible changes:
- Re-named several Hexital arguments
- candles_lifespan -> candle_life
- candlestick_type -> candlestick
- Re-named several Indicator arguments
- input_value -> source
- fullname_override -> name
- candles_lifespan -> candle_life
- candlestick_type -> candlestick
- rounding_value -> rounding
- Candle's now require a timestamp, a single candle added will use the current UTC time
- Candle timeframe attribute:
- Candle's now have a timeframe attribute, this shows the resolution of the Candle, this is optional for Candle's
- Merging Candle's now take into account first and last Candles for accurate Open/Close value updates
- Appending Candles will now be sorted, allowing to say Append missing or back data
- Improved the speed of Candle timeframe collapsing
- Re-named several Hexital arguments
-
Re-wrote Testing method
- Removed unreliable deepdiff rounding
- Removed soft Correlation Coefficient
- Custom accuracy none rounding driven custom diff check
- Updated Movement methods to accept
Indicator | Hexital | List[Candle]and searches the given object to find the specific'd indicator(s)- Movement methods can now accept Indicator's from different timeframes when used with Hexital object
- Added
candles_average()method to Indicator - Added
exists()to do same asprev_exists()for correct handling dict's - Updated Candle to now accept either
timestamportimefor times infrom_dict()/from_dicts() - Updated
reading_count()to accept an index to count from - Updated Hexital
append()with optionaltimeframeto select specific Candle's to append too - Updated
candles()in Hexital to accept timeframe's or indicators - Updated
prev_exists()to correctly handle Dict's -
Updated Rounding to accept 'None' to indicate no rounding, default is still 4
-
Added Movements
- Added flipped, to detect changes in bool's or solid values
- Added Indicators
- Chande Momentum Oscillator (CMO)
- High Low Close Average (HLCA)
- Money Flow Index (MFI)
- Midpoint Over Period (MOP)
- Pivot Points (PivotPoints)
- Jurik Moving Average Average (JMA)
- Added Relative Vigor Index (RVI)
- Alterations
- Added Anchor to VWAP
- Renamed several Indicators Internal:
- HighestLowest -> HL
- HighLowAverage -> HLA
- StandardDeviation -> STDEV
- StandardDeviationThreshold -> STDEVT
- Fixes
- Fixed Timeframe rounding to correctly handle days
- Fixed OBV
- No rounding for sub/managed indicators
- Fixed STDEV/bbands
- Corrected when start calculation
- Fixed KC
1.1.2
Release Date: 2024-05-03
- Fixed Major incremental calculate flaw with sub indicators
- Causing sub indicators to almost always re-calc entire set rather than latest (incrementally)
- Optimised Analysis and Movement functions for less calls and less loops
- Removed Deepcopies on Candles unless being added to Extra timeframes to speed up appending
1.1.1
Release Date: 2024-05-01
- Changed Movement rising/falling default length from 4 to 1
- Added better exceptions to Hexital verifying dict indicators
- Mass Indicator clean up to fix, unused/unended input_value's and unused sub indicators
- Fixed minor donchian error
- Fixed Highest and Lowest movement methods from returning bool False instead of None
- Added Indicators
- Added HighestLowest (HL)
- Added Standard Deviation Threshold (STDEVTHRES)
1.1.0
Release Date: 2024-04-21
- Removed Movement/Patterns from Hexital/Indicator
- Removed
get_indicator()from Hexital asindicator()already exists - Renamed
candles_all()toget_candles() - Updated
prev_exists()to accept optional Indicator to be more useful - Altered Indicator name reading, to avoid issue's such as "TR" in "ATR"
- Changed several methods to properties in Candle (positive, realbody, etc)
- Updated Candle to be more flexible with values
- Corrected correlation_coefficient for unit testing
- Added Indicators
- Counter
- Aroon (aroon)
- Donchian Channels (donchian)
- Hull Moving Average (HMA)
- True Strength Index (TSI)
- Standard Deviation (STDEV)
- Bollinger Bands (BBANDS)
- Added Patterns
- Inverted Hammer
- Dojistar
1.0.1
Release Date: 2024-04-08
- Fixed
#12Inaccurateverify_indicators()method in Hexital
1.0.0
Release Date: 2024-02-11
- Moving Into BETA
- Added CandleManager
- CandleManger replaces List[Candle] to manage Candles and controls CandlestickTypes, timeframes and lifespan
- Added CandlestickType
- CandlestickType modular parent to convert candlesticks to alt types,
- E.G Auto convert candles to heikin-ashi
- Can be added as str 'candlestick_type="ha"' for heikin-ashi
- Converted Candle to Class from Dataclass
- Added Many Candle analysis methods to Candle:
- Positive, Negative, realbody, shadow_upper, shadow_lower, high_low
- Added Tag and 'clean_values' to Candle to support conversion of Candlesticks
- Added Pattern_map, Movement_map, Indicator_map and Candlestick_map for easier control and possible modular altering
- Added Heikin-Ashi candlestick conversion
- Added better config inheritance from Hexital to Indicators
- Added
calculate_index()to hexital - Added ability to call the movement and pattern methods from Hexital and Indicator for easier usage
above(),below(),cross(),crossover(),doji(),hammer(), etc..
- Added
sanitise_name()to convert '.' to ',' to support name nesting - Added more Exceptions to improve error's
- Added Candle ability to accept json str timestamp, therefore allowing direct conversion from Pandas -> Hexital
- Fixed Hammer index pattern working correctly
- Changed Sub/managed indicators to auto populate candles field
- Changed
as_list()property a method that can now take a nested indicator name - Removed read property
- Renamed utils/candlesticks to utils/candles
0.4.0
Release Date: 2024-01-22
- Cleaned up code and some potential Bugs ruff/pyright
- Added movement Above/Below and updated others to use it
- Updated collapse candle 'fill' to show essentially doji candle rather than copy prev
- Added Patterns:
- Hammer Candle
- Added a TimeFrame Enum with common timeframes for easier usage
- Renamed Pattern to Amorph and updated to only require either 'indicator' or 'analysis'
- Renamed candles_timerange to candles_lifespan, to be clearer of purpose and avoid confusion with candles_timeframe
- Updated Hexital/Amorph to accept patterns, movements and custom methods
- Major Fix: Re-wrote collapse_candles_timeframe to correctly handle candles,gaps and appending
- Fixed Doji pattern
- Fixed Supertrend Indicator
- Fixed Timeframe bug with candles reference in indicator that use sub indicators
- Fixed possible error in VWAP with no volumes traded
- Fixed bug with nested Indicator returning None for valid 0 Value
- Fixed
purge()not correctly purge sub and managed indicators
0.3.1
Release Date: 2023-10-09
- Added candles_timerange to auto remove older than N candles
- Added
settingsproperty, to output Indicator in a dict format, that can be fed into back into Hexital - Updated Hexital to better take Pattern's as a dict input
- Updated Hexital dict input to accept custom method Patterns
- Fixed bug in Movement on to few candles
- Fixed bug where no timeframe indicator wasnt creating new copy of candles
- Fixed bug where collapsed timeframe candles will use first calculated indicator value
- Meaning 1 minute candle that only had first 10 seconds, will never re-calculate for rest of the minute
0.3.0
Release Date: 2023-09-27
- Added Patterns:
- Doji Candle
- Added
append()method to Indicator just like Hexital - Fixed bug where Hexital would alter indicator list
- Fixed bug in
_find_calc_index()with no candles - Added Pattern Indicator, skeleton to run Any Patterns as a Indicator
- E.G On all Candles automatically
- Added support to generate Indicators on multiple timeframes at once
- Allowing one set of candles to be used to generate higher timeframe indicators
- E.G 1m candles can be used to generate 10m indicators simultaneously with 1m indicators
0.2.0
Release Date: 2023-09-05
- Feature: Added timestamp (datetime) to Candle dataclass
- Feature: Can convert Candle from list and dict
- Feature: Can set timestamp(datetime) in lists/dict Candle conversion
- Added
_validate_fields()method to Indicators - Added custom exceptions
- More thorough unit testing
- Updated Indicators accuracy to Truth source
- Added private index property to Indicator allowing simpler method calls
self.reading_by_index(index, self.input_value)->self.reading(self.input_value)- Multiple Method's renamed/argument re-ordered
- Added Indicators:
- ADX
- HLA
- KC
- OBV
- RMA
- ROC
- STOCH
- SuperTrend
- VWAP
- VMA
- WMA
0.1.1
Release Date: 2023-08-28
- Nada
0.1.0
Release Date: 2023-08-27
- Alpha release
hexital