Esempio n. 1
0
        private void startThread()
        {
            Thread.CurrentThread.IsBackground = true;
            lmaxApi = new LmaxApi(DEMO_URL);
            LoginRequest loginRequest = new LoginRequest(textBox1.Text, textBox2.Text, ProductType.CFD_DEMO);

            lmaxApi.Login(loginRequest, LoginCallback, FailureCallback("log in"));
        }
Esempio n. 2
0
        private void Reconnect()
        {
            if (_api == null)
            {
                _api = new LmaxApi(Url);
            }

            _api.Login(new Com.Lmax.Api.LoginRequest(Username, Password, _productType), ReLoginCallback, ReconnectFailureCallback);
        }
Esempio n. 3
0
        public void Start()
        {
            if (_api == null)
            {
                _api = new LmaxApi(Url);
            }

            _api.Login(new Com.Lmax.Api.LoginRequest(Username, Password, _productType), LoginCallback, FailureLoginCallback);
        }
Esempio n. 4
0
    public void fm()
    {
        ProductType productType = !this.i.type.Contains("CFD_DEMO") ? ProductType.CFD_LIVE : ProductType.CFD_DEMO;

        while (true)
        {
            LmaxApi lmaxApi = new LmaxApi(this.i.url);
            this.i.WriteLog("Attempting to login to: " + this.i.url + " as " + this.i.login);
            lmaxApi.Login(new LoginRequest(this.i.login, this.i.password, productType), new OnLogin(this.a1), b_сlass.a1("Failed to log in"));
            this.i.WriteLog("Logged out, pausing for 10s before retrying...");
            Thread.Sleep(10000);
        }
    }
        private void DisposeApi()
        {
            if (SessionHolder.Session != null)
            {
                Session.HeartbeatReceived -= OnSessionHeartbeatReceived;
                Session.EventStreamSessionDisconnected -= OnSessionEventStreamSessionDisconnected;

                SessionHolder.Session = null;
            }

            _isSessionOwner = false;
            _api            = null;
        }
        /// <summary>
        /// очистить ресурсы используемые клиентом
        /// </summary>
        public void Dispose(bool needSendLogOutMsg = false)
        {
            _inWork = false;

            if (needSendLogOutMsg)
            {
                _tradingSession?.Send(_creator.LogOutMsg(true));
                Thread.Sleep(1000);
            }

            _tradingSession?.Dispose();
            _session?.Stop();
            _lmaxApi = null;
        }
Esempio n. 7
0
        private void Reconnect(byte delayInSeconds = 0)
        {
            if (delayInSeconds > 0)
            {
                Thread.Sleep(delayInSeconds * 1000);
            }

            if (_api == null)
            {
                _api = new LmaxApi(Uri);
            }

            _api.Login(new Com.Lmax.Api.LoginRequest(AccountInfo.UserName, AccountInfo.Password, _productType),
                       ReloginCallback, ReconnectFailureCallback);
        }
Esempio n. 8
0
        public override void Login(AccountInfo account)
        {
            AccountInfo = account;
            AccountInfo.IsMarginAccount = true;
            if (_api == null)
            {
                _api = new LmaxApi(Uri);
            }

            _api.Login(new Com.Lmax.Api.LoginRequest(AccountInfo.UserName, AccountInfo.Password, _productType), session =>
            {
                _session             = session;
                AccountInfo.ID       = _session.AccountDetails.AccountId.ToString();
                AccountInfo.Currency = _session.AccountDetails.Currency;
            }, LoginFailureCallback);
        }
        /// <summary>
        /// конструктор
        /// </summary>
        public LmaxFixClient(string fixTradingIp, string fixMarketDataIp, string uiUrl, int port, string username, string password, DateTime startWorkingTime, DateTime endWorkingTime)
        {
            if (string.IsNullOrEmpty(username) ||
                string.IsNullOrEmpty(password) ||
                string.IsNullOrEmpty(fixTradingIp) ||
                string.IsNullOrEmpty(uiUrl) ||
                port <= 0)
            {
                SendLogMessage("Не удалось начать подключение, отсутствует один или несколько обязательных параметров", LogMessageType.Error);
                return;
            }

            _startWorkingTime = startWorkingTime;
            _endWorkingTime   = endWorkingTime;

            _fixTradingIp    = fixTradingIp;
            _fixMarketDataIp = fixMarketDataIp;
            _uiUrl           = uiUrl;
            _userName        = username;
            _password        = password;
            _port            = port;
            _isDemo          = uiUrl.Contains("demo");

            var settings = new StandartHeaderSettings
            {
                BeginString     = BeginString,
                SenderCompId    = username,
                TargetCompIdTrd = _targetCompIdTrd,
                TargetCompIdMd  = _targetCompIdMd,
                Username        = username,
                Password        = password
            };

            _creator = new FixMessageCreator(settings);
            _parser  = new FixMessageParser();

            _lmaxApi = new LmaxApi(_uiUrl);

            IsCreated = true;
        }
