metaapi.cloud-sdk
Version:
SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)
60 lines (49 loc) • 2.26 kB
JavaScript
let RiskManagement = require('metaapi.cloud-sdk').RiskManagement;
let TrackerEventListener = require('metaapi.cloud-sdk').TrackerEventListener;
// your MetaApi API token
let token = process.env.TOKEN || '<put in your token here>';
// your MetaApi account id
// the account must have field riskManagementApiEnabled set to true
let accountId = process.env.ACCOUNT_ID || '<put in your account id here>';
let domain = process.env.DOMAIN;
const riskManagement = new RiskManagement(token, {domain});
const riskManagementApi = riskManagement.riskManagementApi;
class ExampleTrackerEventListener extends TrackerEventListener {
async onTrackerEvent(trackerEvent) {
console.log('tracker event received', JSON.stringify(trackerEvent));
}
async onError(error) {
console.log('error event received', error);
}
}
async function main() {
try {
// creating a tracker
let trackerId = await riskManagementApi.createTracker(accountId, {
name: 'example-tracker',
absoluteDrawdownThreshold: 5,
period: 'day'
});
console.log('Created an event tracker ' + trackerId.id);
// adding a tracker event listener
let trackerEventListener = new ExampleTrackerEventListener(accountId, trackerId.id);
let listenerId = riskManagementApi.addTrackerEventListener(trackerEventListener, accountId, trackerId.id);
console.log('Streaming tracking events for 1 minute...');
await new Promise(res => setTimeout(res, 1000 * 60));
riskManagementApi.removeTrackerEventListener(listenerId);
console.log('Receiving statistics with REST API');
let events = await riskManagementApi.getTrackerEvents(undefined, undefined, accountId, trackerId.id);
console.log('tracking events', JSON.stringify(events));
let statistics = await riskManagementApi.getTrackingStatistics(accountId, trackerId.id);
console.log('tracking statistics', JSON.stringify(statistics));
let equityChart = await riskManagementApi.getEquityChart(accountId);
console.log('equity chart', JSON.stringify(equityChart));
// removing the tracker
await riskManagementApi.deleteTracker(accountId, trackerId.id);
console.log('Removed the tracker');
} catch (err) {
console.error(err);
}
process.exit();
}
main();