Technical Indicators for MetaTrader 5

Special Offer!

Time Left to Buy:

Up to 25% OFF

Shopping cart

The cart is empty

MetaTrader 5

Top Rated Products MT5

999 $749 $ AI Gen XII MT4
Denis Kurnev
3.66667 5 3 Product
999 $749 $ Nmt5
Liang Qi Quan
4.5 5 2 Product
2 199 $1 649 $ Ak47tutu
Dian Zhou
4.5 5 2 Product

Native Websocket

native-websocket-logo-200x200-9005
100 $75 $

Free updates are included

We accept crypto: BTC, ETH, BCH and more...

30-Day Money Back Guarantee
100% Guarantee of Originality

Information

Libraries
MetaTrader 5
Racheal Samson
1.418
20

Overview

An easy to use, fast, asynchronous WebSocket library for MQL5.

It supports:

  • ws:// and wss:// (Secure "TLS" WebSocket)
  • text and binary data

It handles:

  • fragmented message automatically (large data transfer)
  • ping-pong frames automatically (keep-alive handshake)

Benefits:

  • No DLL required.
  • No OpenSSL installation required.
  • Up to 128 Web Socket Connections from a single program.
  • Various Log Levels for error tracing
  • Can be synchronized to MQL5 Virtual Hosting.
  • Completely native to MQL5.
Click here to Download the latest WSMQL.mqhPlease ensure the MetaTrader downloaded library is downloaded/named as Native Websocket.ex5 as required by WSMQL.mqh

Sample code below:

//include WSMQL.mqh - a file that has all the declarations required to interact with the library
#include <WSMQL.mqh>
// Methods below
// class CWebSocketClient {
// public:
//    bool Initialized(void); // Checks if the WebSocket client is initialized.
//    ENUM_WEBSOCKET_STATE State(void); // Returns the current state of the WebSocket connection.
//    void SetMaxSendSize(int max_send_size); // Sets the maximum send size for WebSocket messages.

//    bool SetOnMessageHandler(OnWebsocketMessage callback); // Sets the callback function for handling incoming text messages.
//    bool SetOnPingHandler(OnWebsocketMessage callback); // Sets the callback function for handling incoming ping messages.
//    bool SetOnPongHandler(OnWebsocketMessage callback); // Sets the callback function for handling incoming pong messages.
//    bool SetOnCloseHandler(OnWebsocketMessage callback); // Sets the callback function for handling WebSocket connection closures.
//    bool SetOnBinaryMessageHandler(OnWebsocketBinaryMessage callback); // Sets the callback function for handling incoming binary messages.

//    bool Connect(const string url, const uint port = 443, const uint timeout = 5000, bool use_tls = true, ENUM_LOG_LEVEL log_level = LOG_LEVEL_NONE); // Connects to a WebSocket server.
//    bool ConnectUnsecured(const string url, const uint port = 80, const uint timeout = 5000, ENUM_LOG_LEVEL log_level = LOG_LEVEL_NONE); // Connects to a WebSocket server using an unsecured connection.
//    bool ConnectSecured(const string url, const uint port = 443, const uint timeout = 5000, ENUM_LOG_LEVEL log_level = LOG_LEVEL_NONE); // Connects to a WebSocket server using a secured connection.

