- Add _remove_incomplete_candle() for timestamp-based conditional
slicing on both 15m and 1h data (replaces hardcoded [:-1])
- Add MetaFilter indicator caching to eliminate 3x duplicate calc
- Fix notifier encapsulation (_send → notify_info public API)
- Remove DataFetcher.poll_update() dead code
- Fix evaluate_oos.py symbol typo (xrpusdtusdt → xrpusdt)
- Add 20 pytest unit tests for MetaFilter, TriggerStrategy,
ExecutionManager, and _remove_incomplete_candle
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>