Files
zhutoutoutousan b50b430d1a Update
2026-04-09 11:47:56 +02:00

2.2 KiB
Raw Permalink Blame History

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+:
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).

  1. Copy models/XAUUSD_M15_action.onnx to MQL5/Files/ (same path as #resource in the EA).
  2. Open XAUUSD_M15_ActionEA.mq5 in MetaEditor; compile.
  3. 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.