Files
opencode-skill/skills/mql-developer/mql5-ea-troubleshooting/SKILL.md
Kunthawat Greethong b26c8199a5 Update skills: add website-creator, mql-developer, ecommerce-astro
Changes:
- Add FAL_KEY and GEMINI_API_KEY to .env.example
- Update picture-it to use ~/.config/opencode/.env (unified creds)
- Remove shodh-memory skill (no longer used)
- Remove alphaear-* skills (deprecated)
- Remove thai-frontend-dev skill (replaced by website-creator)
- Remove theme-factory skill
- Add mql-developer skill (MQL5 trading)
- Add ecommerce-astro skill (Astro e-commerce)
- Add website-creator skill (Next.js + Payload CMS)
- Update install script for new skills
2026-04-16 17:40:27 +07:00

2.8 KiB

name, description
name description
mql5-ea-troubleshooting MQL5 EA runtime errors and attach failures — init failures, INVALID_HANDLE 32757, build-specific enum differences

MQL5 EA Troubleshooting

Common runtime errors (attach failed)

Error 32757 (0x8001 = E_HANDLE / INVALID_HANDLE)

Usually means an indicator handle creation failed, or a function call/argument mismatch in OnInit().

Stack mismatch diagnosis:

// Call site passes 9 args:
g_orderManager.Init(g_symbol, InputMagicNumber, InputComment,
                    InputEntryPrice, InputSL, InputTP,
                    InputMaxFollowOrders, InputUseTrailingSL,
                    InputFollowDelayBars);  // ← 9 args

// But declaration only accepts 8:
void Init(string symbol, int magicNumber, string comment,
          double inputEntry, double inputSL, double inputTP,
          int maxFollow, bool useTrailing, int followDelayBars);  // ← 8 params
//                                                                                         ↑ stack corrupted

Fix: match declaration to call.

Indicator handle failure:

  • iATR(symbol, PERIOD_M5) → in some builds requires 3 params: iATR(symbol, PERIOD_M5, period)
  • iATR(handle) returns INVALID_HANDLE if symbol/timeframe unavailable
  • Always check: if(handle == INVALID_HANDLE) return INIT_FAILED;

Build-specific enums (tested on build 3570+)

Enum Wrong Correct
ATR params iATR(sym, TF) (2 args) iATR(sym, TF, period) (3 args)
Account margin ACCOUNT_MARGIN_MODE_NETTING ACCOUNT_MARGIN_MODE_RETAIL_NET
Account free margin ACCOUNT_FREEMARGIN (deprecated) ACCOUNT_MARGIN_FREE
Symbol contract size SYMBOL_CONTRACT_SIZE SYMBOL_TRADE_CONTRACT_SIZE
Margin rate SYMBOL_MARGIN_RATE (doesn't exist) SYMBOL_MARGIN_HEDGED or use OrderCalcMargin()
TRADE_TRANSACTION TRADE_TRANSACTION_POSITION_CLOSE, _OPEN don't exist Use TRADE_TRANSACTION_DEAL_ADD + TRADE_TRANSACTION_POSITION
CTrade.SetComment() doesn't exist Pass comment string directly to Buy()/Sell()

Type coercion warnings (benign — still compile)

  • SymbolInfoInteger() returns long; assign to double with explicit cast: (double)SymbolInfoInteger(sym, SYMBOL_SPREAD)
  • rates[].tick_volume is long; cast: (double)rates[0].tick_volume

Debug approach for attach/init failures

  1. Check if error is an INIT_* code ( INIT_PARAMETERS_INCORRECT = 5, INIT_FAILED = 7)
  2. If not INIT code → look for INVALID_HANDLE or E_HANDLE
  3. Search all files for IndicatorCreate, iATR, iAC, iADX — ensure all handles checked
  4. Count arguments in every Init/constructor call vs. declaration
  5. Check global-scope code that runs before OnInit() (including class member constructors)