Exemple #1
0
        //return list of all users at given group
        public List <CIMTUser> GetAllUsersAtGroup(string GroupName, out MTRetCode requestResult)
        {
            List <CIMTUser> result = new List <CIMTUser>();

            requestResult = MTRetCode.MT_RET_ERROR;
            if (!CheckIfMannagerWorks())
            {
                return(result);
            }

            try
            {
                var myUserArray = m_manager.UserCreateArray();
                requestResult = m_manager.UserRequestArray(GroupName, myUserArray);

                if (requestResult == MTRetCode.MT_RET_OK)
                {
                    var realusers = myUserArray.ToArray();
                    foreach (var actUser in realusers)
                    {
                        result.Add(actUser);
                    }
                }
                else
                {
                    LogOut($"Error getting user: group_name={GroupName} error msg={requestResult}");
                }
            }
            catch (Exception ex)
            {
                LogOut($"Error getting user:  error={ex}");
            }

            return(result);
        }
Exemple #2
0
        public MTRetCode UserDelete(ulong loginID)
        {
            MTRetCode mtRetCode = MTRetCode.MT_RET_ERROR;

            mtRetCode = this.m_manager.UserDelete(loginID);
            return(mtRetCode);
        }
Exemple #3
0
        public MTRetCode UserPasswordCheck(EnUsersPasswords type, ulong loginID, string password)
        {
            MTRetCode mtRetCode = MTRetCode.MT_RET_ERROR;

            mtRetCode = this.m_manager.UserPasswordCheck(type, loginID, password);
            return(mtRetCode);
        }
Exemple #4
0
        //return list of all groups at given server and success state too
        public List <CIMTConGroup> GetAllGroups(out MTRetCode requestResult)
        {
            List <CIMTConGroup> result = new List <CIMTConGroup>();

            requestResult = MTRetCode.MT_RET_ERROR;
            if (!CheckIfMannagerWorks())
            {
                return(result);
            }

            try
            {
                var serverGroupCount = m_manager.GroupTotal();
                for (uint i = 0; i < serverGroupCount; i++)
                {
                    var actGroup = m_manager.GroupCreate();
                    requestResult = m_manager.GroupNext(i, actGroup);

                    if (requestResult == MTRetCode.MT_RET_OK)
                    {
                        result.Add(actGroup);
                    }
                    else
                    {
                        LogOut($"Error getting group: group_id={i} error msg={requestResult}");
                    }
                }
            }
            catch (Exception ex)
            {
                LogOut($"Error getting group:  error={ex}");
            }

            return(result);
        }
Exemple #5
0
        //+------------------------------------------------------------------+
        //| Dealer operation                                                 |
        //+------------------------------------------------------------------+
        public bool DealerBalance(UInt64 login, double amount, uint type, string comment, bool deposit)
        {
            ulong     deal_id;
            MTRetCode res = m_manager.DealerBalance(login, deposit ? amount : -amount, type, comment, out deal_id);

            if (res != MTRetCode.MT_RET_REQUEST_DONE)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "DealerBalance error ({0})", res);
                return(false);
            }
            return(true);
        }
Exemple #6
0
        //+------------------------------------------------------------------+
        //| Login                                                            |
        //+------------------------------------------------------------------+
        public bool Login(string server, UInt64 login, string password)
        {
            //--- connect
            MTRetCode res = m_manager.Connect(server, login, password, null, CIMTManagerAPI.EnPumpModes.PUMP_MODE_FULL, MT5_CONNECT_TIMEOUT);

            if (res != MTRetCode.MT_RET_OK)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Connection failed ({0})", res);
                return(false);
            }
            return(true);
        }
Exemple #7
0
        //+------------------------------------------------------------------+
        //| Dealer operation                                                 |
        //+------------------------------------------------------------------+
        public bool DealerBalance(UInt64 login, double amount, uint type, string comment, bool deposit)
        {
            UInt64 deal_id = 0;
            //--- dealer operation
            MTRetCode res = m_manager.DealerBalance(login, (deposit ? amount : -amount), type, comment, out deal_id);

            if (res != MTRetCode.MT_RET_REQUEST_DONE)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "DealerBalance failed ({0})", res);
                return(false);
            }
            //---
            return(true);
        }