Esempio n. 10
0
        /// <summary>
        /// constructor
        /// конструктор
        /// </summary>
        public LmaxFixClient(string fixTradingIp, string fixMarketDataIp, string uiUrl, int port, string username, string password, DateTime startWorkingTime, DateTime endWorkingTime)
        {
            if (string.IsNullOrEmpty(username) ||
                string.IsNullOrEmpty(password) ||
                string.IsNullOrEmpty(fixTradingIp) ||
                string.IsNullOrEmpty(uiUrl) ||
                port <= 0)
            {
                SendLogMessage(OsLocalization.Market.Label57, LogMessageType.Error);
                return;
            }

            _startWorkingTime = startWorkingTime;
            _endWorkingTime   = endWorkingTime;

            _fixTradingIp    = fixTradingIp;
            _fixMarketDataIp = fixMarketDataIp;
            _uiUrl           = uiUrl;
            _userName        = username;
            _password        = password;
            _port            = port;
            _isDemo          = uiUrl.Contains("demo");

            var settings = new StandartHeaderSettings
            {
                BeginString     = BeginString,
                SenderCompId    = username,
                TargetCompIdTrd = _targetCompIdTrd,
                TargetCompIdMd  = _targetCompIdMd,
                Username        = username,
                Password        = password
            };

            _creator = new FixMessageCreator(settings);
            _parser  = new FixMessageParser();

            _lmaxApi = new LmaxApi(_uiUrl);

            IsCreated = true;
        }
Esempio n. 11
0
        private void DisposeApi()
        {
            if (_session != null)
            {
                _session.HeartbeatReceived -= OnSessionHeartbeatReceived;
                _session.EventStreamSessionDisconnected -= OnSessionEventStreamSessionDisconnected;

                _session.InstructionRejected -= OnSessionInstructionRejected;
                _session.AccountStateUpdated -= OnSessionAccountStateUpdated;
                _session.OrderChanged        -= OnSessionOrderChanged;
                _session.PositionChanged     -= OnSessionPositionChanged;
                _session.OrderExecuted       -= OnSessionOrderExecuted;

                _session.EventStreamFailed          -= OnSessionEventStreamFailed;
                _session.HistoricMarketDataReceived -= OnSessionHistoricMarketDataReceived;
                _session.MarketDataChanged          -= OnSessionMarketDataChanged;
                _session.OrderBookStatusChanged     -= OnSessionOrderBookStatusChanged;

                _session = null;
            }

            _api = null;
        }
