← Zurück

Запуск дде вывода без коннекта к Quik

Здравствуйте. Возможно ли запустить дде вывод без предварительного коннекта к терминалу? Хочу использовать S# просто для сбора нужной информации в таблицах..

И предложение: может быть на форуме стоит завести ветку, в которой можно будет спрашивать общие вопросы по квику, смарту и т.д. ? Просто есть еще один вопрос, но не знаю куда задать)))

Вопрос следующий: может кто-нибудь подсказать, откуда(из каких таблиц) в квике можно достать информацию о балансе счета, который будет, если закрыть все текущие позиции по текущим котировкам? Т.е. нужна цифра=текущим денежным средствам+плавающий PnL по фортсу и ммвб Что касается ММВБ, если я не ошибаюсь, нам нужно из таблицы "Клиентский портфель" взять столбец "Текущие средства", правильно? А вот с фортсом вообще лично у меня непонятка. Может кто-нибудь подсказать?

War dieses Thema hilfreich?

Thema teilen

Kommentare (18)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

Andrey R.: И предложение: может быть на форуме стоит завести ветку, в которой можно будет спрашивать общие вопросы по квику, смарту и т.д. ? Просто есть еще один вопрос, но не знаю куда задать)))

Как минимум не в топике "Запуск дде вывода без коннекта к Quik"😉

Watson
Watson
  1. В квике делаем таблицу из Торговля - Фьючерсы - Ограничения по клиентским счетам
  2. Выводим в свою программу. За основу можно взять пример SampleDdeCustomTable
  3. Учитываем особенность, что после вечернего клиринга у нас появляется три строчки, две из которых на утро пропадают.
Andrey R.
Andrey R. Autor

С этим всем разобрался, а касательно первого вопроса есть ответ?

Возможно ли запустить дде вывод без предварительного коннекта к терминалу? Хочу использовать S# просто для сбора нужной информации в таблицах..

Maxim
Maxim

Andrey R.: С этим всем разобрался, а касательно первого вопроса есть ответ?

Возможно ли запустить дде вывод без предварительного коннекта к терминалу? Хочу использовать S# просто для сбора нужной информации в таблицах..

Присоединяюсь к вопросу.

Если Квик не соединен с сервером, при попытке установить соединение QuikTrader.Connect() происходит ошибка: Exception message: Код ошибки DllConnected Сообщение Терминал не подключен к серверу..

Но. Если S# был подключен к Квик во время торгов. В конце рабочего дня Квик потерял соединение с сервером, а наутро следующего восстановил связь с сервером. При этих действиях S# не потерял связь с Квиком.

Из этого можно сделать вывод, что связь S# с Квиком в отсутствии связи с сервером возможна.

Михаил, правильно ли я понимаю ситуацию или где то ошибаюсь? Возможно ли реализовать возможность подключения S# к Квику в отсутствии связи с сервером?

dart
dart

Maxim: Возможно ли реализовать возможность подключения S# к Квику в отсутствии связи с сервером? Присоединяюсь к вопросу. Для меня вопрос в удобстве работы с S#. Например, брокер включает свой сервер только за 20 мин до начала торгов. То есть если мне надо запустить робота до начала торгов (а так часто нужно, к примеру поменял параметры системы и перезапускаю), то вынужден быть у рабочего компа скажем в 9:40.

Alexander
Alexander

dart:

Maxim: Возможно ли реализовать возможность подключения S# к Квику в отсутствии связи с сервером? Присоединяюсь к вопросу. Для меня вопрос в удобстве работы с S#. Например, брокер включает свой сервер только за 20 мин до начала торгов. То есть если мне надо запустить робота до начала торгов (а так часто нужно, к примеру поменял параметры системы и перезапускаю), то вынужден быть у рабочего компа скажем в 9:40.

А кто мешает сделать это средствами C#?

private DispatcherTimer _startStopTimer;

        private void InitAndStartTimer()
        {
            _startStopTimer = new DispatcherTimer {Interval = new TimeSpan(0, 10, 0), Tag = false};
            _startStopTimer.Tick += StartStopTimerTick;
            _startStopTimer.Start();
        }

        private void StartStopTimerTick(object sender, EventArgs e)
        {
            var started = (bool)_startStopTimer.Tag;
            if (!started &&
                DateTime.Now.Hour == 9 && DateTime.Now.Minute >= 45)
            {
                ManageConnect();
                return;
            }
        }

Ну а в событиях Connected \ Disconnected проставляйте необходимый Tag у _startStopTimer

Maxim
Maxim

Alexander: А кто мешает сделать это средствами C#?

Никто не мешает. Но с таким подходом зачем пользоваться S#? Можно ведь весь код самому писать.

Да чего там мелочится, можно и ОС написать побыстренькому 🙂 Шучу.

Библиотека для того и существует, что бы можно было не изобретать велосипед, а пользоваться уже созданным кодом. Если Михаил скажет, что данный функционал не будет реализован в библиотеке или будет реализован, но когда не известно, тогда можно писать свое решение в коде. Если же Михаил скажет, что скоро этот функционал будет, то можно и подождать.

