38 lines
2.7 KiB
Markdown
38 lines
2.7 KiB
Markdown
|
|
## Relevant Files
|
||
|
|
|
||
|
|
- `config/indicators/templates/*.json` - Indicator configuration templates to be updated with the new `timeframe` field.
|
||
|
|
- `components/charts/indicator_manager.py` - To add `timeframe` to the `UserIndicator` dataclass and related methods.
|
||
|
|
- `dashboard/layouts/market_data.py` - To add UI elements for selecting the indicator timeframe.
|
||
|
|
- `dashboard/callbacks/indicators.py` - To handle the new `timeframe` input from the UI.
|
||
|
|
- `components/charts/data_integration.py` - To implement the core logic for fetching data and calculating indicators on different timeframes.
|
||
|
|
- `components/charts/builder.py` - To ensure the new indicator data is correctly passed to the chart.
|
||
|
|
|
||
|
|
### Notes
|
||
|
|
|
||
|
|
- The core of the changes will be in `components/charts/data_integration.py`.
|
||
|
|
- Careful data alignment (reindexing and forward-filling) will be crucial for correct visualization.
|
||
|
|
|
||
|
|
## Tasks
|
||
|
|
|
||
|
|
- [x] 1.0 Update Indicator Configuration
|
||
|
|
- [x] 1.1 Add an optional `timeframe` field to all JSON templates in `config/indicators/templates/`.
|
||
|
|
- [x] 1.2 Update the `UserIndicator` dataclass in `components/charts/indicator_manager.py` to include `timeframe: Optional[str]`.
|
||
|
|
- [x] 1.3 Modify `create_indicator` in `IndicatorManager` to accept a `timeframe` parameter.
|
||
|
|
- [x] 1.4 Update `UserIndicator.from_dict` and `to_dict` to handle the new `timeframe` field.
|
||
|
|
- [x] 2.0 Implement Multi-Timeframe Data Fetching and Calculation
|
||
|
|
- [x] 2.1 In `components/charts/data_integration.py`, modify `get_indicator_data`.
|
||
|
|
- [x] 2.2 If a custom timeframe is present, call `get_market_data_for_indicators` to fetch new data.
|
||
|
|
- [x] 2.3 If no custom timeframe is set, use the existing `main_df`.
|
||
|
|
- [x] 2.4 Pass the correct DataFrame to `self.indicators.calculate`.
|
||
|
|
- [x] 3.0 Align and Merge Indicator Data for Plotting
|
||
|
|
- [x] 3.1 After calculation, reindex the indicator DataFrame to match the `main_df`'s timestamp index.
|
||
|
|
- [x] 3.2 Use forward-fill (`ffill`) to handle missing values from reindexing.
|
||
|
|
- [x] 3.3 Add the aligned data to `indicator_data_map`.
|
||
|
|
- [x] 4.0 Update UI for Indicator Timeframe Selection
|
||
|
|
- [x] 4.1 In `dashboard/layouts/market_data.py`, add a `dcc.Dropdown` for timeframe selection in the indicator modal.
|
||
|
|
- [x] 4.2 In `dashboard/callbacks/indicators.py`, update the save indicator callback to read the timeframe value.
|
||
|
|
- [x] 4.3 Pass the selected timeframe to `indicator_manager.create_indicator` or `update_indicator`.
|
||
|
|
- [ ] 5.0 Testing and Validation
|
||
|
|
- [ ] 5.1 Write unit tests for custom timeframe data fetching and alignment.
|
||
|
|
- [ ] 5.2 Manually test creating and viewing indicators with various timeframes (higher, lower, and same as chart).
|
||
|
|
- [ ] 5.3 Verify visual correctness and data integrity on the chart.
|