Skip to content

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()
Reply
Exported to CSV!


Info

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