//для работы нужно подлючить 2 библиотеки network.dll UT.dll //UT API //подключение UTClient.Instance.Connect("some ip", port, "login", "password", new List { "ACCOUNT1" }, InitializationType.Full); // инициализация InitializationType.Full или InitializationType.SnapShot, SnapShot предпочтительнее, не происходит перекачки при каждом подключении лога всех торговый действий за сессию //соединение поддерживается автоматически UTClient.Instance.OnUpdateState += OnUpdateState; //обработка событий подключения void OnUpdateState(UT.Events.StateEventArgs args) { if (args.State == UTClient.ClientStateEnum.Connecting) { } else if (args.State == UTClient.ClientStateEnum.Connected) { } else if (args.State == UTClient.ClientStateEnum.Disconnected) { } else if (args.State == UTClient.ClientStateEnum.Failure) { } } UTClient.Instance.RealTime //флаг однозначно показывающий, что события по ордерам и исполнения приходят в онлайне, а не из прогрузки лога за день UTClient.Instance.DefaultMarket() //возвращает рынок по умолчанию заданный для аккаунта UTClient.Instance.DefaultAccount() //возвращает аккаунт по умолчанию UTClient.Instance.DefaultMarket().Positions.ToList() //позиции по рынку, если на логине 1 аккаунт то это равносильно позициям по аккаунту UTClient.Instance.DefaultAccount().Positions.ToList() //позиции по аккаунту UTClient.Instance.DefaultMarket().ActiveOrders().ToList() //активные ордера по рынку UTClient.Instance.DefaultAccount().ActiveOrders().ToList() //активные ордера по аккаунту UTClient.Instance.OnUpdateOrderStatus += OnUpdateOrderStatus; //событие об изменении ордера UTClient.Instance.OnExecution += OnExecution; //событие о исполнении void OnExecution(UT.Events.OrderExecutionEventArgs args) { } void OnUpdateOrderStatus(UT.Events.OrderStatusEventsArgs args) { } //отправка ордера var on = new OrderNew(); on.SymbolId = _market.InstrumentFind("FB").Id; on.AccountId = _market.AccountFind("account").Id; var r = new Random(); on.TimeInForce = TimeInForceEnum.TIFDay; on.ClOrdId = "C" + r.Next(0,10000); //клиентский ид, он будет вернут в событии OnUpdateOrderStatus и дополнен ServerId, который нужно будет запомнить, так как исполнения будут приходить только с ServerId on.Price = 79.00000M; on.Side = SideEnum.SideSell; on.OrderQty = 1; on.InstanceId = _market.InstanceId; on.OrdType = OrdTypeEnum.OTLimit; on.ExDestination = "ARCA"; UTClient.Instance.SendOrder(on); //отмена var ord = _market.GetOrder(serverId); UTClient.Instance.CancelOrder(ord); //также можно инстанцировать класс UTClient и работать не со статическим экземпляром