Your First Forex and Crypto WebSocket with R

In this tutorial, you will learn how to set up “R” and “RStudio” and code a program in R. You will also learn how to connect to the WebSocket service (in this case the Forex data feed) and get streaming Forex, CFD and Cryptocurrency data and then parse that JSON data into a usable format. You can download a version of this code pre-populated with your API key from the documentation section on our website, make sure you are logged in. You can change currencies to your choice, our WebSockets can provide data for more than 1500 currency pairs.

Let’s set up the environment

Visit the official R website and download R, also install RStudio, this is an integrated development environment for R that makes writing, importing dependencies, and running R code easy.

Setup an R project

Now that you have the new workspace we can create a file to add our code, click File->New File->R Script. This will create a new window with the title “Untitled1” click the save icon and name this file “WebSocketClient.r”

Get your API key

Now that the environment is set up let’s get your WebSocket API Key if you don’t have an account you ca n sign up here, it only takes seconds, then you can start a WebSocket trial and copy your key from your dashboard.

Import the libraries

The first thing we need to do is import the libraries, we add the following code to the top of our source file.


Now we will need to import the libraries, click tools->Install Packages from the menu, then in the dialog box displayed enter “websocket” in the Packages box.

Next, we will create a WebSocket instance

ws <- WebSocket$new("wss://")

For the WebSocket implementation, we need to create some callback functions that will be triggered when messages are received by our client. We will create an onOpen function that will be called when the WebSocket successfully establishes a connection. We need to respond to this message with a connection string containing a userkey and “symbol”.

ws$onOpen(function(event){ ws$send("{"userKey":"userKey", "symbol":"GBPUSD,EURUSD"}") }

We also need to implement an onMessage function that will be called when a new message is received,

ws$onMessage(function(event) { cat( " Symbol ", d, " ") }

Once we have completed the code we can run it by clicking the run icon in RStudio. When running the program you need to click the top of the program to set the cursor position and then click the run button as it steps through the code.

library(websocket) { ws <- WebSocket$new("wss://") ws$onMessage(function(event) { d <- event$data cat(" Message ", d, " ") }) ws$onOpen(function(event) { ws$send("{"userKey":"userKey", "symbol":"GBPUSD,EURUSD"}") }) }

Once the program is running you should see an output similar to the following.

Message Connected Message {"symbol":"EURUSD","ts":"1651070094743","bid":1.05339,"ask":1.05341,"mid":1.0534} Message {"symbol":"EURGBP","ts":"1651070094760","bid":0.84075,"ask":0.84079,"mid":0.84077} Message {"symbol":"GBPUSD","ts":"1651070094765","bid":1.25288,"ask":1.25292,"mid":1.2529} Message {"symbol":"EURUSD","ts":"1651070094768","bid":1.0534,"ask":1.05341,"mid":1.053405} Message {"symbol":"EURUSD","ts":"1651070094771","bid":1.0534,"ask":1.05342,"mid":1.05341} Message {"symbol":"GBPUSD","ts":"1651070094814","bid":1.25289,"ask":1.25292,"mid":1.252905} Message {"symbol":"GBPUSD","ts":"1651070094815","bid":1.25289,"ask":1.25293,"mid":1.25291} Message {"symbol":"EURGBP","ts":"1651070094971","bid":0.84076,"ask":0.84078,"mid":0.84077}

Now we are getting real-time data in JSON format let’s take a look at how we can parse this into its component parts. For this, we are going to use the jsonlite library. We need to import this library using the following command.


We will also need to import it into the RStudio development environment click tools->Install Packages from the menu, then in the dialog box displayed enter jsonlite in the Packages box.

When the program connects to the API it sends a “Connected” message, we need to catch this before we can parse the data.

d <- event$data if (d != "Connected"){ }

We can now parse the JSON string and this will give us a JSON object that can be used to access the data items.

json = fromJSON(d) cat(" Symbol ", json$symbol, json$ts, json$bid, json$ask, json$mid)

Below is the full program code.

library(websocket) library(jsonlite) { ws <- WebSocket$new("wss://") ws$onMessage(function(event) { d <- event$data if (d != "Connected"){ json = fromJSON(d) cat(" Symbol ", json$symbol, json$ts, json$bid, json$ask, json$mid) } }) ws$onOpen(function(event) { ws$send("{"userKey":"userKey", "symbol":"GBPUSD,EURUSD"}") }) }

Now you should have a working WebSocket client that will connect to Real-Time Forex, CFD, and Cryptocurrency data service and parse the returned JSON code into a usable format.

If you have any questions, contact us or live chat with one of the experts.

Originally published at




Fintech Enabler

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How to Create Re-Usable and Lookup Dropdown Lightning Web Components?

First Time Experiences with JavaScript

First Time in a Long Time…

Foreach loop in JavaScript

React Native for Beginners

Async Await in forEach loop.

Use react-router with ease

hapi, Vision, and … who am I?

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store


Fintech Enabler

More from Medium

Building a Trend-Trading Crypto Bot

How to get USDT future data from Binance python API

Crypto trading bot intro and tips

Metatrader +Python +Telegram