//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); }
public MTRetCode UserDelete(ulong loginID) { MTRetCode mtRetCode = MTRetCode.MT_RET_ERROR; mtRetCode = this.m_manager.UserDelete(loginID); return(mtRetCode); }
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); }
//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); }
//+------------------------------------------------------------------+ //| 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); }
//+------------------------------------------------------------------+ //| 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); }
//+------------------------------------------------------------------+ //| 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); }
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; } }
//+------------------------------------------------------------------+ //| 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); }
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); } }
//+------------------------------------------------------------------+ //| 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); }
//+------------------------------------------------------------------+ //| 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); }
//+------------------------------------------------------------------+ //| 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); }
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); }
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); }
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); } }
//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); }
/// <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); }
//+------------------------------------------------------------------+ //| 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); }
public MT5Exception(string message, MTRetCode errorCode) : base(message) { ErrorCode = errorCode; }
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); }
public UserRequestReturnValue(MTRetCode mtRetCode, string cIMTUserJson) { this.mtRetCode = mtRetCode; this.cIMTUserJson = cIMTUserJson; }
public MT5Exception(string message, MTRetCode errorCode, Exception innerException) : base(message, innerException) { ErrorCode = errorCode; }
//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); }
//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); }
//return list of all groups at given server public List <CIMTConGroup> GetAllGroups() { MTRetCode res = MTRetCode.MT_RET_ERROR; return(this.GetAllGroups(out res)); }
//+------------------------------------------------------------------+ //| 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(); }
public MT5Exception(MTRetCode errorCode) : base() { ErrorCode = errorCode; }