Market_State_Board/README.md

141 lines
No EOL
7.9 KiB
Markdown

# MarketStateBoard_MTF
Multi-timeframe market-state indicator for MetaTrader 5 / MQL5.
## Overview
MarketStateBoard_MTF is a MetaTrader 5 / MQL5 indicator that presents a market-state view of a trading symbol across nine fixed timeframes. It is a separate-window indicator (`indicator_separate_window`, height 128) that renders a compact market-state board as chart objects. It declares no indicator buffers and no plots.
Current production baseline: **version 1.190 (PATCH-19)**, frozen and published as an indicator-project publication on MQL5 Algo Forge.
## What the Indicator Does
The indicator performs an independent per-timeframe evaluation for each of the nine supported timeframes, combining:
- bar geometry (body ratio, wick dominance, close location);
- oscillator evidence (RSI, Stochastic, CCI, MACD);
- ATR context;
- tick-volume context.
Each timeframe's evidence is aggregated into a market-state assessment, and the nine assessments are combined into a single global market-state board with a global score panel. The board shows the global score on a -1.00…+1.00 ruler, a BULLISH / NEUTRAL / BEARISH reading, and a Global Market Dynamics type/strength summary (PATCH-19 semantic aggregation across all nine timeframes).
The implementation is deterministic and stateless: identical inputs produce identical output.
## Timeframe Universe
The production configuration uses a fixed nine-timeframe (9-TF) universe:
**M1 / M5 / M15 / M30 / H1 / H4 / D1 / W1 / MN1**
All nine timeframes are always analyzed. There are no per-timeframe enable or disable inputs.
## State Modes
The indicator selects the evaluated candle through a single input (`InpCandleSource`):
- **CURRENT** — the evaluation uses the current, in-progress bar of each timeframe.
- **CLOSED** — the evaluation uses the most recently completed (closed) bar of each timeframe.
In CURRENT mode each timeframe is re-evaluated on a rate-limited, round-robin schedule. In CLOSED mode a timeframe is re-evaluated only when that timeframe's own most recent closed-bar timestamp changes. The board caption always shows the active mode (`CURRENT` or `CLOSED`).
## Processing Architecture
The high-level processing pipeline is:
```
Base Market State -> Market Dynamics -> Dynamic Modifier -> Final State
```
- **Base Market State** — per-timeframe evaluation of bar geometry, oscillator evidence, ATR context and tick-volume context.
- **Market Dynamics** — the Market Dynamics Modifier (MDM) layer classifies the dynamic response as CONTINUATION / DAMPENING / REVERSAL / UNRESOLVED with strength WEAK / STRONG / VERY STRONG / EXTREME. PATCH-18 aggregates Market Dynamics semantically across all nine timeframes; PATCH-19 adds calendar-news evidence to the MDM evaluation.
- **Dynamic Modifier** — the MDM outcome produces a numeric modifier that is applied to the base state.
- **Final State** — the resulting per-timeframe and global market state is presented on the board.
## Main Components / Dependencies
The frozen source resolves three required include files at compile time:
| Include | Role |
|---|---|
| `Include/MarketStateBoard_Fuzzy.mqh` | PATCH-09 fuzzy membership layer — mathematical membership for the RSI, Stochastic, CCI and MACD evidence channels |
| `Include/MarketStateBoard_MDM_PATCH19.mqh` | PATCH-19 Market Dynamics Modifier (News Dynamic) |
| `Include/MarketStateBoard_Weights.mqh` | PATCH-11 dynamic weight engine — direction-neutral contextual weights |
All three files must be present in the MQL5 `Include\` directory for the source to compile. In the implementation's documented semantics, membership values, weights and the MDM modifier are mathematical/descriptive quantities, not probabilities, confidence measures, or predictive statements.
## Installation
1. Copy the indicator files into the MetaTrader 5 MQL5 directory:
- `Indicators\MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190.mq5` into `MQL5\Indicators\`; the published `.ex5` can be used without compiling;
- the three `.mqh` files (`MarketStateBoard_Fuzzy.mqh`, `MarketStateBoard_MDM_PATCH19.mqh`, `MarketStateBoard_Weights.mqh`) into `MQL5\Include\`.
2. If using the source, compile it in MetaEditor (frozen compile gate: 0 errors, 0 warnings).
3. Attach the compiled indicator to a chart. The indicator renders its board in a separate window and creates chart objects with the `MSB_` prefix.
## Basic Usage
- Select the candle source (CURRENT or CLOSED). The board caption reflects the active mode.
- Context inputs: ATR period (14), body lookback (14), volume lookback (14).
- Panel inputs: X/Y position (10/10) and label / bullish / bearish / neutral / conflict / unavailable colors.
- Optional alerts on alignment change are disabled by default.
- The nine-timeframe universe is fixed; there are no per-timeframe switches.
## Validation Status
The production baseline has the following documented validation record:
| Gate | Result |
|---|---|
| Native compile | 0 errors / 0 warnings |
| R4 (sub-gates R4.1, R4.2, R4.3, R4.4A, R4.4B) | PASS |
| Final R4 | PASS |
| R4.4B independent recomputation | PASS for all 9 timeframes in the recorded validation snapshot |
These statements are scoped to the recorded validation evidence (frozen v1.190 source, XAUUSD, CLOSED-state snapshot, 2026-09-16). They establish that the frozen implementation compiles cleanly and that an independent recomputation matched the recorded published snapshot within the documented R4.4B scope. They do **not** establish profitability, accuracy guarantees, predictive edge, or future performance.
## Version / Publication Identity
| Field | Value |
|---|---|
| Project | MarketStateBoard_MTF |
| Version | 1.190 |
| Patch | PATCH-19 |
| Product type | MetaTrader 5 / MQL5 multi-timeframe market-state indicator |
| Forge | MQL5 Algo Forge |
| Repository | `chiki2bum2/Market_State_Board` (public, branch `main`) |
| Publication scope | Indicator project publication only |
| Publication commit | `822911bb74f7cca790ebcfb76c1d60fee306055e` |
## Scope and Limitations
- This repository documents an indicator implementation and its recorded validation snapshot.
- Validation evidence is specific to the recorded validation scope; it does not establish profitability and is not a guarantee of future performance.
- Research results, backtests, calibration data and strategy-performance material are outside this repository's publication scope.
- The published source and EX5 correspond to the frozen v1.190 baseline and must not be modified by documentation updates.
## Repository Structure
```
docs/ Governance and publication records
Include/ Required include files (MarketStateBoard_*.mqh)
Indicators/ Production source, compiled indicator, compile evidence, package descriptors
```
Published file set (root commit `822911bb`):
| Path | Role |
|---|---|
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190.mq5` | Production source (frozen) |
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190.ex5` | Compiled indicator (frozen) |
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190.log` | Compile log |
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190/README.md` | Package description |
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190/MANIFEST.json` | Artifact inventory with hashes and compile gate |
| `Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190/LICENSE` | MIT license |
| `Indicators/NativeCompileEvidence/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190_20260916_082759711.json` | Compile-gate evidence |
| `Include/MarketStateBoard_Fuzzy.mqh` | Required include |
| `Include/MarketStateBoard_MDM_PATCH19.mqh` | Required include |
| `Include/MarketStateBoard_Weights.mqh` | Required include |
| `docs/MSB_PUB_001_PUBLICATION_RECORD_2026-09-17.md` | Publication record |
## License
The repository includes an MIT License (`Indicators/MarketStateBoard_MTF_PATCH19_NEWS_DYNAMIC_9TF_FINAL_v1.190/LICENSE`).