Mikhail Sukhov
Mikhail Sukhov

Maxim: Если же Михаил скажет, что скоро этот функционал будет, то можно и подождать.

Скоро точно не будет. Есть другие танкоопасные направления, где 10 строчками пользовательского кода не решить проблему.

Maxim
Maxim

День добрый. Реанимирую эту ветку форума.

Выше я спрашивал следующее:

Maxim: Если Квик не соединен с сервером, при попытке установить соединение QuikTrader.Connect() происходит ошибка: Exception message: Код ошибки DllConnected Сообщение Терминал не подключен к серверу..

Но. Если S# был подключен к Квик во время торгов. В конце рабочего дня Квик потерял соединение с сервером, а наутро следующего восстановил связь с сервером. При этих действиях S# не потерял связь с Квиком.

Из этого можно сделать вывод, что связь S# с Квиком в отсутствии связи с сервером возможна.

Михаил, правильно ли я понимаю ситуацию или где то ошибаюсь? Возможно ли реализовать возможность подключения S# к Квику в отсутствии связи с сервером?

В результате Alexander Mukhanchikov предложил реализовать таймер и периодически пытаться подключится к Квик. А позже сообщил, что этот механизм уже реализован в 3.2 Насколько я понимаю, он реализован в виде BaseTrader.ReConnectionSettings.

Это все хорошо, но не совсем отвечает на поставленный мной вопрос.

Повторю суть моего вопроса: можно ли подключаться к Квику и работать с ним, когда Квик не подключен к серверу? Например, запрашивать данные, которые остались в его таблицах.

Возможно ли это вообще? Или это никак в принципе нельзя реализовать? Или это уже все есть и я пропустил? (Использую старую версию 3.1.8, возможно в новой версии это все уже есть 🙂 )

UPD в этом посте есть такая фраза http://stocksharp.com/posts/m/11466/

«Quik: Запуск дде вывода без коннекта к Quik»

Это как раз то, о чем я спрашивал? Или что то другое?

Alexander
Alexander

В 3.2 уже работает - пользуйтесь, кому было необходимо. 😎

Alexander
Alexander

Да. В вашей версии это тоже уже вроде было. Порой легче попробовать чем спрашивать и ждать ответа :)

Maxim
Maxim

В моей версии этого нет. Или надо как-то отдельно это активировать. Так как при попытке подключится к Квику, когда он не подключен к серверу, я получаю всю туже ошибку: Exception message: Код ошибки DllConnected Сообщение Терминал не подключен к серверу

Mikhail Sukhov
Mikhail Sukhov

Maxim: В моей версии этого нет. Или надо как-то отдельно это активировать. Так как при попытке подключится к Квику, когда он не подключен к серверу, я получаю всю туже ошибку: Exception message: Код ошибки DllConnected Сообщение Терминал не подключен к серверу

Подключаться к Квику, не подключенному к торгам, нельзя.

Maxim
Maxim

Mikhail Sukhov: Подключаться к Квику, не подключенному к торгам, нельзя.

О. Получил таки ответ на вопрос :)

Очень жаль. Это из-за Квика так или из-за реализации S#?

Mikhail Sukhov
Mikhail Sukhov

Maxim: Очень жаль. Это из-за Квика так или из-за реализации S#?

Код ошибки DllConnected Сообщение Терминал не подключен к серверу - это сообщение от Квика. Что логично, так как нет смысла производить подключение.

Maxim
Maxim

Mikhail Sukhov: Код ошибки DllConnected Сообщение Терминал не подключен к серверу - это сообщение от Квика. Что логично, так как нет смысла производить подключение.

Почему логично?

Я вижу по-крайней мере две причины подключиться к Квику, когда он не подключен к Серверу.

  1. Квик отключился от сервера, но в его таблицах остались данные. Можно подключиться к нему и воспользоваться этими данными.

  2. Квик не подключен к серверу. Подключится к нему и ждать, когда он заработает для осуществления своей деятельности. Сейчас этот вопрос, правда, реализован в BaseTrader.ReConnectionSettings, путем периодических попыток установить соединение с Квиком.

MoRGaN
MoRGaN

Если квик запущен и в таблицах квика есть данные, то даже если сам квик к серверу не подключен начать экспорт данных получается проигнорировав событие ConnectionError. Постоянно пользуюсь для отладки на данных торгового дня после завершения торгов. Естественно, стакан получить не удастся, но таблицу всех сделок и собственных сделок/заявок - вполне.

Mikhail Sukhov
Mikhail Sukhov

MoRGaN: Если квик запущен и в таблицах квика есть данные, то даже если сам квик к серверу не подключен начать экспорт данных получается проигнорировав событие ConnectionError. Постоянно пользуюсь для отладки на данных торгового дня после завершения торгов. Естественно, стакан получить не удастся, но таблицу всех сделок и собственных сделок/заявок - вполне.

На последней версии (что в КодеПлексе) работает запуск экспорта при отключенном интернете. ConnectionError быть не может просто потому, что я не соединяюсь в коде. И конечно же он будет, если пытаться соединится.