Basic Usage with TELNET
MTsocketAPI opens two TCP ports by default:
- TCP 77 (Commands): You can use this port for send commands and receive MTsocketAPI replies.
- TCP 78 (Data): You can use this port to receive tick prices or OHLC prices for the selected Timeframe
Note: You can connect multiple clients to TCP 78 (data) port
You can use any tool, script or application to start sending commands. For example:
- Telnet command
- PuTTY or any other telnet tool
- Java
- .NET Core / .NET Framework / PowerShell
- Python
- C / C++
- NodeJS
- R
- Any software that can use sockets (TCP)
You can connect to default port TCP/77 to start sending queries to MTsocketAPI using TELNET:
telnet localhost 77
Then paste the following code:
{"MSG": "HELP"}
And finally hit Enter and you will get a list of available commands:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
{"MSG":"HELP"}
{"MSG":"HELP","AVAILABLE_COMMANDS":["TRACK_PRICES","TRACK_OHLC","CUSTOM_INDICATOR","MA_INDICATOR","ATR_INDICATOR","SYMBOL_INFO","SYMBOL_LIST","TERMINAL_INFO","ACCOUNT_STATUS","QUOTE","ORDER_SEND","ORDER_MODIFY","ORDER_CLOSE","ORDER_LIST","TRADE_HISTORY","EXIT"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
If you want to get more information about each command:
{"MSG": "HELP","COMMAND":"QUOTE"}
Reply:
{
"MSG":"HELP",
"COMMAND":"QUOTE",
"DESCRIPTION":"Get Quote from a SYMBOL",
"MANDATORY_TAGS":["SYMBOL (String)"],
"OPTIONAL_TAGS":[null],
"ERROR_ID":0,
"ERROR_DESCRIPTION":"no error"
}
We can see that the command QUOTE has a mandatory tag named SYMBOL and this tag accepts strings only.
Let’s see an example:
Example 1: Get Price from a symbol
If we want to view the current EUR/USD price:
{"MSG": "QUOTE", "SYMBOL": "EURUSD"}
Important: Please check with your broker that the symbol name exists. Some brokers use EURUSD, EURUSD.fx, EUR/USD… You can see the symbols names using SYMBOL_LIST command.
Reply:
{
"MSG":"QUOTE",
"SYMBOL":"EURUSD",
"ASK":0.99739,
"BID":0.99736,
"FLAGS":2,
"TIME":"2022.04.11 12:15:31.0",
"VOLUME":0,
"ERROR_ID":0,
"ERROR_DESCRIPTION":"no error"
}
Note: You can also subscribe to one or more symbols and MTsocketAPI will start streaming tick (TRACK_PRICES command) or OHLC (TRACK_OHLC command) data over the port TCP 78 (data). See the following Examples.
Example 2: Send new Order
You want to place a 0.01 lots Buy Order (at market) on EURUSD:
{"MSG": "ORDER_SEND","SYMBOL": "EURUSD","TYPE":"ORDER_TYPE_BUY","VOLUME": 0.01}
Reply:
{
"MSG":"ORDER_SEND",
"COMMENT":"Request executed",
"DEAL":"2008856776",
"ORDER":"2012142352",
"PRICE":0.99746000,
"REQUEST_ID":"1",
"RETCODE":"10009",
"RETCODE_EXTERNAL":0,
"VOLUME":0.01000000,
"ERROR_ID":0,
"ERROR_DESCRIPTION":"The operation completed successfully"
}
As you can see, we received the ticket number assigned to our order.
Note: SEND_ORDER command accepts limit orders, SL, TP… Please check the documentation here.
Example 3: Close Orders
Now if we want to close our newly created order:
{"MSG": "ORDER_CLOSE", "TICKET": 2012142352}
And this is the reply:
{
"MSG":"ORDER_CLOSE",
"TICKET":2012142352,
"TYPE":"FULLY_CLOSED",
"VOLUME":0.01,
"ERROR_ID":0,
"ERROR_DESCRIPTION":"The operation completed successfully"
}
Example 4: Get Order History
Finally, let’s check the closed price and profit for this order:
{"MSG":"TRADE_HISTORY","FROM_DATE":"2022/09/19 09:20:00", "TO_DATE":"2022/09/19 16:30:00", "MODE":"POSITIONS"}
Note: You can use any date format accepted by MT5. More info.
Reply:
{
"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
}
],
"ERROR_ID":0,
"ERROR_DESCRIPTION":"The operation completed successfully"
}
Now we disconnect from MTsocketAPI softly:
{"MSG": "EXIT"}
Reply:
Bye
Here you can see the Full API Command List