- NormalizeLots: derive rounding digits from SYMBOL_VOLUME_STEP instead of
hardcoded 2, floor onto the step grid before clamping to min/max
- FitLotsToMargin: shrink volume to fit 90% of free margin via
OrderCalcMargin; skip the trade when even VOLUME_MIN cannot be afforded
(fixes repeated 'not enough money' rejects on XAUUSD)
- GetSLPoints/GetTPPoints: clamp to SYMBOL_TRADE_STOPS_LEVEL + spread
(fixes repeated 'invalid stops' rejects on GBPUSD counter trades)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
/compile only runs headless when no instance is open; otherwise it
hands off to the running instance and silently does nothing. Detect
that case via tasklist and skip cleanly instead of racing a compile
that will never happen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
MetaEditor64.exe hands off /compile requests to an already-running
instance and returns immediately, so the previous version read an
empty/missing log file. Now waits for the log to appear and stop
growing before checking it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Every commit to main now tags itself sequentially, compiles the EA via
MetaEditor CLI, archives the .ex5 to builds/, pushes, and prunes tags
and archived builds down to the last 10.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- AIGateway.mqh: use StringLen(json_payload) instead of WHOLE_ARRAY to avoid
null terminator being included in POST body (caused malformed JSON to gateway)
- ea_template.tpl: add XAUUSD H1 chart template for MT5 terminal setup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>