Files
profitable-expert-advisor/ai/xauusd_m15/README.md
T
2026-04-09 11:47:56 +02:00

50 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# XAUUSD M15 — ONNX action model (buy / sell / close)
## What it does
- Pulls **XAUUSD** (**M15**) from **MetaTrader 5** (20082026 requested; actual range depends on History Center).
- **24 features**: 13 legacy OHLC/EMA/ATR/volume + **11 RSI / session** features aligned with **frontline** strategies (crosses, velocity, RSI7/21, Asian window). See **`FRONTLINE_RSI_INTEGRATION.md`**.
- Labels: **buy-low / sell-high** (forward window) + **close-long / close-short** (past-only). RSI enters as **inputs**, not as hard-coded label rules.
- Trains **LSTM → softmax(5)**: `HOLD`, `BUY`, `SELL_SHORT`, `CLOSE_LONG`, `CLOSE_SHORT`.
- Exports **`models/XAUUSD_M15_action.onnx`** + scaler + **`XAUUSD_M15_action_meta.json`** (includes `feature_columns`).
- **EA**: **SL=0, TP=0**; **InpMaxAdverseATR**; **InpSessionHourOffset** should match training `SESSION_HOUR_OFFSET` for Asian flag.
This is research tooling — not investment advice. Past labels do not guarantee live performance.
## Setup
1. MT5 installed, logged in, **XAUUSD** visible; download **M15** history (Tools → History Center or chart scroll).
2. Python 3.10+:
```bash
cd ai/xauusd_m15
pip install -r requirements.txt
python main.py
```
Optional env: `XAU_SYMBOL`, `XAU_LOOKBACK` (default 64), `XAU_EPOCHS`, `XAU_BATCH`, `SESSION_HOUR_OFFSET` (Asian session hour alignment vs server time).
3. Copy `models/XAUUSD_M15_action.onnx` to **`MQL5/Files/`** (same path as `#resource` in the EA).
4. Open `XAUUSD_M15_ActionEA.mq5` in MetaEditor; compile.
5. Paste two lines from training stdout into **InpFeatMinStr** and **InpFeatMaxStr** (comma-separated **24** floats each).
## ONNX I/O
- Input: `[1, lookback, 24]` float32, **row 0 = newest bar**.
- Output: `[1, 5]` softmax probabilities.
## Files
| File | Role |
|------|------|
| `main.py` | Fetch, features, labels, train, ONNX + meta |
| `features.py` | 24-dim pipeline + Wilder RSI |
| `FRONTLINE_RSI_INTEGRATION.md` | frontline 策略 → 特征对照 |
| `labeling.py` | `compute_action_labels` |
| `risk_controls.py` | Adverse ATR helper for Python backtests |
| `XAUUSD_M15_ActionEA.mq5` | Live inference + trading skeleton |
## Tuning labels
Edit parameters in `labeling.compute_action_labels()` (`horizon`, `k_forward_atr`, `pullback_mult`, etc.) and retrain.