(MT4ClientApi)MT4跟单之连接篇

发布于 2019-11-01 00:24:23

创建项目

打开Visual Studio点击目录 > 文件-> 新建-> 项目-> 选择控制台应用 -> 确定

图片1.png

添加引用 

目录> 项目> 添加引用->浏览->选中MT4ClientAPI.dll -> 添加

图片2.png

连接

在对应mt4平台的*.srv文件中包含其服务器详细信息(地址和端口)。对于简单的应用程序来说,连接主节点如下所示:

namespace Mt4Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().Run();
        }
 
        void Run()
        {
            try
            {
                MainServer srv = QuoteClient.LoadSrv(
                @"C:\srv\CreatForex-Demo.srv");
                QuoteClient qc = new QuoteClient(99999, "abcd123", srv.Host, srv.Port);
                Console.WriteLine("连接中...");
                qc.Connect();
                Console.WriteLine("已连接");
                Console.WriteLine("任意键退出");
                Console.ReadKey();
                qc.Disconnect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

在实际应用中,如果主服务器不可用,还需通过子节点连接。 

void Run()
{
    try
    {
        //Server[] slaves;
        MainServer primary = QuoteClient.LoadSrv(
        @"C:\srv\CreatForex-Demo.srv", out Server[] slaves);
        QuoteClient qc = Connect(primary, slaves, 99999, "abcd123");
        Console.WriteLine("已连接到服务器!!!");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    Console.WriteLine("任意键退出");
    Console.ReadKey();
}
 
QuoteClient Connect(MainServer primary, Server[] slaves, int user, string password)
{
    Console.WriteLine("正在连接...");
    QuoteClient qc = new QuoteClient(user, password, primary.Host, primary.Port);
    try
    {
        qc.Connect();
        return qc;
    }
    catch (Exception)
    {
        Console.WriteLine("不能连接到主节点!!!");
        return ConnectSlaves(slaves, user, password);
    }
}
 
QuoteClient ConnectSlaves(Server[] slaves, int user, string password)
{
    Console.WriteLine("正在连接子节点。。。");
    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("不能连接子节点!!!");
}

代理商可能定期更改.srv文件,如果要获取此类更新,请使用pathforsavingsrv。如果在connect()方法之前设置此字段,它将在连接期间自动更新。

MainServer srv = QuoteClient.LoadSrv(@"C:\srv\CreatForex-Demo.srv);
 
QuoteClient qc = new QuoteClient(99999, "abcd123", srv.Host, srv.Port); 
qc.PathForSavingSrv = @"C:\Program Files\MetaTrader 4\config\";
 
qc.Connect();

ok,连接后可以通过api发送下单,平仓等指令了!

0 条评论

发布
问题