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.
Basic Examples for MT4 (for MT5 click here)
Example 1: Get actual EURUSD price from MT4 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", 77);
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());
}
}
}
Result:
{
"MSG":"QUOTE",
"SYMBOL":"EURUSD",
"ASK":1.08263,
"BID":1.08261,
"FLAGS":6,
"TIME":"2022.04.13 12:01:48.0",
"VOLUME":0,
"ERROR_ID":0,
"ERROR_DESCRIPTION":"no error"
}
Example 2: Send Order to MT4 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", 77);
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());
}
}
}
Result:
{"MSG":"ORDER_SEND","TICKET":65432164,"ERROR_ID":0,"ERROR_DESCRIPTION":"no error"}
Example 3: Stream actual EURUSD price from MT4 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", 77);
Socket socket_data = new Socket("localhost", 78);
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());
}
}
}
Result:
{"MSG":"TRACK_PRICES","SUCCESS":["EURUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"no error"}
{"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 MT4 (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", 77);
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());
}
}
}
Result:
Time: 2022.04.18 12:45:03.0 Symbol: EURUSD Ask: 1.08068
Example 2: Stream OHLC data from MT4 (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 (Compile)
* $ java -cp .:json-simple-1.1.1.jar getStreamJSON (Run)
* */
class getStreamJSON
{
public static void main(String[] args)
{
try
{
Socket socket_cmd = new Socket("localhost", 77);
Socket socket_data = new Socket("localhost", 78);
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();
JSONObject jj = new JSONObject();
jj.put("SYMBOL","EURUSD");
jj.put("TIMEFRAME","PERIOD_M1")
jj.put("DEPTH",1)
ja.add(jj);
JSONObject jo = new JSONObject();
jo.put("MSG","TRACK_OHLC");
jo.put("OHLC",ja);
//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 json = (JSONObject) parser.parse(jsonString);
JSONArray jarr= (JSONArray)json.get("OHLC");
JSONObject jelem= (JSONObject)jarr.get(0);
System.out.println("Time: " + jelem.get("TIME") + " Symbol: " + json.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());
}
}
}
Result:
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 MT4 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 (Compile)
* $ java -cp .:json-simple-1.1.1.jar getHistory (Run)
* */
class getHistory
{
public static void main(String[] args)
{
try
{
Socket socket = new Socket("localhost", 77);
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/04/13 07:00:00");
jo.put("TO_DATE","2022/04/15 00:00:00");
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("TRADES");
FileWriter myFile = new FileWriter("tradeHistory.csv");
myFile.write("OPEN_TIME,CLOSE_TIME,TICKET,SYMBOL,MAGIC,OPEN_PRICE,CLOSE_PRICE,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);
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("OPEN_PRICE").toString() + "," +
item.get("CLOSE_PRICE").toString() + "," +
item.get("TYPE").toString() + "," +
item.get("LOTS").toString() + "," +
item.get("STOP_LOSS").toString() + "," +
item.get("TAKE_PROFIT").toString() + "," +
item.get("SWAP").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());
}
}
}
Result:
{
"MSG":"TRADE_HISTORY",
"TRADES":[
{
"SYMBOL":"EURUSD",
"MAGIC":0,
"TICKET":47103675,
"OPEN_TIME":"2022.04.13 12:30:25",
"CLOSE_TIME":"2022.04.13 13:11:25",
"OPEN_PRICE":1.08424,
"CLOSE_PRICE":1.08268,
"TYPE":"BUY",
"LOTS":0.02,
"STOP_LOSS":0.00000,
"TAKE_PROFIT":0.00000,
"SWAP":0.00,
"COMMISSION":0.00,
"COMMENT":null,
"PROFIT":-3.12
},
{
"SYMBOL":"EURUSD",
"MAGIC":0,
"TICKET":47103114,
"OPEN_TIME":"2022.04.13 09:14:18",
"CLOSE_TIME":"2022.04.13 13:11:26",
"OPEN_PRICE":1.08342,
"CLOSE_PRICE":1.08270,
"TYPE":"BUY",
"LOTS":0.02,
"STOP_LOSS":0.00000,
"TAKE_PROFIT":0.00000,
"SWAP":0.00,
"COMMISSION":0.00,
"COMMENT":null,
"PROFIT":-1.44
},
{
"SYMBOL":"GBPUSD",
"MAGIC":0,
"TICKET":47102744,
"OPEN_TIME":"2022.04.13 07:52:48",
"CLOSE_TIME":"2022.04.13 08:00:26",
"OPEN_PRICE":1.29926,
"CLOSE_PRICE":1.29862,
"TYPE":"SELL",
"LOTS":0.02,
"STOP_LOSS":0.00000,
"TAKE_PROFIT":0.00000,
"SWAP":0.00,
"COMMISSION":0.00,
"COMMENT":null,
"PROFIT":1.28
},
{
"SYMBOL":"EURUSD",
"MAGIC":0,
"TICKET":47099159,
"OPEN_TIME":"2022.04.12 13:26:59",
"CLOSE_TIME":"2022.04.13 08:00:25",
"OPEN_PRICE":1.08522,
"CLOSE_PRICE":1.08236,
"TYPE":"SELL",
"LOTS":0.01,
"STOP_LOSS":0.00000,
"TAKE_PROFIT":0.00000,
"SWAP":0.00,
"COMMISSION":0.00,
"COMMENT":"from #47099158",
"PROFIT":2.86
}
],
"ERROR_ID":0,
"ERROR_DESCRIPTION":"no error"
}
tradeHistory.csv created!
If we open the tradeHistory.csv:
OPEN_TIME,CLOSE_TIME,TICKET,SYMBOL,MAGIC,OPEN_PRICE,CLOSE_PRICE,TYPE,LOTS,STOP_LOSS,TAKE_PROFIT,SWAP,COMMISSION,COMMENT,PROFIT
2022.04.13 12:30:25,2022.04.13 13:11:25,47103675,EURUSD,0,1.08424,1.08268,BUY,0.02,0.0,0.0,0.0,0.0,null,-3.12
2022.04.13 09:14:18,2022.04.13 13:11:26,47103114,EURUSD,0,1.08342,1.0827,BUY,0.02,0.0,0.0,0.0,0.0,null,-1.44
2022.04.13 07:52:48,2022.04.13 08:00:26,47102744,GBPUSD,0,1.29926,1.29862,SELL,0.02,0.0,0.0,0.0,0.0,null,1.28
2022.04.12 13:26:59,2022.04.13 08:00:25,47099159,EURUSD,0,1.08522,1.08236,SELL,0.01,0.0,0.0,0.0,0.0,from #47099158,2.86
Have you found any bug or error? Please notify us.