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)
101 lines (82 loc) • 3.38 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Period statistics stream example</title>
</head>
<body>
<div style="padding: 20px; display: flex; flex-direction: column; width: 200px">
<label for="tracker-name-input" style="margin-bottom: 5px">Tracker name</label>
<input id="tracker-name-input" style="margin-bottom: 10px" type="text">
<label for="token-input" style="margin-bottom: 5px">Terminal access token</label>
<input id="token-input" style="margin-bottom: 10px" type="text">
<label for="account-id-input" style="margin-bottom: 5px">Account ID</label>
<input id="account-id-input" type="text" style="margin-bottom: 10px">
<button onclick="onSubmit()">Connect</button>
</div>
<div id='info' style="margin-top: 20px"></div>
</body>
<script src="https://unpkg.com/metaapi.cloud-sdk"></script>
<script>
const infoElement = document.getElementById('info');
function log() {
if(typeof arguments[1] === 'object'){
arguments[1] = JSON.stringify(arguments[1]);
}
const el = document.createElement('div');
el.innerHTML = [].join.call(arguments, ' ');
infoElement.appendChild(el);
console.log(...arguments);
}
const onSubmit = async () => {
class ExamplePeriodStatisticsListener extends MetaApi.PeriodStatisticsListener {
async onPeriodStatisticsUpdated(periodStatisticsEvent) {
log('period statistics updated', periodStatisticsEvent);
}
async onPeriodStatisticsCompleted() {
log('period completed event received');
}
async onTrackerCompleted(){
log('tracker completed event received');
}
async onConnected() {
log('on connected event received');
}
async onDisconnected() {
log('on disconnected event received');
}
async onError(error) {
log('error event received', error);
}
}
const trackerName = document.getElementById('tracker-name-input').value;
const accountId = document.getElementById('account-id-input').value;
const token = document.getElementById('token-input').value;
if (token && accountId && trackerName) {
try {
const riskManagement = new MetaApi.RiskManagement(token);
const riskManagementApi = riskManagement.riskManagementApi;
/* creating a tracker */
const trackerId = await riskManagementApi.createTracker(accountId, {
absoluteDrawdownThreshold: 5,
name: trackerName,
period: 'day'
});
log('Created an event tracker ' + trackerId.id);
/* adding a period statistics listener */
const periodStatisticsListener = new ExamplePeriodStatisticsListener(accountId, trackerId);
const listenerId = riskManagementApi.addPeriodStatisticsListener(periodStatisticsListener, accountId, trackerId.id);
log('Streaming period statistics events for 1 minute...');
await new Promise(res => setTimeout(res, 1000 * 60));
riskManagementApi.removePeriodStatisticsListener(listenerId);
const equityChart = await riskManagementApi.getEquityChart(accountId);
log('period statistics', JSON.stringify(equityChart));
await riskManagementApi.deleteTracker(accountId, trackerId.id);
log('Removed the tracker');
} catch (error) {
log(error)
}
}
}
</script>
</html>