Exemple #8
0
 private void Initialize()
 {
     try {
         // Initialize the factory
         MTRetCode res = SMTManagerAPIFactory.Initialize(GetMTDllPath());
         if (MTRetCode.MT_RET_OK != res)
         {
             throw new MT5Exception("SMTManagerAPIFactory.Initialize failed", res);
         }
         // Receive the API version
         res = SMTManagerAPIFactory.GetVersion(out uint version);
         if (MTRetCode.MT_RET_OK != res)
         {
             throw new MT5Exception("SMTManagerAPIFactory.GetVersion failed", res);
         }
         // Check API version
         if (version != SMTManagerAPIFactory.ManagerAPIVersion)
         {
             throw new MT5Exception($"Manager API version mismatch - {version}!={SMTManagerAPIFactory.ManagerAPIVersion}");
         }
         // Create new manager
         ManagerAPI = SMTManagerAPIFactory.CreateManager(version, out res);
         if (MTRetCode.MT_RET_OK != res)
         {
             throw new MT5Exception("SMTManagerAPIFactory.CreateManager failed", res);
         }
         if (null == ManagerAPI)
         {
             throw new MT5Exception("SMTManagerAPIFactory.CreateManager returned null");
         }
         //
         res = RegisterSink();
         if (MTRetCode.MT_RET_OK != res)
         {
             throw new MT5Exception("CIMTManagerSink.RegisterSink failed", res);
         }
         // Subscribe for events
         res = ManagerAPI.Subscribe(this);
         if (MTRetCode.MT_RET_OK != res)
         {
             throw new MT5Exception("CIMTManagerAPI.Subscribe failed", res);
         }
     }
     catch {
         ManagerAPI?.Release();
         SMTManagerAPIFactory.Shutdown();
         throw;
     }
 }
Exemple #9
0
        //+------------------------------------------------------------------+
        //| Get array of dealer balance operation                            |
        //+------------------------------------------------------------------+
        public bool GetUserDeal(out CIMTDealArray deals, UInt64 login, DateTime time_from, DateTime time_to)
        {
            deals = null;
            //--- request array
            MTRetCode res = m_manager.DealRequest(login, SMTTime.FromDateTime(time_from), SMTTime.FromDateTime(time_to), m_deal_array);

            if (res != MTRetCode.MT_RET_OK)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "DealRequest fail({0})", res);
                return(false);
            }
            //---
            deals = m_deal_array;
            return(true);
        }
Exemple #10
0
        private void Initialize()
        {
            MTRetCode res = RegisterSink();

            if (MTRetCode.MT_RET_OK != res)
            {
                throw new MT5Exception("Register deal sink failed", res);
            }

            res = Manager.DealSubscribe(this);
            if (MTRetCode.MT_RET_OK != res)
            {
                throw new MT5Exception("Subscribe deal sink failed", res);
            }
        }
Exemple #11
0
        //+------------------------------------------------------------------+
        //| Get user info string                                             |
        //+------------------------------------------------------------------+
        public bool GetAccountInfo(UInt64 login, out string str)
        {
            str = string.Empty;
            m_account.Clear();
            MTRetCode res = m_manager.UserAccountRequest(login, m_account);

            if (res != MTRetCode.MT_RET_OK)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "UserAccountRequest error ({0})", res);
                return(false);
            }
            //--- format string
            str = string.Format("Balance: {0}, Equity: {1}", m_account.Balance(), m_account.Equity());
            //---
            return(true);
        }
Exemple #12
0
        //+------------------------------------------------------------------+
        //| Get user info string                                             |
        //+------------------------------------------------------------------+
        public bool GetUserInfo(UInt64 login, out string str)
        {
            str = string.Empty;
            //--- request user from server
            m_user.Clear();
            MTRetCode res = m_manager.UserRequest(login, m_user);

            if (res != MTRetCode.MT_RET_OK)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "UserRequest error ({0})", res);
                return(false);
            }
            //--- format string
            str = string.Format("{0},{1},{2},1:{3}", m_user.Name(), m_user.Login(), m_user.Group(), m_user.Leverage());
            //---
            return(true);
        }
