API XTB

par pingoo67 » 10 sept. 2019 09:34

Bonjour,

Je travail actuellement sur une récupération de flux via l'API XTB en JavaScript.
Je n'arrive pas à le recuperer en streaming, quelqu'un aurait déja travaillé le sujet?

Voici mon code javascript si ca peut aider :

Code : #

// Our websocket
  			var ws;

			function connectXTB() {

				var url = "wss://ws.xapi.pro/demo";

				console.log('Connecting to: ' + url);

				ws = new WebSocket(url);

				ws.onopen = function() {
					console.log('Connected');
					loginXTB();
				};
				
				StreamXTB ();
				
				ws.onclose = function() {
					console.log('Connection closed');
				};
			};

			function disconnectXTB() {
				ws.close();
			}

			function send(jsonMessage) {
				try {
					var msg = JSON.stringify(jsonMessage);
					ws.send(msg);
					console.log('Sent ' + msg.length + ' bytes of data: ' + msg);
				} catch(Exception) {
					console.error('Error while sending data: ' + Exception.message);
				}
			}

			function loginXTB() {
				var msg = {};
				msg.command = "login";

				var arguments = {};
				arguments.userId = parseInt($('#userId').val());
				arguments.password = $('#password').val();

				msg.arguments = arguments;

				console.log('Trying to log in as: ' + msg.arguments.userId);
				send(msg);
			}

			function getAllSymbolsXTB() {
				var msg = {};
				msg.command = "getAllSymbols";

				console.log('Getting list of symbols');
				send(msg);
			}

			function parseGetAllSymbolsXTB(returnData) {
				// For all symbols 
				for (var i = returnData.length - 1; i >= 0; i--) {
					var symbol = returnData[i].symbol;
					var ask = returnData[i].ask;
					var bid = returnData[i].bid;
					var descr = returnData[i].description;
					var row = '<tr><td>' + symbol + '</td><td>' + ask + '</td><td>' + bid + '</td><td>' + descr + '</td></tr>';
					// Append to instruments table
					$('#instruments').append($(row));
				};
			}
			
			function StreamXTB () {
				ws.onmessage = function(evt) {
					console.log("Received: " + evt.data);
					
					try {
						var response = JSON.parse(evt.data);

						if(response.status == true) {

							if(response.streamSessionId != undefined) {
								// We received login response
								getAllSymbolsXTB();
							} else {
								// We received getAllSymbols response
								parseGetAllSymbolsXTB(response.returnData);
							}

						} else {
							alert('Error: ' + response.errorDescr);
						}
					} catch (Exception) {
						alert('Fatal error while receiving data! :(');
					}
				} 
			}

			$(document).ready(function() {
				$('#login-btn').on('click', function() {
					connectXTB();
				});
			});
			

merci
Bonne journée