Logo

    Example Usage

    Example: Get EURUSD price quote

    The example code below processes QUOTE command sent to the \quote endpoint. Codes are presented in NodeJS.

    Important

    Code examples are for reference only and is not guaranteed to work for your requirements. You are responsible for your own application performance and security.

    server.js

    const http = require('http'); const net = require('net'); const MT5_PORT = 8777; const SERVER_PORT = 3000; const server = http.createServer((req, res) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); if (req.method === 'OPTIONS') { res.writeHead(200); res.end(); return; } if (req.method === 'POST' && req.url === '/quote') { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { try { const { SYMBOL } = JSON.parse(body); if (!SYMBOL) { res.writeHead(400); res.end(JSON.stringify({ error: 'SYMBOL required' })); return; } const client = new net.Socket(); const command = JSON.stringify({ MSG: 'QUOTE', SYMBOL }); let responseData = ''; const timeout = setTimeout(() => { client.destroy(); res.writeHead(504); res.end(JSON.stringify({ error: 'Timeout' })); }, 10000); client.connect(MT5_PORT, '127.0.0.1', () => { client.write(command + '\r\n'); }); client.on('data', data => { responseData += data.toString(); try { const jsonResponse = JSON.parse(responseData); if (jsonResponse.MSG) { clearTimeout(timeout); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(responseData); client.destroy(); } } catch (e) { console.log(e) } }); client.on('error', () => { clearTimeout(timeout); res.writeHead(500); res.end(JSON.stringify({ error: 'MT5 connection failed' })); }); } catch (e) { res.writeHead(400); res.end(JSON.stringify({ error: 'Invalid JSON' })); } }); } else { res.writeHead(404); res.end('Not Found'); } }); server.listen(SERVER_PORT, () => { console.log(`Server running on port ${SERVER_PORT}`); });

    Start server.js

    node server.js

    Send command using Curl

    curl -X POST http://localhost:3000/quote \ -H "Content-Type: application/json" \ -d '{"SYMBOL": "EURUSD"}'

    Send command using Powershell

    Invoke-RestMethod -Uri "http://localhost:3000/quote" -Method POST -ContentType "application/json" -Body '{"SYMBOL": "EURUSD"}'