Exemple #13
0
        //+------------------------------------------------------------------+
        //| Initialize library                                               |
        //+------------------------------------------------------------------+
        public bool Initialize()
        {
            string    message = string.Empty;
            MTRetCode res     = MTRetCode.MT_RET_OK_NONE;

            //--- loading manager API
            if ((res = SMTManagerAPIFactory.Initialize(null)) != MTRetCode.MT_RET_OK)
            {
                message = string.Format("Loading manager API failed ({0})", res);
                System.Console.WriteLine(message);
                return(false);
            }
            //--- creating manager interface
            m_manager = SMTManagerAPIFactory.CreateManager(SMTManagerAPIFactory.ManagerAPIVersion, out res);
            if ((res != MTRetCode.MT_RET_OK) || (m_manager == null))
            {
                SMTManagerAPIFactory.Shutdown();
                message = string.Format("Creating manager interface failed ({0})", (res == MTRetCode.MT_RET_OK ? "Managed API is null" : res.ToString()));
                System.Console.WriteLine(message);
                return(false);
            }
            //--- create deal array
            if ((m_deal_array = m_manager.DealCreateArray()) == null)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "DealCreateArray fail");
                System.Console.WriteLine("DealCreateArray fail");
                return(false);
            }
            //--- create user interface
            if ((m_user = m_manager.UserCreate()) == null)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "UserCreate fail");
                System.Console.WriteLine("UserCreate fail");
                return(false);
            }
            //--- create account interface
            if ((m_account = m_manager.UserCreateAccount()) == null)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "UserCreateAccount fail");
                System.Console.WriteLine("UserCreateAccount fail");
                return(false);
            }
            //--- all right
            return(true);
        }
Exemple #14
0
        public UserRequestReturnValue UserRequest(ulong loginID)
        {
            UserRequestReturnValue userRequestReturnValue = null;

            using (CIMTUser user = this.m_manager.UserCreate())
            {
                MTRetCode mtRetCode = this.m_manager.UserRequest(loginID, user);
                if (mtRetCode != MTRetCode.MT_RET_OK || mtRetCode != MTRetCode.MT_RET_OK_NONE)
                {
                    userRequestReturnValue = new UserRequestReturnValue(mtRetCode, JsonConvert.SerializeObject(user));
                }
                else
                {
                    userRequestReturnValue = new UserRequestReturnValue(mtRetCode, null);
                }
            }
            return(userRequestReturnValue);
        }