//    bool Disconnect(ENUM_CLOSE_CODE close_code = NORMAL_CLOSE, const string msg = ""); // Disconnects from the WebSocket server.
//    int  SendString(const string message); // Sends a string message to the WebSocket server.
//    int  SendData(uchar& message_buffer[]); // Sends binary data to the WebSocket server.
//    int  SendPong(const string msg = ""); // Sends a pong message to the WebSocket server.
//    int  SendPing(const string msg); // Sends a ping message to the WebSocket server.
//    uint ReadString(string& out); // Reads a string message from the WebSocket server.
//    uint ReadStrings(string& out[]); // Reads multiple string messages from the WebSocket server.
//    uint OnReceiveString(); // Receives and processes incoming string messages.
//    uint OnReceiveBinary(); // Receives and processes incoming binary messages.
//    uint OnMessage(); // Receives and processes incoming WebSocket messages.
// };
// Create an instance of the Client
CWebSocketClient client;//I declared this globally because of OnPingMessage requiring it
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
   // Check if the client is initialized
   if (!client.Initialized()) {
      ZeroHandle();//Cleanup all clients
      return;
   }

   // Set OnMessage handler to receive text messages
   client.SetOnMessageHandler(OnMessage);// use SetOnBinaryMessageHandler for binary messages

   // Set OnPing handler to receive ping messages, 
   // Pong will be automatically sent if this handler is not set
   client.SetOnPingHandler(OnPingMessage);// use SetOnPongHandler for pong messages

   // URL and msg declaration
   string url = "stream.binance.com/ws";//Or wss://stream.binance.com/ws
   string msg = "{\"params\":[\"btcusdt@bookTicker\"],\"method\":\"SUBSCRIBE\",\"id\":27175}";
   //ALERT: Make sure stream.binance.com has been added to WebRequest list in Options -> Expert Advisors tab

   /*

    Connect to the WebSocket server through either of the below-listed functions as required

   */

   // Fully Configurable
   // if (!client.Connect(url/* , 80 || 443, 5000, false || true, LOG_LEVEL_INFO */)) { 

   // For Non-TLS(unsecured) connection - without SSL required
   // if (!client.ConnectUnsecured(url/* , 80, 5000, LOG_LEVEL_INFO */)) {

   // For TLS(secured) connection - with SSL required
   if (!client.ConnectSecured(url/* , 443, 5000, LOG_LEVEL_INFO */)) {
      ZeroHandle();//Cleanup all clients
      return;
   }

   // Send a string message
   client.SendString(msg);

   // Process messages until the script is stopped
   while (true) {
      if (IsStopped())
         break;

      if (client.State() == CLOSED) {
         Print("Socket connection closed");
         //Reconnect?
         //client.ConnectSecured(url/* , 443, 5000, LOG_LEVEL_INFO */)
         //Or break the loop?
         break;
      }

      /*
         NB: You only need one of these functions
      */

      // Receive all messages and process them using their respective On{Message | BinaryMessage | Ping | Pong | Close} callback(handler)
      uint frames = client.OnMessages();

      // Receive messages and process only TEXT frames using the OnMessage callback
      // uint frames = client.OnStringMessages();

      // Receive messages and process only BINARY frames using the OnBinaryMessage callback
      // uint frames = client.OnBinaryMessages();

      if (frames > 0)
         Print("Frames Processed : ", frames);
   }

   // Disconnect from the WebSocket server
   Print("Disconnecting...");

   if (client.Disconnect()) {
      Print("Disconnected!");
   }
   else {
      Print("Failed to disconnect!");
   }

   //Cleanup all clients
   ZeroHandle();
}
//+------------------------------------------------------------------+
void OnMessage(string message) {
   Print(message);
}
//+------------------------------------------------------------------+
void OnPingMessage(string message) {
   Print("ping received:", message);
   if (client.SendPong() > 0) {
      Print("Pong sent successfully.");
   }
   else {
      Print("Failed to send pong.");
   }
}
//Sample Outputs:
//{"result":null,"id":27175}
//Frames Processed : 1
//---
//{"u":35893555769,"s":"BTCUSDT","b":"27812.78000000","B":"7.14299000","a":"27812.79000000","A":"0.81665000"}
//{"u":35893555770,"s":"BTCUSDT","b":"27812.78000000","B":"7.14299000","a":"27812.79000000","A":"0.82309000"}
//{"u":35893555771,"s":"BTCUSDT","b":"27812.78000000","B":"7.14964000","a":"27812.79000000","A":"0.82309000"}
//Frames Processed : 3
//---
//Frames Processed : 1
//ping received: ping
//Pong sent successfully.

Feel free to contact me for support and questions before/after purchase.



Recently Viewed

168 $126 $ TPA True Price Action MT4 Indicator
InvestSoft
Results 1 - 1 of 1

30-Day Money Back Guarantee

If for any reason you do not like the purchased program, you can request a refund within 30 days from the date of purchase. You can also make an exchange for any other product at an equal cost or by paying the difference.
Simply send a request for refund or exchange with your order number by email: [email protected].
Refund requests received more than 30 days after purchase will be rejected.

Email Us Now! Support is available 24/7
by Email: [email protected]

Do You Need Help?
Click Here To Start Live Chat

Contact Us

Image

Search