(MT4ClientApi)MT4跟单之订单篇

发布于 2019-11-01 23:07:48

交易是MT4最主要的交易功能,其中交易类型分为7种,分别是:

Buying position. 
Selling position. 
Buy limit pending position. 
Sell limit pending position.
Buy stop pending position.  
Sell stop
pending position. 
Balance position. 
Credit position.

即Buy,Sell,BuyLimit,SellLimit,BuyStop,SellStop,Balance,Credit其中客户端用到的为前6种。

订单Demo如下:

namespace Mt4Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().Run();
        }
        void Run()
        {
            try
            {
                //获取服务器信息
                MainServer srv = QuoteClient.LoadSrv(@"C:\srv\CreatForex-Demo.srv");
                //通过账号,密码,IP,端口实例化客户端,并连接
                QuoteClient qc = new QuoteClient(99999, "abcd123", srv.Host, srv.Port);
                Console.WriteLine("正在连接...");
                qc.Connect();

                //实例化订单客户端,并连接
                OrderClient oc = new OrderClient(qc);
                Console.WriteLine("已连接到服务器!!!");

                while (qc.GetQuote("EURUSD") == null)
                    Thread.Sleep(10);
                //拿到报价
                double ask = qc.GetQuote("EURUSD").Ask;
                //下单
                Order order = oc.OrderSend("EURUSD", Op.Buy, 0.1, ask, 0, 0, 0, null, 0, new DateTime());
                Console.WriteLine("Order " + order.Ticket + " opened");
                Console.WriteLine("任意键退出...");
                Console.ReadKey();
                qc.Disconnect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

挂单Demo如下:

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();
                OrderClient oc = new OrderClient(qc);
                Console.WriteLine("已连接到服务器!!!");
                Order order = oc.OrderSend("EURUSD", Op.BuyStop, 0.1, 1.4, 0, 0, 0, null, 0, new DateTime());
                Console.WriteLine(order.Type + "order " + order.Ticket + " opened");
                Console.WriteLine("任意键退出...");
                Console.ReadKey();
                qc.Disconnect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}

备注:品种会有不同的执行类型,如:

 - Request 滑点参数将不起作用,它不依赖于在订单发送期间的开盘价。

 - Market 意味着该仓位将以任何适合的经纪人价格开仓。

 - Instant 意味着您可以指定最大滑点,并且如果价格将比在滑点参数中指定的更多点数会引发重新引用异常。

在MT4ClientApi要获取交易品种的的执行类型,请使用以下命令:

Execution execution = qc.GetSymbolInfo("EURUSD").Execution;

Demo如下:

double ask = qc.GetQuote("EURUSD").Ask; 
Order order; 
try 
{ 
    order = oc.OrderSend("EURUSD", Op.Buy, 0.1, ask, 0, 0, 0, null, 0, new DateTime()); 
} 
catch (RequoteException ex) 
{ 
ask = ex.Ask; 
}

备注:下单和挂单为同一方法,只不过参数不一样!

0 条评论

发布
问题