Exemple #15
0
        public MTRetCode Initialize()
        {
            MTRetCode res = MTRetCode.MT_RET_ERROR;

            //--- Initialize the factory
            if ((res = SMTManagerAPIFactory.Initialize(@"..\..\API\")) != MTRetCode.MT_RET_OK)
            {
                LogOut($"SMTManagerAPIFactory.Initialize failed - {res}");
                return(res);
            }

            //--- Receive the API version
            uint version = 0;

            if ((res = SMTManagerAPIFactory.GetVersion(out version)) != MTRetCode.MT_RET_OK)
            {
                LogOut($"SMTManagerAPIFactory.GetVersion failed - {res}");
                return(res);
            }
            //--- Compare the obtained version with the library one
            if (version != SMTManagerAPIFactory.ManagerAPIVersion)
            {
                LogOut($"Manager API version mismatch - {version}!={SMTManagerAPIFactory.ManagerAPIVersion}");
                return(MTRetCode.MT_RET_ERROR);
            }
            //--- Create an instance
            m_manager = SMTManagerAPIFactory.CreateManager(SMTManagerAPIFactory.ManagerAPIVersion, out res);
            if (res != MTRetCode.MT_RET_OK)
            {
                LogOut($"SMTManagerAPIFactory.CreateManager failed - {res}");
                return(res);
            }

            //--- For some reasons, the creation method returned OK and the null pointer
            if (m_manager == null)
            {
                LogOut("SMTManagerAPIFactory.CreateManager was ok, but ManagerAPI is null");
                return(MTRetCode.MT_RET_ERR_MEM);
            }

            //--- All is well
            LogOut($"Using ManagerAPI v. {version}");
            return(res);
        }
Exemple #16
0
        public void Connect(ConnectionParams config)
        {
            if (Disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            if (null == config)
            {
                throw new ArgumentNullException(nameof(config));
            }

            MTRetCode res = ManagerAPI.Connect(config.IP, config.Login, config.Password, null, CIMTManagerAPI.EnPumpModes.PUMP_MODE_FULL, config.ConnectionTimeout);

            if (MTRetCode.MT_RET_OK != res)
            {
                throw new MT5Exception($"Connect to {config.IP} as {config.Login} failed", res);
            }
        }
Exemple #17
0
        //return list of all Deals at given UserLogin
        public List <CIMTDeal> GetAllDeals(ulong UserLogin, out MTRetCode requestResult, DateTime StartDate, DateTime EndDate)
        {
            List <CIMTDeal> result = new List <CIMTDeal>();

            requestResult = MTRetCode.MT_RET_ERROR;
            if (!CheckIfMannagerWorks())
            {
                return(result);
            }

            DateTime ZeroDate    = new DateTime(1970, 1, 1);
            long     startSecond = (long)(StartDate - ZeroDate).TotalSeconds;
            long     stopSecond  = (long)(EndDate - ZeroDate).TotalSeconds;

            try
            {
                var dealsList = m_manager.DealCreateArray();
                //requestResult = m_manager.DealRequest(UserLogin, 1, 3153600000, dealsList);
                requestResult = m_manager.DealRequest(UserLogin, startSecond, stopSecond, dealsList);

                if (requestResult == MTRetCode.MT_RET_OK)
                {
                    var realdeal = dealsList.ToArray();
                    foreach (var actDeal in realdeal)
                    {
                        result.Add(actDeal);
                    }
                }
                else
                {
                    LogOut($"Error getting Deals for user: user_Login={UserLogin} error msg={requestResult}");
                }
            }
            catch (Exception ex)
            {
                LogOut($"Error getting Deals for user: user_Login={UserLogin} error msg={ex}");
            }

            return(result);
        }
Exemple #18
0
        /// <summary>
        /// 本段代码批量添加user,本来是用来测试UserCreateArray函数的,但是没感觉这个函数有什么用
        /// </summary>
        /// <param name="length"></param>
        /// <param name="group"></param>
        /// <param name="levelage"></param>
        /// <param name="mainPassword"></param>
        /// <param name="readonlyPassword"></param>
        /// <param name="userNameStartWords"></param>
        /// <returns></returns>
        public List <string> UserAddArray(uint length, string group, uint levelage, string mainPassword, string readonlyPassword, string userNameStartWords = null)
        {
            List <string> mtRetCodeStrings = new List <string>();

            using (CIMTUserArray userArray = this.m_manager.UserCreateArray())
            {
                for (uint iCount = 0; iCount < length; iCount++)
                {
                    using (CIMTUser user = this.m_manager.UserCreate())
                    {
                        if (userNameStartWords != null)
                        {
                            user.Name(userNameStartWords + (iCount + 1).ToString());
                        }
                        user.Leverage(levelage);
                        user.Group(group);
                        MTRetCode mtRetCode = this.m_manager.UserAdd(user, mainPassword, readonlyPassword);
                        userArray.Add(user);
                        mtRetCodeStrings.Add(mtRetCode.ToString());
                    }
                }
            }
            return(mtRetCodeStrings);
        }
Exemple #19
0
        //+------------------------------------------------------------------+
        //| Initialize library                                               |
        //+------------------------------------------------------------------+
        public bool Initialize(CDealerExampleDlg parent)
        {
            //---
            string    message = string.Empty;
            MTRetCode res     = MTRetCode.MT_RET_OK_NONE;
            uint      version = 0;

            //--- check
            if (parent == null)
            {
                return(false);
            }
            m_parent = parent;
            //---
            try
            {
                //--- init CIMTManagerSink native link
                if ((res = RegisterSink()) != MTRetCode.MT_RET_OK)
                {
                    message = string.Format("Register sink failed ({0})", res);
                    MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- loading manager API
                if ((res = SMTManagerAPIFactory.Initialize(@"..\..\..\API\")) != MTRetCode.MT_RET_OK)
                {
                    message = string.Format("Loading manager API failed ({0})", res);
                    MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- check Manager API version
                if ((res = SMTManagerAPIFactory.GetVersion(out version)) != MTRetCode.MT_RET_OK)
                {
                    message = string.Format("Dealer: getting version failed ({0})", res);
                    MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                if (version != SMTManagerAPIFactory.ManagerAPIVersion)
                {
                    message = string.Format("Dealer: wrong Manager API version, version {0} required", SMTManagerAPIFactory.ManagerAPIVersion);
                    MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- create manager interface
                if ((m_manager = SMTManagerAPIFactory.CreateManager(SMTManagerAPIFactory.ManagerAPIVersion, out res)) == null || res != MTRetCode.MT_RET_OK)
                {
                    message = string.Format("Dealer: creating manager interface failed ({0})", res);
                    MessageBox.Show(message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- create request object
                if ((m_request = m_manager.RequestCreate()) == null)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: creating request object failed");
                    MessageBox.Show("Dealer: creating request object failed", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- create confirmation object
                if ((m_confirm = m_manager.DealerConfirmCreate()) == null)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: creating confirmation object failed");
                    MessageBox.Show("Dealer: creating confirmation object failed", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- create requests event
                m_event_request = new EventWaitHandle(false, EventResetMode.ManualReset);
                //--- create requests event
                m_event_answer = new EventWaitHandle(false, EventResetMode.AutoReset);
                //---
                m_request_sink = new CRequestSink();
                if ((res = m_request_sink.Initialize(m_manager, m_event_request)) != MTRetCode.MT_RET_OK)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: creating request sink failed");
                    MessageBox.Show("Dealer: creating request sink failed", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //---
                m_order_sink = new COrderSink();
                if ((res = m_order_sink.Initialize(m_manager)) != MTRetCode.MT_RET_OK)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: creating request sink failed");
                    MessageBox.Show("Dealer: creating request sink failed", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return(false);
                }
                //--- done
                return(true);
            }
            catch (Exception ex)
            {
                if (m_manager != null)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: initialization failed - {0}", ex.Message);
                }
                //---
                MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            //--- done with errors
            return(false);
        }
Exemple #20
0
 public MT5Exception(string message, MTRetCode errorCode)
     : base(message)
 {
     ErrorCode = errorCode;
 }
Exemple #21
0
        public bool Start(string server, UInt64 login, string password)
        {
            //--- check manager
            if (m_manager == null)
            {
                return(false);
            }
            //--- check arguments
            if (server == null || login == 0 || password == null)
            {
                m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: starting failed with bad arguments");
                return(false);
            }
            //--- do not let exception get out here
            try
            {
                //--- check if dealer is started already
                if (m_thread_dealer != null)
                {
                    //--- dealer thread is running
                    if (m_thread_dealer.IsAlive)
                    {
                        return(false);
                    }
                    //---
                    m_thread_dealer = null;
                }
                //--- save authorize info
                m_server   = server;
                m_login    = login;
                m_password = password;
                //--- subscribe for notifications
                if (m_manager.Subscribe(this) != MTRetCode.MT_RET_OK)
                {
                    return(false);
                }
                //--- subscribe for requests
                if (m_manager.DealSubscribe(_dealSink) != MTRetCode.MT_RET_OK)
                {
                    return(false);
                }
                //--- start dealing thread
                m_stop_flag = 0;
                m_connected = 0;
                //--- start thread
                //m_thread_dealer = new Thread(DealerFunc, STACK_SIZE_COMMON);
                //m_thread_dealer.Start();
                //--- done

                MTRetCode res = m_manager.Connect(m_server, m_login, m_password, null,
                                                  CIMTManagerAPI.EnPumpModes.PUMP_MODE_FULL,
                                                  MT5_CONNECT_TIMEOUT);

                if (m_manager.DealerStart() != MTRetCode.MT_RET_OK)
                {
                }

                return(true);
            }
            catch (Exception ex)
            {
                if (m_manager != null)
                {
                    m_manager.LoggerOut(EnMTLogCode.MTLogErr, "Dealer: starting failed - {0}", ex.Message);
                }
            }
            //--- done with errors
            return(false);
        }
Exemple #22
0
 public UserRequestReturnValue(MTRetCode mtRetCode, string cIMTUserJson)
 {
     this.mtRetCode    = mtRetCode;
     this.cIMTUserJson = cIMTUserJson;
 }
Exemple #23
0
 public MT5Exception(string message, MTRetCode errorCode, Exception innerException)
     : base(message, innerException)
 {
     ErrorCode = errorCode;
 }
Exemple #24
0
        //generate report for given server
        private bool CollectDeals4OneServer(clsServerConnectionInfo ServerInfo)
        {
            using (clsMT5 mt5 = new clsMT5())
            {
                mt5.Initialize();

                try
                {
                    var log_result = mt5.m_manager.Connect(ServerInfo.Server, ServerInfo.uLogin, ServerInfo.Password, "", MetaQuotes.MT5ManagerAPI.CIMTManagerAPI.EnPumpModes.PUMP_MODE_FULL, 10000);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(false);
                }


                //get all groups at server
                MTRetCode res       = MTRetCode.MT_RET_ERROR;
                var       GroupList = mt5.GetAllGroups(out res);
                if (!(res == MTRetCode.MT_RET_OK || res == MTRetCode.MT_RET_ERR_NOTFOUND))
                {
                    return(false);
                }

                GroupList.RemoveAll(x => x.Group() == this.ExcludedGroup);

                foreach (var actGroup in GroupList)
                {
                    var newGroup2add = new clsServerXGroup()
                    {
                        Server = ServerInfo.Server, Group = actGroup.Group()
                    };
                    this.AllGroups.Add(newGroup2add);
                }


                foreach (var actGroup in GroupList)
                {
                    //get all Users at server
                    var userList = mt5.GetAllUsersAtGroup(actGroup.Group(), out res);
                    if (!(res == MTRetCode.MT_RET_OK || res == MTRetCode.MT_RET_ERR_NOTFOUND))
                    {
                        return(false);
                    }
                    userList.RemoveAll(x => x.Login() == this.uExcludedUser);

                    foreach (var actUser in userList)
                    {
                        //get all deals as server
                        var dealList = mt5.GetAllDeals(actUser.Login(), out res, this.StartDate, this.StopDate);
                        Console.WriteLine($"user {actUser.Login()} trades count={dealList.Count()}");
                        if (!(res == MTRetCode.MT_RET_OK || res == MTRetCode.MT_RET_ERR_NOTFOUND))
                        {
                            return(false);
                        }

                        foreach (var actDeal in dealList)
                        {
                            var dataNode = new clsDealInfo();
                            dataNode.Server    = ServerInfo.Server;
                            dataNode.Group     = actGroup.Group();
                            dataNode.Profit    = actDeal.Profit();
                            dataNode.Volume    = actDeal.Volume();
                            dataNode.BuySell   = (int)actDeal.Action();
                            dataNode.uOpenTime = actDeal.Time();
                            this.CollectedData.Add(dataNode);
                        }
                    }
                }
            }

            return(true);
        }
Exemple #25
0
        //public MTRetCode UserAdd(string userName, string mainPassword, string readonlyPassword)
        //{
        //    MTRetCode mtRetCode = MTRetCode.MT_RET_ERROR;
        //    using (CIMTUser user = this.m_manager.UserCreate())
        //    {
        //        user.Name(userName);
        //        user.Leverage(100);
        //        user.Group(@"demo\demoforex");
        //        mtRetCode = this.m_manager.UserAdd(user, mainPassword, readonlyPassword);
        //    }

        //    return mtRetCode;
        //}

        public MTRetCode UserAdd(string group, uint levelage, string mainPassword,
                                 string readonlyPassword,
                                 string userName = null,
                                 ulong?loginID   = null,
                                 CIMTUser.EnUsersRights?rights = null,
                                 string company       = null,
                                 string account       = null,
                                 string country       = null,
                                 uint?language        = null,
                                 string city          = null,
                                 string state         = null,
                                 string zipCode       = null,
                                 string address       = null,
                                 string phone         = null,
                                 string email         = null,
                                 string id            = null,
                                 string status        = null,
                                 string comment       = null,
                                 uint?color           = null,
                                 string phonePassword = null,
                                 ulong?agent          = null,
                                 string leadSource    = null,
                                 string leadCampaign  = null,
                                 ushort?app_id        = null,
                                 byte?idApp           = null,
                                 long?valueLong       = null,
                                 ulong?valueUlong     = null,
                                 double?valueDouble   = null)
        {
            MTRetCode mtRetCode = MTRetCode.MT_RET_ERROR;

            //string mqid = null;
            using (CIMTUser user = this.m_manager.UserCreate())
            {
                if (userName != null)
                {
                    mtRetCode = user.Name(userName);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                mtRetCode = user.Leverage(levelage);
                if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                {
                    return(mtRetCode);
                }
                mtRetCode = user.Group(group);
                if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                {
                    return(mtRetCode);
                }
                if (loginID != null)
                {
                    mtRetCode = user.Login(loginID.Value);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (rights != null)
                {
                    mtRetCode = user.Rights(rights.Value);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (company != null)
                {
                    mtRetCode = user.Company(company);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (account != null)
                {
                    mtRetCode = user.Account(account);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (country != null)
                {
                    mtRetCode = user.Country(country);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (language != null)
                {
                    mtRetCode = user.Language(language.Value);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (city != null)
                {
                    mtRetCode = user.City(city);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (state != null)
                {
                    mtRetCode = user.State(state);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (zipCode != null)
                {
                    mtRetCode = user.ZIPCode(zipCode);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (address != null)
                {
                    mtRetCode = user.Address(address);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (phone != null)
                {
                    mtRetCode = user.Phone(phone);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (email != null)
                {
                    mtRetCode = user.EMail(email);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (id != null)
                {
                    mtRetCode = user.ID(id);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (status != null)
                {
                    mtRetCode = user.Status(status);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (comment != null)
                {
                    mtRetCode = user.Comment(comment);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (color != null)
                {
                    mtRetCode = user.Color(color.Value);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (phonePassword != null)
                {
                    mtRetCode = user.PhonePassword(phonePassword);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (agent != null)
                {
                    mtRetCode = user.Agent(agent.Value);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (leadSource != null)
                {
                    mtRetCode = user.LeadSource(leadSource);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (leadCampaign != null)
                {
                    mtRetCode = user.LeadCampaign(leadCampaign);
                    if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                    {
                        return(mtRetCode);
                    }
                }
                if (app_id != null && idApp != null)
                {
                    if (valueLong != null)
                    {
                        mtRetCode = user.ApiDataSet(app_id.Value, idApp.Value, valueLong.Value);
                        if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                        {
                            return(mtRetCode);
                        }
                    }
                    else if (valueUlong != null)
                    {
                        mtRetCode = user.ApiDataSet(app_id.Value, idApp.Value, valueUlong.Value);
                        if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                        {
                            return(mtRetCode);
                        }
                    }
                    else if (valueDouble != null)
                    {
                        mtRetCode = user.ApiDataSet(app_id.Value, idApp.Value, valueDouble.Value);
                        if (mtRetCode != MTRetCode.MT_RET_OK && mtRetCode != MTRetCode.MT_RET_OK_NONE)
                        {
                            return(mtRetCode);
                        }
                    }
                }
                mtRetCode = this.m_manager.UserAdd(user, mainPassword, readonlyPassword);
            }
            return(mtRetCode);
        }
Exemple #26
0
        //return list of all groups at given server
        public List <CIMTConGroup> GetAllGroups()
        {
            MTRetCode res = MTRetCode.MT_RET_ERROR;

            return(this.GetAllGroups(out res));
        }
Exemple #27
0
        //+------------------------------------------------------------------+
        //| Dealing thread function                                          |
        //+------------------------------------------------------------------+
        void DealerFunc()
        {
            //--- deal
            while (Interlocked.Add(ref m_stop_flag, 0) == 0)
            {
                //--- connect to the server
                if (Interlocked.Add(ref m_connected, 0) == 0)
                {
                    //--- connect manager to the server
                    MTRetCode res = m_manager.Connect(m_server, m_login, m_password, null,
                                                      CIMTManagerAPI.EnPumpModes.PUMP_MODE_SYMBOLS |
                                                      CIMTManagerAPI.EnPumpModes.PUMP_MODE_GROUPS |
                                                      CIMTManagerAPI.EnPumpModes.PUMP_MODE_USERS |
                                                      CIMTManagerAPI.EnPumpModes.PUMP_MODE_ORDERS,
                                                      MT5_CONNECT_TIMEOUT);
                    if (res != MTRetCode.MT_RET_OK)
                    {
                        Thread.Sleep(100);
                        continue;
                    }
                    //--- start dealer
                    if (m_manager.DealerStart() != MTRetCode.MT_RET_OK)
                    {
                        Thread.Sleep(100);
                        continue;
                    }
                    Interlocked.Exchange(ref m_connected, 1);
                    //--- reset answer event
                    m_event_answer.Reset();
                }
                //--- wait for request
                m_event_request.WaitOne(Timeout.Infinite);
                //--- check stop flag
                if (Interlocked.Add(ref m_stop_flag, 0) != 0)
                {
                    break;
                }
                //--- get next request
                if (m_manager.DealerGet(m_request) == MTRetCode.MT_RET_OK)
                {
                    MTTickShort tick;
                    string      str = "";
                    //--- clear confirmation
                    m_confirm.Clear();
                    //--- print request
                    str = m_request.Print();
                    //--- get last tick for request symbol
                    if (m_manager.TickLast(m_request.Symbol(), m_request.Group(), out tick) != MTRetCode.MT_RET_OK)
                    {
                        //--- ticks not found
                        //--- select symbol
                        m_manager.SelectedAdd(m_request.Symbol());
                        //--- request id
                        m_confirm.ID(m_request.ID());
                        //--- return request
                        m_confirm.Retcode(MTRetCode.MT_RET_REQUEST_RETURN);
                        if (m_manager.DealerAnswer(m_confirm) == MTRetCode.MT_RET_OK)
                        {
                            m_manager.LoggerOut(EnMTLogCode.MTLogOK, "'{0}': return {1} for '{2}'", m_login, str, m_request.Login());
                        }
                        continue;
                    }
                    //--- set order price
                    if (m_request.PriceOrder() == 0)
                    {
                        switch (m_request.Type())
                        {
                        case CIMTOrder.EnOrderType.OP_BUY:
                            m_request.PriceOrder(tick.ask);
                            break;

                        case CIMTOrder.EnOrderType.OP_SELL:
                            m_request.PriceOrder(tick.bid);
                            break;
                        }
                    }
                    //--- request ready
                    m_parent.FireAPIRequest();
                    //--- wait for answer
                    m_event_answer.WaitOne(Timeout.Infinite);
                    //--- check stop flag
                    if (Interlocked.Add(ref m_stop_flag, 0) != 0)
                    {
                        break;
                    }
                    //--- send confirm
                    if (m_manager.DealerAnswer(m_confirm) == MTRetCode.MT_RET_OK)
                    {
                        m_manager.LoggerOut(EnMTLogCode.MTLogOK, "'{0}': confirm {1} for '{2}'", m_login, str, m_request.Login());
                    }
                }
                else
                {
                    Thread.Sleep(100);
                }
            }
            //--- stop dealer
            m_manager.DealerStop();
            //--- disconnect manager
            m_manager.Disconnect();
        }
Exemple #28
0
 public MT5Exception(MTRetCode errorCode)
     : base()
 {
     ErrorCode = errorCode;
 }