MT4 Connecting
MT4 contains server details (address and port) in *.srv files. For simple application is enough to get just primary server as shown below.
using System; using TradingAPI.MT4Server; namespace Help { class Program { static void Main(string[] args) { new Program().Run(); } void Run() { try { MainServer srv = QuoteClient.LoadSrv(@"GerchikCo-Demo.srv"); QuoteClient qc = new QuoteClient(67611, "wx1yhpn", srv.Host, srv.Port); Console.WriteLine("Connecting..."); qc.Connect(); Console.WriteLine("Connected to server"); Console.WriteLine("Press any key..."); Console.ReadKey(); qc.Disconnect(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Press any key..."); Console.ReadKey(); } } } }
In real applications you need to get also slave servers and connect to them if primary server not available.
void Run() { try { Server[] slaves; MainServer primary = QuoteClient.LoadSrv(@"GerchikCo-Demo.srv", out slaves); QuoteClient qc = Connect(primary, slaves, 67611, "wx1yhpn"); Console.WriteLine("Connected to server"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine("Press any key..."); Console.ReadKey(); } QuoteClient Connect(MainServer primary, Server[] slaves, uint user, string password) { Console.WriteLine("Connecting..."); QuoteClient qc = new QuoteClient(user, password, primary.Host, primary.Port); try { qc.Connect(); return qc; } catch (Exception) { Console.WriteLine("Cannot connect to main server"); return ConnectSlaves(slaves, user, password); } } QuoteClient ConnectSlaves(Server[] slaves, uint user, string password) { Console.WriteLine("Connecting to slaves..."); foreach (var server in slaves) { QuoteClient qc = new QuoteClient(user, password, server.Host, server.Port); try { qc.Connect(); return qc; } catch (Exception) { } } throw new Exception("Cannot connect to slaves"); }
Broker could periodically change .srv file, if you want to get such updates use PathForSavingSrv field. If you set this field before Connect() method it would be updated during connection.