PowerShell
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 to MT5 using PowerShell
.\Get actual EURUSD price from MT5.ps1
$IP = [System.Net.Dns]::GetHostAddresses("127.0.0.1")
$Port = 71
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port)
$Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Reader = New-Object System.IO.StreamReader($Stream)
$Writer.WriteLine('{"MSG":"QUOTE","SYMBOL":"EURUSD"}')
$Writer.Flush()
$Response = $Reader.ReadLine()
Write-Host $Response
$Stream.Close()
$Socket.Close()
Reply
{
"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":"The operation completed successfully"
}
Example 2: Send Order to MT5 using PowerShell
.\Send Order to MT5.ps1
$IP = [System.Net.Dns]::GetHostAddresses("127.0.0.1")
$Port = 71
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port)
$Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Reader = New-Object System.IO.StreamReader($Stream)
$Writer.WriteLine('{"MSG":"ORDER_SEND","SYMBOL":"EURUSD","VOLUME":0.02,"TYPE":"ORDER_TYPE_BUY"}')
$Writer.Flush()
$Response = $Reader.ReadLine()
Write-Host $Response
$Stream.Close()
$Socket.Close()
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 PowerShell
.\Stream actual EURUSD price from MT5.ps1
$IP = [System.Net.Dns]::GetHostAddresses("127.0.0.1")
$Port_cmd = 71
$Port_data = 72
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket_cmd = New-Object System.Net.Sockets.TCPClient($Address,$Port_cmd)
$Socket_data = New-Object System.Net.Sockets.TCPClient($Address,$Port_data)
$Stream_cmd = $Socket_cmd.GetStream()
$Stream_data = $Socket_data.GetStream()
$Writer_cmd = New-Object System.IO.StreamWriter($Stream_cmd)
$Reader_cmd = New-Object System.IO.StreamReader($Stream_cmd)
$Writer_data = New-Object System.IO.StreamWriter($Stream_data)
$Reader_data = New-Object System.IO.StreamReader($Stream_data)
$Writer_cmd.WriteLine('{"MSG":"TRACK_PRICES","SYMBOLS":["EURUSD"]}')
$Writer_cmd.Flush()
$Response_cmd = $Reader_cmd.ReadLine()
Write-Host $Response_cmd
while ($true)
{
$Response_data = $Reader_data.ReadLine()
Write-Host $Response_data
}
$Stream_cmd.Close()
$Socket_cmd.Close()
$Stream_data.Close()
$Socket_data.Close()
Reply
{"MSG":"TRACK_PRICES","SUCCESS":["EURUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
{"TIME":"2022.04.13 12:20:04","SYMBOL":"EURUSD","ASK":1.08373,"BID":1.08371,"VOLUME":19596}
{"TIME":"2022.04.13 12:20:13","SYMBOL":"EURUSD","ASK":1.08373,"BID":1.08370,"VOLUME":19596}
{"TIME":"2022.04.13 12:20:14","SYMBOL":"EURUSD","ASK":1.08373,"BID":1.08371,"VOLUME":26891}
{"TIME":"2022.04.13 12:20:14","SYMBOL":"EURUSD","ASK":1.08373,"BID":1.08370,"VOLUME":26892}
{"TIME":"2022.04.13 12:20:17","SYMBOL":"EURUSD","ASK":1.08373,"BID":1.08371,"VOLUME":26893}
Advanced Examples
Example 1: Get actual EURUSD price from MT5 using PowerShell (using JSON library)
.\Get actual EURUSD price (using JSON library) from MT5.ps1
$IP = [System.Net.Dns]::GetHostAddresses("127.0.0.1")
$Port = 71
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port)
$Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Reader = New-Object System.IO.StreamReader($Stream)
$Cmd = "" | Select MSG,SYMBOL
$Cmd.MSG = "QUOTE"
$Cmd.SYMBOL = "EURUSD"
$Json = ConvertTo-Json $Cmd -Compress
$Writer.WriteLine($Json)
$Writer.Flush()
$Response = $Reader.ReadLine()
Write-Host $Response
$Stream.Close()
$Socket.Close()
Reply
{"MSG":"QUOTE","SYMBOL":"EURUSD"}
{"MSG":"QUOTE","SYMBOL":"EURUSD","ASK":1.07881,"BID":1.07880,"FLAGS":6,"TIME":"2022.04.18 09:34:36.0","VOLUME":0,"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
Example 2: Stream OHLC data from MT5 using PowerShell (using JSON library)
.\Stream OHLC data (using JSON library) from MT5.ps1
$IP = [System.Net.Dns]::GetHostAddresses("127.0.0.1")
$Port_cmd = 71
$Port_data = 72
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket_cmd = New-Object System.Net.Sockets.TCPClient($Address,$Port_cmd)
$Socket_data = New-Object System.Net.Sockets.TCPClient($Address,$Port_data)
$Stream_cmd = $Socket_cmd.GetStream()
$Stream_data = $Socket_data.GetStream()
$Writer_cmd = New-Object System.IO.StreamWriter($Stream_cmd)
$Reader_cmd = New-Object System.IO.StreamReader($Stream_cmd)
$Writer_data = New-Object System.IO.StreamWriter($Stream_data)
$Reader_data = New-Object System.IO.StreamReader($Stream_data)
$Symbols = @()
$Symbols += "EURUSD"
$Cmd = "" | Select MSG,SYMBOLS,TIMEFRAME
$Cmd.MSG = "TRACK_OHLC"
$Cmd.SYMBOLS = $Symbols
$Cmd.TIMEFRAME = "PERIOD_M1"
$Json = ConvertTo-Json $Cmd -Compress
$Writer_cmd.WriteLine($Json)
$Writer_cmd.Flush()
$Response_cmd = $Reader_cmd.ReadLine()
Write-Host $Response_cmd
while ($true)
{
$Response_data = $Reader_data.ReadLine()
Write-Host $Response_data
}
$Stream_cmd.Close()
$Socket_cmd.Close()
$Stream_data.Close()
$Socket_data.Close()
Reply
{"MSG":"TRACK_OHLC","SUCCESS":["EURUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
{"SYMBOL":"EURUSD","PERIOD":"PERIOD_M1","OHLC":[{"TIME":"2022.04.18 09:48:00","OPEN":1.07913,"HIGH":1.07924,"LOW":1.07911,"CLOSE":1.07924,"TICK_VOLUME":24}]}
{"SYMBOL":"EURUSD","PERIOD":"PERIOD_M1","OHLC":[{"TIME":"2022.04.18 09:49:00","OPEN":1.07926,"HIGH":1.07927,"LOW":1.07911,"CLOSE":1.07920,"TICK_VOLUME":32}]}
{"SYMBOL":"EURUSD","PERIOD":"PERIOD_M1","OHLC":[{"TIME":"2022.04.18 09:50:00","OPEN":1.07920,"HIGH":1.07920,"LOW":1.07910,"CLOSE":1.07914,"TICK_VOLUME":26}]}
Example 3: Export Trade History from MT5 to CSV using PowerShell
.\Export Trade History from MT5 to CSV.ps1
$IP = "127.0.0.1"
$Port = 71
$Address = [System.Net.IPAddress]::Parse($IP)
$Socket = New-Object System.Net.Sockets.TCPClient($Address,$Port)
$Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Reader = New-Object System.IO.StreamReader($Stream)
$Cmd = "" | Select MSG,MODE,FROM_DATE,TO_DATE
$Cmd.MSG = "TRADE_HISTORY"
$Cmd.MODE = "POSITIONS"
$Cmd.FROM_DATE = "2022/09/29 00:00:00"
$Cmd.TO_DATE = "2022/09/30 00:00:00"
$Json = ConvertTo-Json $Cmd -Compress
$Writer.WriteLine($Json)
$Writer.Flush()
$Response = $Reader.ReadLine()
$DataObj = ConvertFrom-Json $Response
if ($DataObj.ERROR_ID -ge 0) {
$DataObj.POSITIONS | Export-Csv -Path "History.csv" -Delimiter "," -NoTypeInformation
Write-Host "Exported to CSV!"
}
else {
Write-Host $DataObj.ERROR_DESCRIPTION
}
$Stream.Close()
$Socket.Close()
Info
Have you found any bug or error? Please notify us.