Skip to content

Java

Warning

All these source codes are only examples used for testing. We don't provide any guarantee or responsibility about it. Use these examples at your own risk.

Examples

Example 1: Get actual EURUSD price from MT5 using Java

getQuote.java
import java.net.*;
import java.io.*;
/**
 *
 *  $ javac getQuote.java (Compile)
 *  $ java getQuote (Run)
 *
 **/
class getQuote
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket = new Socket("localhost", 71);

                OutputStream output = socket.getOutputStream();
                InputStream input = socket.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));

                String jsonString;

                writer.write("{\"MSG\":\"QUOTE\",\"SYMBOL\":\"EURUSD\"}\r\n");
                writer.flush();

                jsonString = reader.readLine();
                System.out.println(jsonString);

           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI reply
{"MSG":"QUOTE","SYMBOL":"EURUSD","ASK":0.99891,"BID":0.99890,"FLAGS":4,"TIME":"2022.09.19 15:37:14.45","VOLUME":0,"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}

Example 2: Send Order to MT5 using Java

sendOrder.java
import java.net.*;
import java.io.*;
/**
 *  $ javac sendOrder.java (Compile)
 *  $ java sendOrder (Run)
 *
 *     */
class sendOrder
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket = new Socket("localhost", 71);

                OutputStream output = socket.getOutputStream();
                InputStream input = socket.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));

                String jsonString;

                writer.write("{\"MSG\":\"ORDER_SEND\",\"SYMBOL\":\"EURUSD\",\"VOLUME\":0.02,\"TYPE\":\"ORDER_TYPE_BUY\"}\r\n");
                writer.flush();

                jsonString = reader.readLine();
                System.out.println(jsonString);

           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI reply
{"MSG":"ORDER_SEND","RETCODE":10009,"DEAL":2015119247,"ORDER":2020570871,"VOLUME":0.10,"PRICE":1.064860,"BID":1.064830,"ASK":1.064860,"REQUEST_ID":3136973155,"RETCODE_EXTERNAL":0,"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}

Example 3: Stream actual EURUSD price from MT5 using Java

streamPrices.java
import java.net.*;
import java.io.*;
/**
 *  $ javac streamPrices.java (Compile)
 *  $ java streamPrices (Run)
  **/
class streamPrices
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket_cmd = new Socket("localhost", 71);
                Socket socket_data = new Socket("localhost", 72);

                OutputStream output_cmd = socket_cmd.getOutputStream();
                InputStream input_cmd = socket_cmd.getInputStream();

                InputStream input_data = socket_data.getInputStream();

                BufferedReader reader_cmd = new BufferedReader(new InputStreamReader(input_cmd));
                BufferedReader reader_data = new BufferedReader(new InputStreamReader(input_data));

                BufferedWriter writer_cmd = new BufferedWriter(new OutputStreamWriter(output_cmd));

                String jsonString;

                writer_cmd.write("{\"MSG\":\"TRACK_PRICES\",\"SYMBOLS\":[\"EURUSD\"]}\r\n");
                writer_cmd.flush();

                jsonString = reader_cmd.readLine();
                System.out.println(jsonString);

                while ((jsonString = reader_data.readLine()) != null) {
                        System.out.println(jsonString);
                }
           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI reply
{"MSG":"TRACK_PRICES","SUCCESS":["EURUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfullyr"}
{"TIME":"2022.04.18 12:28:31","SYMBOL":"EURUSD","ASK":1.08088,"BID":1.08085,"VOLUME":24073}
{"TIME":"2022.04.18 12:28:36","SYMBOL":"EURUSD","ASK":1.08088,"BID":1.08084,"VOLUME":24073}
{"TIME":"2022.04.18 12:28:37","SYMBOL":"EURUSD","ASK":1.08087,"BID":1.08083,"VOLUME":24075}
{"TIME":"2022.04.18 12:28:43","SYMBOL":"EURUSD","ASK":1.08087,"BID":1.08084,"VOLUME":24076}
{"TIME":"2022.04.18 12:28:44","SYMBOL":"EURUSD","ASK":1.08088,"BID":1.08084,"VOLUME":24076}
{"TIME":"2022.04.18 12:28:45","SYMBOL":"EURUSD","ASK":1.08087,"BID":1.08084,"VOLUME":24078}

Advanced Examples

Example 1: Get actual EURUSD price from MT5 (using JSON library) using Java

getQuoteJSON.java
import java.net.*;
import java.io.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
 *  $ javac -cp .:json-simple-1.1.1.jar getQuoteJSON.java (Compile)
 *  $ java -cp .:json-simple-1.1.1.jar getQuoteJSON (Run)
 * */
class getQuoteJSON
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket = new Socket("localhost", 71);

                OutputStream output = socket.getOutputStream();
                InputStream input = socket.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));

                String jsonString;
                JSONObject jo = new JSONObject();

                jo.put("MSG","QUOTE");
                jo.put("SYMBOL","EURUSD");

                writer.write(jo.toString() + "\r\n");
                writer.flush();

                jsonString = reader.readLine();

                JSONParser parser = new JSONParser();
                JSONObject json = (JSONObject) parser.parse(jsonString);

                System.out.println("Time: " + json.get("TIME") + " Symbol: " + json.get("SYMBOL") + " Ask: " + json.get("ASK"));
           }
           catch(ParseException pe) {
               System.out.println("position: " + pe.getPosition());
               System.out.println(pe);
           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI reply
Time: 2022.04.18 12:45:03.0 Symbol: EURUSD Ask: 1.08068

Example 2: Stream OHLC data from MT5 (using JSON library) with Java

getStreamJSON.java
import java.net.*;
import java.io.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
 *  $ javac -cp .:json-simple-1.1.1.jar getStreamJSON.java
 *  $ java -cp .:json-simple-1.1.1.jar getStreamJSON
 * */
class getStreamJSON
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket_cmd = new Socket("localhost", 71);
                Socket socket_data = new Socket("localhost", 72);

                OutputStream output_cmd = socket_cmd.getOutputStream();
                InputStream input_cmd = socket_cmd.getInputStream();

                InputStream input_data = socket_data.getInputStream();

                BufferedReader reader_cmd = new BufferedReader(new InputStreamReader(input_cmd));
                BufferedReader reader_data = new BufferedReader(new InputStreamReader(input_data));
                BufferedWriter writer_cmd = new BufferedWriter(new OutputStreamWriter(output_cmd));

                JSONArray ja = new JSONArray();

                ja.add("EURUSD");

                JSONObject jo = new JSONObject();

                jo.put("MSG","TRACK_OHLC");
                jo.put("SYMBOLS",ja);
                jo.put("TIMEFRAME","PERIOD_M1");

                //System.out.println(jo.toString());
                writer_cmd.write(jo.toString() + "\r\n");
                writer_cmd.flush();

                String jsonString;

                while ((jsonString = reader_data.readLine()) != null) {
                        //System.out.println(jsonString);
                        JSONParser parser = new JSONParser();
                        JSONObject jso = (JSONObject) parser.parse(jsonString);
                        if (jso.containsKey("OHLC")) {
                                JSONArray jarr= (JSONArray)jso.get("OHLC");
                                JSONObject jelem= (JSONObject)jarr.get(0);
                                System.out.println("Time: " + jelem.get("TIME") + " Symbol: " + jso.get("SYMBOL") + " Open: " + jelem.get("OPEN") + " Close: " + jelem.get("CLOSE") + " High: " + jelem.get("HIGH") + " Low: " + jelem.get("LOW"));
                        }
                }
           }
           catch(ParseException pe) {
               System.out.println("position: " + pe.getPosition());
               System.out.println(pe);
           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI reply when a new candle closes
Time: 2022.04.18 13:24:00 Symbol: EURUSD Open: 1.08060 Close: 1.08050 High: 1.08061 Low: 1.08043
Time: 2022.04.18 13:25:00 Symbol: EURUSD Open: 1.08049 Close: 1.08053 High: 1.08061 Low: 1.08049
Time: 2022.04.18 13:26:00 Symbol: EURUSD Open: 1.08052 Close: 1.08059 High: 1.08059 Low: 1.08050

Example 3: Export Trade History from MT5 to a CSV file using Java

getHistory.java
import java.net.*;
import java.io.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
/**
 *  $ javac -cp .:json-simple-1.1.1.jar getHistory.java
 *  $ java -cp .:json-simple-1.1.1.jar getHistory
 * */
class getHistory
{
    public static void main(String[] args)
    {
           try
           {
                Socket socket = new Socket("localhost", 71);

                OutputStream output = socket.getOutputStream();
                InputStream input = socket.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output));

                String jsonString;
                JSONObject jo = new JSONObject();
                jo.put("MSG","TRADE_HISTORY");
                jo.put("FROM_DATE","2022/09/19 07:00:00");
                jo.put("TO_DATE","2022/09/21 00:00:00");
                jo.put("MODE","POSITIONS"); //MODES: POSITIONS, ORDERS, DEALS and ORDERS_DEALS

                //System.out.println(jo.toString());
                writer.write(jo.toString() + "\r\n");
                writer.flush();

                jsonString = reader.readLine();
                System.out.println(jsonString);

                JSONParser parser = new JSONParser();
                JSONObject json = (JSONObject) parser.parse(jsonString);
                //JSONArray jarr= (JSONArray)json.get("POSITIONS");
                JSONArray jarr= (JSONArray)json.get(jo.get("MODE").toString());

                System.out.println("Creating file...");

                FileWriter myFile = new FileWriter("tradeHistory.csv");

                myFile.write("OPEN_TIME,CLOSE_TIME,TICKET,SYMBOL,MAGIC,PRICE_OPEN,PRICE_CLOSE,TYPE,LOTS,STOP_LOSS,TAKE_PROFIT,SWAP,COMMISSION,COMMENT,PROFIT\r\n");

                for(int i = 0; i < jarr.size(); i++) {
                        JSONObject item = (JSONObject) jarr.get(i);
                        //System.out.println(Integer.toString(i) + " " + item.get("OPEN_TIME"));
                        myFile.write(item.get("OPEN_TIME").toString() + "," +
                                item.get("CLOSE_TIME").toString() + "," +
                                item.get("TICKET").toString() + "," +
                                item.get("SYMBOL").toString() + "," +
                                item.get("MAGIC").toString() + "," +
                                item.get("PRICE_OPEN").toString() + "," +
                                item.get("PRICE_CLOSE").toString() + "," +
                                item.get("TYPE").toString() + "," +
                                item.get("VOLUME").toString() + "," +
                                item.get("SL").toString() + "," +
                                item.get("TP").toString() + "," +
                                item.get("SWAP").toString() + "," +
                                item.get("COMMISSION").toString() + "," +
                                item.get("COMMENT") + "," +
                                item.get("PROFIT").toString() +
                                "\r\n");
                }

                myFile.close();

                System.out.println("tradeHistory.csv created!");
           }
           catch(ParseException pe) {
               System.out.println("position: " + pe.getPosition());
               System.out.println(pe);
           }
           catch (UnknownHostException ex) {
                System.out.println("Server not found: " + ex.getMessage());
           }
           catch (IOException ex) {
                System.out.println("I/O error: " + ex.getMessage());
           }
        }
}
MTsocketAPI
{"MSG":"TRADE_HISTORY","POSITIONS":[{"OPEN_TIME":"2022.09.19 12:49:05.146","SYMBOL":"EURUSD","TICKET":2012142352,"TYPE":"BUY","VOLUME":0.01,"PRICE_OPEN":0.99746000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.19 12:50:22.145","PRICE_CLOSE":0.99718000,"PROFIT":-0.28,"COMMISSION":-0.06,"SWAP":0.00,"SL":0.00000,"TP":0.00000},{"OPEN_TIME":"2022.09.19 13:40:13.563","SYMBOL":"EURUSD","TICKET":2012142959,"TYPE":"BUY","VOLUME":0.06,"PRICE_OPEN":0.99776000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.20 09:37:33.573","PRICE_CLOSE":1.00064500,"PROFIT":17.25,"COMMISSION":-0.31,"SWAP":0.00,"SL":0.99665,"TP":0.00000},{"OPEN_TIME":"2022.09.19 14:46:16.477","SYMBOL":"EURUSD","TICKET":2012143954,"TYPE":"BUY","VOLUME":0.03,"PRICE_OPEN":0.99925000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.20 09:37:33.55","PRICE_CLOSE":1.00360000,"PROFIT":13.00,"COMMISSION":-0.16,"SWAP":0.00,"SL":0.00000,"TP":0.00000},{"OPEN_TIME":"2022.09.19 14:47:43.642","SYMBOL":"EURUSD","TICKET":2012143985,"TYPE":"BUY","VOLUME":0.03,"PRICE_OPEN":0.99974000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.20 09:37:32.518","PRICE_CLOSE":1.00361000,"PROFIT":11.57,"COMMISSION":-0.16,"SWAP":0.00,"SL":0.00000,"TP":0.00000},{"OPEN_TIME":"2022.09.19 14:48:40.278","SYMBOL":"EURUSD","TICKET":2012144006,"TYPE":"BUY","VOLUME":0.03,"PRICE_OPEN":0.99974000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.20 09:37:31.968","PRICE_CLOSE":1.00361000,"PROFIT":11.57,"COMMISSION":-0.16,"SWAP":0.00,"SL":0.00000,"TP":0.00000},{"OPEN_TIME":"2022.09.19 14:57:32.452","SYMBOL":"EURUSD","TICKET":2012144150,"TYPE":"BUY","VOLUME":0.02,"PRICE_OPEN":0.99860000,"MAGIC":0,"COMMENT":null,"CLOSE_TIME":"2022.09.20 09:37:31.206","PRICE_CLOSE":1.00359000,"PROFIT":9.94,"COMMISSION":-0.10,"SWAP":0.00,"SL":0.00000,"TP":0.00000}],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully","DEMO":"MTsocketAPI running in DEMO mode (www.mtsocketapi.com)"}
Creating file...
tradeHistory.csv created!
tradeHistory.csv
OPEN_TIME,CLOSE_TIME,TICKET,SYMBOL,MAGIC,PRICE_OPEN,PRICE_CLOSE,TYPE,LOTS,STOP_LOSS,TAKE_PROFIT,SWAP,COMMISSION,COMMENT,PROFIT
2022.09.19 12:49:05.146,2022.09.19 12:50:22.145,2012142352,EURUSD,0,0.99746,0.99718,BUY,0.01,0.0,0.0,0.0,-0.06,null,-0.28
2022.09.19 13:40:13.563,2022.09.20 09:37:33.573,2012142959,EURUSD,0,0.99776,1.000645,BUY,0.06,0.99665,0.0,0.0,-0.31,null,17.25
2022.09.19 14:46:16.477,2022.09.20 09:37:33.55,2012143954,EURUSD,0,0.99925,1.0036,BUY,0.03,0.0,0.0,0.0,-0.16,null,13.0
2022.09.19 14:47:43.642,2022.09.20 09:37:32.518,2012143985,EURUSD,0,0.99974,1.00361,BUY,0.03,0.0,0.0,0.0,-0.16,null,11.57
2022.09.19 14:48:40.278,2022.09.20 09:37:31.968,2012144006,EURUSD,0,0.99974,1.00361,BUY,0.03,0.0,0.0,0.0,-0.16,null,11.57
2022.09.19 14:57:32.452,2022.09.20 09:37:31.206,2012144150,EURUSD,0,0.9986,1.00359,BUY,0.02,0.0,0.0,0.0,-0.1,null,9.94


Info

Have you found any bug or error? Please notify us.