π Release v1.0.1 β Logic Refinement & Stability Update
π§ Core Fixes & Logic Improvements
π§© IndicatorCalculator.kt
Fixed: Incorrect EMA loop range.
Replaced for (i in period.index) with for (i in period until index + 1) to ensure proper EMA propagation.
Reason: The old loop caused incomplete or incorrect EMA calculations.
Improved: calculateSMA() now checks for Double.isFinite() instead of rejecting values <= 0.
Reason: Prevents valid low-priced assets from returning null due to false zero filtering.
Deprecated: CMF_Old() and MFI_Old() functions marked as @ Deprecated.
Reason: To remove confusion between legacy and modern implementations.
βοΈ SignalConfig.kt
Fixed: Increased daily (D1) timeframe minimum data requirement from 150 β 250.
Reason: Ensures sufficient candles for SMA200 and EMA200 calculations.
Logic Update: Replaced
minOf(calculatedMin, maxReasonableMin)
with
maxOf(maxPeriod, minOf(calculatedMin, maxReasonableMin))
Reason: Prevents the system from using too few data points for long-term indicators.
π VWAP Logic
Improved: findSessionStart() now derives the session start from candle openTime instead of relying on system clock.
Reason: Provides consistent session detection across exchanges and time zones.
π§ Design Consistency & Code Cleanup
Removed redundant or legacy functions to simplify maintenance.
Improved code readability and naming consistency.
Ensured indicator logic is fully aligned across modules.
β
Outcome
EMA and SMA calculations are now consistent and accurate.
Long-term indicators (SMA200, EMA200) compute properly across all timeframes.
VWAP session detection is robust in multi-timezone environments.
Deprecated legacy indicators improve future maintainability.