Skip to content

Releases: MerlinR/Hexital

Beta Release - 4.0.1

Choose a tag to compare

@MerlinR MerlinR released this 20 Jul 19:39

Beta Release - 4.0.1

  • Fix Readme doc links

Beta Release - 4.0.0

Choose a tag to compare

@MerlinR MerlinR released this 20 Jul 10:43

Beta Release - 4.0.0

2025-04-08

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() is period and source (when those fields exist on the indicator)
  • Removed Managed and NestedSource from public hexital exports (use add_state(); import from hexital.core.indicator if needed)
  • Renamed series retrieval methods
    • Indicator.readings() -> Indicator.series() for one indicator's values across candles
    • Hexital.reading_as_list() -> Hexital.series() for one named indicator series
    • Hexital.readings() -> Hexital.all_series() for all indicator series in the strategy
  • Separated candle timeframe metadata from resampling
    • candle.timeframe is metadata only — it does not configure managers or indicator naming
    • Resampling runs only when indicator.timeframe= or hexital.timeframe= is set
    • Removed timeframe= from append / 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 ChildWhen with BEFORE, AFTER, and MANUAL members; exported from hexital
    • Added convenience methods add_child_after() and add_child_managed()
    • add_child() accepts ChildWhen or a string value; invalid values raise InvalidIndicator
  • Removed add_sub_indicator() and add_managed_indicator() — use add_child() instead
  • Removed sub_indicators and managed_indicators dicts on Indicator — use children instead
  • Removed prior_calc property and IndicatorMode enum
  • Removed find_candle_pairing() — use candles_for() and candle_pair() instead
  • IndicatorCollection now requires indicator_field() on dataclass fields or explicit indicators passed to __init__

Changes

  • Support python 3.14

  • Added explicit candle stream helpers on Hexital

    • candles_for(name) returns the stream for an indicator, timeframe, or OHLCV field
    • candle_pair(indicator, indicator_cmp) returns two streams for movement comparison
  • Added indicator_field() for explicit IndicatorCollection registration

  • Fixed purge() to recursively clear nested child indicator readings

  • Added Hexital.from_settings() to reconstruct a strategy from a settings dictionary

  • Added State helper for indicator state

    • Added Indicator.add_state() to register state backed by a managed child
    • State provides prev(), reading(), set(), update(), and source() — replacing manual Managed + NestedSource
    • Exported State from hexital; built-in stateful indicators migrated to use it
  • Added QOL methods on Indicator

    • OHLCV properties: open, high, low, close, volume
    • Shorthand methods: prev(), at(), src(), prev_src(), at_src()
  • 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 Timeframe argument 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

Beta Release - 3.0.1

Choose a tag to compare

@MerlinR MerlinR released this 08 Apr 13:14

Beta Release - 3.0.1

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

Beta Release - 3.0.0

Choose a tag to compare

@MerlinR MerlinR released this 08 Apr 08:41

Beta Release - 3.0.0

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' to 'readings'
    • Renamed 'find_candles' to 'find_candle_pairing'
    • Removed 'has_reading' as pointless with method 'exists'
    • Candle with no 'timestamp' will no longer use current UTC time
  • Candle's no longer require a Timestamp

  • Reworked and optimised 'append' and added 'insert' and 'prepend'

  • 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

Beta Release - 2.0.3

Choose a tag to compare

@MerlinR MerlinR released this 12 Feb 20:25

Beta Release - 2.0.3

2025-02-12

  • Added option when converting Candle to include the readings
  • Updated 'Settings' to work correctly in Indicator, and added it to Hexital
  • Fixed
    • Fixed Minor bug in _find_calc_index

Beta Release - 2.0.2

Choose a tag to compare

@MerlinR MerlinR released this 04 Feb 17:46

Beta Release - 2.0.2

2025-02-04

  • Added as_list and as_dict method's 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' for 'clean_copy'
  • 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

Beta Release - 2.0.1

Choose a tag to compare

@MerlinR MerlinR released this 13 Jan 17:59

Beta Release - 2.0.1

2024-12-19

  • Fixes
    • Corrected merged candles not combining aggregation factor
    • Fix error when appending a list with one Candle

Beta Release - 2.0.0

Choose a tag to compare

@MerlinR MerlinR released this 19 Dec 19:51

Beta Release - 2.0.0

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-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 as prev_exists for correct handling dict's

  • Updated Candle to now accept either 'timestamp' or 'time' for time's in 'from_dict(s)'

  • Updated 'reading_count' to accept an index to count from

  • Updated Hexital append with optional 'timeframe' to select specific Candle's to append too

  • Updated 'candles' in Hexital method 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

Beta Release 1.1.2

Choose a tag to compare

@MerlinR MerlinR released this 03 May 20:50

Beta Release - 1.1.2 - 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

Beta Release - 1.1.1

Choose a tag to compare

@MerlinR MerlinR released this 01 May 16:43

Beta Release - 1.1.1 - 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)