Esempio n. 12
0
        /// <summary>
        /// Send message.
        /// </summary>
        /// <param name="message">Message.</param>
        protected override void OnSendInMessage(Message message)
        {
            switch (message.Type)
            {
            case MessageTypes.Reset:
            {
                _isHistoricalSubscribed = false;

                if (_session != null)
                {
                    try
                    {
                        _session.Stop();
                        _session.Logout(OnLogoutSuccess, OnLogoutFailure);
                    }
                    catch (Exception ex)
                    {
                        SendOutError(ex);
                    }

                    _session = null;
                }

                SendOutMessage(new ResetMessage());

                break;
            }

            case MessageTypes.Connect:
            {
                if (_session != null)
                {
                    throw new InvalidOperationException(LocalizedStrings.Str1619);
                }

                if (_api != null)
                {
                    throw new InvalidOperationException(LocalizedStrings.Str3378);
                }

                _isDownloadSecurityFromSite = IsDownloadSecurityFromSite;

                _api = new LmaxApi(IsDemo ? "https://web-order.london-demo.lmax.com" : "https://api.lmaxtrader.com");
                _api.Login(new LoginRequest(Login, Password.To <string>(), IsDemo ? ProductType.CFD_DEMO : ProductType.CFD_LIVE), OnLoginOk, OnLoginFailure);

                break;
            }

            case MessageTypes.Disconnect:
            {
                if (_session == null)
                {
                    throw new InvalidOperationException(LocalizedStrings.Str1856);
                }

                _session.Stop();
                _session.Logout(OnLogoutSuccess, OnLogoutFailure);
                _session = null;

                break;
            }

            case MessageTypes.PortfolioLookup:
            {
                ProcessPortfolioLookupMessage();
                break;
            }

            case MessageTypes.OrderStatus:
            {
                ProcessOrderStatusMessage();
                break;
            }

            case MessageTypes.Time:
            {
                _session.RequestHeartbeat(new HeartbeatRequest(TransactionIdGenerator.GetNextId().To <string>()), () => { }, CreateErrorHandler("RequestHeartbeat"));
                break;
            }

            case MessageTypes.OrderRegister:
            {
                ProcessOrderRegisterMessage((OrderRegisterMessage)message);
                break;
            }

            case MessageTypes.OrderCancel:
            {
                ProcessOrderCancelMessage((OrderCancelMessage)message);
                break;
            }

            case MessageTypes.SecurityLookup:
            {
                ProcessSecurityLookupMessage((SecurityLookupMessage)message);
                break;
            }

            case MessageTypes.MarketData:
            {
                ProcessMarketDataMessage((MarketDataMessage)message);
                break;
            }
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Отправить сообщение.
        /// </summary>
        /// <param name="message">Сообщение.</param>
        protected override void OnSendInMessage(Message message)
        {
            switch (message.Type)
            {
            case MessageTypes.Connect:
            {
                if (SessionHolder.Session == null)
                {
                    _isSessionOwner = true;

                    if (_api != null)
                    {
                        throw new InvalidOperationException(LocalizedStrings.Str3378);
                    }

                    _api = new LmaxApi("https://{0}api.lmaxtrader.com".Put(SessionHolder.IsDemo ? "test" : string.Empty));
                    _api.Login(new LoginRequest(SessionHolder.Login, SessionHolder.Password.To <string>(), SessionHolder.IsDemo ? ProductType.CFD_DEMO : ProductType.CFD_LIVE), OnLoginOk, OnLoginFailure);
                }
                else
                {
                    SendOutMessage(new ConnectMessage());
                }

                break;
            }

            case MessageTypes.Disconnect:
            {
                if (!_isSessionOwner)
                {
                    SendOutMessage(new DisconnectMessage());
                    break;
                }

                Session.Stop();
                Session.Logout(OnLogoutSuccess, OnLogoutFailure);

                break;
            }

            case MessageTypes.PortfolioLookup:
            {
                Session.Subscribe(new AccountSubscriptionRequest(), () => { }, CreateErrorHandler("AccountSubscriptionRequest"));
                Session.Subscribe(new PositionSubscriptionRequest(), () => { }, CreateErrorHandler("PositionSubscriptionRequest"));
                break;
            }

            case MessageTypes.OrderStatus:
            {
                Session.Subscribe(new ExecutionSubscriptionRequest(), () => { }, CreateErrorHandler("ExecutionSubscriptionRequest"));
                Session.Subscribe(new OrderSubscriptionRequest(), () => { }, CreateErrorHandler("OrderSubscriptionRequest"));
                break;
            }

            case MessageTypes.Time:
            {
                var timeMsg = (TimeMessage)message;
                Session.RequestHeartbeat(new HeartbeatRequest(timeMsg.TransactionId), () => { }, CreateErrorHandler("RequestHeartbeat"));
                break;
            }

            case MessageTypes.OrderRegister:
            {
                ProcessOrderRegisterMessage((OrderRegisterMessage)message);
                break;
            }

            case MessageTypes.OrderCancel:
            {
                var cancelMsg = (OrderCancelMessage)message;
                Session.CancelOrder(new CancelOrderRequest(cancelMsg.TransactionId.To <string>(), (long)cancelMsg.SecurityId.Native, cancelMsg.OrderTransactionId.To <string>()), id => { }, CreateErrorHandler("CancelOrder"));
                break;
            }

            case MessageTypes.SecurityLookup:
            {
                var lookupMsg = (SecurityLookupMessage)message;
                ProcessSecurityLookupMessage(lookupMsg);
                break;
            }

            case MessageTypes.MarketData:
            {
                var mdMsg = (MarketDataMessage)message;
                ProcessMarketDataMessage(mdMsg);
                break;
            }
            }
        }