带有nodejs websocket的实时外汇和CFD数据
#node #forexdata #websocket #realtimedata

如果找到了这个,则您正在通过Websocket寻找实时数据。这是开始并找到一种表达自己的独特方法的正确地方。

课程假设您对Nodejs一无所知。但是,事先的编程知识,尤其是使用JavaScript,将是有利的。如果JavaScript和nodejs不是您的事情,则可以使用各种WebSocket实现,例如PythonGoLang

在开始设置和代码之前,它将帮助您了解我们正在尝试做什么。通过连接到Tradermade Websocket API,我们将下载Nodejs并配置我们的环境以通过Websocket(服务器端)接收实时FX和CFD(索引)数据。

按照以下三个步骤保持简单:

  • 安装nodejs和环境
  • 开始免费试用并获得API密钥
  • 安装nodejs websocket客户端并接收数据

让我们开始!

在Windows和Mac上安装Nodejs和环境:

NodeJS linux下载和安装:
运行apt-get安装nodejs
安装nodejs之后打开命令提示符或终端,以获取操作我们客户端所需的依赖项(库)。因为我们将使用“ WS”,所以执行以下操作:

npm install ws

这就是我们需要开始的全部。让我们去拿钥匙。

设置试验并获得API键。

您可以通过遵循有关如何开始免费14天试用的帖子来做到这一点。有钥匙后,请将其保持在安全的地方。

配置Nodejs WebSocket客户端以接收数据

一旦准备就绪,请导航到nodejs安装目录,然后创建一个名为forexwsclient.js的文件。现在,以原子或Visual Studio代码打开文件。术语“虚拟现实”是指使用虚拟现实软件。

现在是时候编写一些代码了。

const WebSocket = require ('ws');

  const ws = new WebSocket ('wss://marketdata.tradermade.com/feedadv');

我们将首先导入Websocket对象,然后使用WSS URL将其连接到交易。建立连接后,我们将发送我们的API密钥(通过注册Websocket试用)以及我们要从服务器接收的符号。在这种情况下,使用了GBPUSD和UK100(FTSE100的代码)。

ws.on('open', function open() {
     ws.send("{"userKey":"streaming_api_key", "symbol":"GBPUSD,UK100"}");
  });

  ws.on('message', function incoming(data) {
    if(data != "Connected"){
            data = JSON.parse(data)
            console.log(data)
    }
  });

成功身份验证后,我们将开始从消息中接收JSON数据。实际上很容易。
首先,保存forexwsclient.js的文件,然后从文件的位置中键入以下内容:

节点forexwsclient.js

tada!我们有一个实时的FX数据提要。

{
    symbol: 'UK100',
    ts: '1615913144126',
    bid: 6795,
    ask: 6798,
    mid: 6796.5
  }
  {
    symbol: 'GBPUSD',
    ts: '1615913144331',
    bid: 1.38967,
    ask: 1.38969,
    mid: 1.38968
  }

我们可以做更多的事情来提高其稳定性,例如重新连接服务器或错误是否断开连接。否则,我们将不会意识到连接损失。

无法逃脱这样的事实:有很多事情要做。运行应用程序时,我们将WS对象和事件封装在称为连接的函数中。当连接关闭时,我们还设置了超时功能。这样可以确保保持沟通。

const WebSocket = require ('ws');

  var reconnectInterval = 1000 * 10
  var ws;


  var connect = function(){


  const ws = new WebSocket ('wss://marketdata.tradermade.com/feedadv');


  ws.on('open', function open() {
     ws.send("{"userKey":"streaming_api_key", "symbol":"GBPUSD,UK100"}");
  });


  ws.on('close', function() {
    console.log('socket close : will reconnect in ' + reconnectInterval );
    setTimeout(connect, reconnectInterval)
  });


  ws.on('message', function incoming(data) {
    if(data != "Connected"){
            data = JSON.parse(data)
            console.log(data)
    }
  });
  };
  connect();

当我们运行上述软件时,我们的客户将不会退出。它将随时随地连接到服务器。