Go
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 Go
Get actual EURUSD price from MT5.go
package main
import (
"fmt"
"net"
)
func main() {
con, err :=net.Dial("tcp", "localhost:71")
if err != nil { fmt.Println(err) }
defer con.Close()
msg := "{\"MSG\":\"QUOTE\",\"SYMBOL\":\"EURUSD\"}\r\n"
_, err = con.Write([]byte(msg))
if err != nil { fmt.Println(err) }
reply := make([]byte, 1024)
_, err = con.Read(reply)
if err != nil { fmt.Println(err) }
fmt.Println(string(reply))
}
Reply
{"MSG":"QUOTE","SYMBOL":"EURUSD","ASK":0.99832,"BID":0.99828,"FLAGS":2,"TIME":"2022.09.19 14:56:33.108","VOLUME":0,"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
Example 2: Send Order to MT5 using Go
Send Order to MT5.go
package main
import (
"fmt"
"net"
)
func main() {
con, err := net.Dial("tcp", "localhost:71")
if err != nil { fmt.Println(err) }
defer con.Close()
msg := "{\"MSG\":\"ORDER_SEND\",\"SYMBOL\":\"EURUSD\",\"TYPE\":\"ORDER_TYPE_BUY\",\"VOLUME\":0.02}\r\n"
_, err = con.Write([]byte(msg))
if err != nil { fmt.Println(err) }
reply := make([]byte, 1024)
_, err = con.Read(reply)
if err != nil { fmt.Println(err) }
fmt.Println(string(reply))
}
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 Go
Stream actual EURUSD price from MT5.go
package main
import (
"fmt"
"net"
)
func main() {
con1, err := net.Dial("tcp", "localhost:71")
if err != nil { fmt.Println(err) }
con2, err := net.Dial("tcp", "localhost:72")
if err != nil { fmt.Println(err) }
defer con1.Close()
defer con2.Close()
msg := "{\"MSG\":\"TRACK_PRICES\",\"SYMBOLS\":[\"EURUSD\"]}\r\n"
_, err = con1.Write([]byte(msg))
if err != nil { fmt.Println(err) }
reply := make([]byte, 1024)
_, err = con1.Read(reply)
if err != nil { fmt.Println(err) }
fmt.Println(string(reply))
for{
reply = make([]byte, 1024)
_, err = con2.Read(reply)
if err != nil { fmt.Println(err) }
fmt.Println(string(reply))
}
}
Reply
{"MSG":"TRACK_PRICES","SUCCESS":["EURUSD"],"ERROR_ID":0,"ERROR_DESCRIPTION":"The operation completed successfully"}
{"TIME":"2022.04.13 09:08:02","SYMBOL":"EURUSD","ASK":1.08386,"BID":1.08384,"VOLUME":18404}
{"TIME":"2022.04.13 09:08:03","SYMBOL":"EURUSD","ASK":1.08386,"BID":1.08385,"VOLUME":18405}
{"TIME":"2022.04.13 09:08:03","SYMBOL":"EURUSD","ASK":1.08386,"BID":1.08384,"VOLUME":18407}
{"TIME":"2022.04.13 09:08:04","SYMBOL":"EURUSD","ASK":1.08383,"BID":1.08380,"VOLUME":18408}
{"TIME":"2022.04.13 09:08:05","SYMBOL":"EURUSD","ASK":1.08384,"BID":1.08382,"VOLUME":18408}
{"TIME":"2022.04.13 09:08:05","SYMBOL":"EURUSD","ASK":1.08385,"BID":1.08382,"VOLUME":18410}
{"TIME":"2022.04.13 09:08:06","SYMBOL":"EURUSD","ASK":1.08383,"BID":1.08381,"VOLUME":18411}
{"TIME":"2022.04.13 09:08:06","SYMBOL":"EURUSD","ASK":1.08384,"BID":1.08381,"VOLUME":18411}
{"TIME":"2022.04.13 09:08:07","SYMBOL":"EURUSD","ASK":1.08383,"BID":1.08381,"VOLUME":18412}
...
Advanced Examples
Example 1: Get actual EURUSD price from MT5 (using JSON library) using Go
Get actual EURUSD price (using JSON library) from MT5.go
package main
import (
"encoding/json"
"fmt"
"net"
)
type quoteCommand struct {
MSG string
SYMBOL string
}
func main() {
cmd := quoteCommand{
MSG: "QUOTE",
SYMBOL: "EURUSD",
}
jsonData, err := json.Marshal(cmd)
con, err := net.Dial("tcp", "localhost:71")
if err != nil { fmt.Println(err) }
msg := string(jsonData) + "\r\n"
_, err = con.Write([]byte(msg))
if err != nil { fmt.Println(err) }
reply := make([]byte, 1024)
msgLen, err := con.Read(reply)
if err != nil { fmt.Println(err) }
con.Close()
bytes := []byte(string(reply[0:msgLen]))
var result map[string]interface{}
json.Unmarshal(bytes, &result)
fmt.Printf("Symbol: %s Ask: %f Bid: %f\n", result["SYMBOL"],result["ASK"],result["BID"])
}
Example 2: Stream OHLC data from MT5 (using JSON library) using Go
Example 3: Export Trade History from MT5 to a CSV file using Go
Info
Have you found any bug or error? Please notify us.