Не работает пример из комплекта примеров S#
Atom Ответить
12.10.2011


Здравствуйте. Скачал себе библиотеку, установил SmartCom, решил запустить простейший консольный пример.
Кстати, этот же пример описан и в справке, называется "Создание первого робота"
Зарегистрировал демо-счет на ITInvest.

Так вот, пример скомпилировался, запустился и подключился к серверу, по крайней мере написал в консоли, что он это сделал.

После этого вывел строчку "Дожидаемся появления в программе инструмента Лукойл и портфеля ST8883" и больше ничего не происходит. Оставлял на сутки - ноль движения. Включал режим отладки - ошибок и exception нет. Просто ничего не происходит.

Пробовал подставить вместо инструмента LKOH другие - картина аналогична.

Причем SmartTrade к моему демо-счету прекрасно подключается, показывает котировки, ставит заявки - никаких проблем.

Вопрос - почему пример из комплекта поставки S# может не работать? Заранее спасибо всем откликнувшимся.

Теги:


Спасибо:




15 Ответов
esper

Фотография
Программист
Дата: 12.10.2011
Ответить


так понял инструмент меняли, а название портфеля?
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


esper Перейти
так понял инструмент меняли, а название портфеля?


А как это сделать? Там в примере только инструмент указывается:

Код
const string secCode = "LKOH";


и всё, остальное без изменений
Автор топика
Спасибо:

esper

Фотография
Программист
Дата: 12.10.2011
Ответить


Ага, в смарте название портфеля (счета) вводится при запуске программы. Т.е. ни портфель, ни инструмент не находятся?
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


Название счета я указываю при соединении, оно взято из письма о создании тестового аккаунта:

Код

                var account = "ST8883"; //Название счета

                IPAddress server = IPAddress.Parse("89.175.35.229");

                using (var waitHandle = new AutoResetEvent(false))
                {
                    // создаем шлюз к Smart-у
                    using (var trader = new SmartTrader(login, password, server))
                    {
                        // подписываемся на событие успешного подключения
                        // все действия необходимо производить только после подключения
                        trader.Connected += () =>
                        {
                            Console.WriteLine("Подключение было произведено успешно.");

                            // извещаем об успешном соединени
                            waitHandle.Set();
                        };

                        Console.WriteLine("Производим подключение...");

                        trader.Connect();

                        // дожидаемся события об успешном соединении
                        waitHandle.WaitOne();

                        // подписываемся на все портфели-счета
                        trader.NewPortfolios += portfolios =>
                        {
                            // необходимое условие работы в SmartCOM
                            portfolios.ForEach(trader.RegisterPortfolio);

                            if (_portfolio == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _portfolio = portfolios.FirstOrDefault(p => p.Name == account);

                                if (_portfolio != null)
                                {
                                    Console.WriteLine("Портфель {0} появился.", account);

                                    if (_lkoh != null)
                                        waitHandle.Set();
                                }
                            }
                        };

                        // подписываемся на событие появление инструментов
                        trader.NewSecurities += securities =>
                        {
                            if (_lkoh == null)
                            {
                                // находим Лукойл и присваиваем ее переменной lkoh
                                _lkoh = securities.FirstOrDefault(sec => sec.Code == secCode && sec.Type == SecurityTypes.Equity);

                                if (_lkoh != null)
                                {
                                    Console.WriteLine("Инструмент RTS появился.");

                                    if (_portfolio != null)
                                        waitHandle.Set();
                                }
                            }
                        };

                        // подписываемся на событие появления моих новых сделок
                        trader.NewMyTrades += myTrades =>
                        {
                            foreach (var myTrade in myTrades)
                            {
                                var trade = myTrade.Trade;
                                Console.WriteLine("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
                            }
                        };

                        Console.WriteLine("Дожидаемся появления в программе инструмента RTS и портфеля {0}...".Put(account));

                        // запускаем экспорт по инструментам и портфелям
                        trader.StartExport();


Вроде бы абсолютно всё как в примере, только логин-пароль-счет мои - и не работает. Полностью программа - во вложении
MiniMonster.rar 553,5KB (0)
Автор топика
Спасибо:

Alexander

Фотография
Дата: 12.10.2011
Ответить


Что в консоль выводится?
ни портфель ни инструмент не приходят?
processdataerror что-нибудь выводит?
подключение производится?
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


В консоль выводится 3 строчки:

Производим подключение...
Подключение было произведено успешно.
Дожидаемся появления в программе инструмента RTS и портфеля ST8883...

Цитата:

ни портфель ни инструмент не приходят?
processdataerror что-нибудь выводит?
подключение производится?


Не приходят.
processdataerror - что это? (я первый раз вижу S# и C#)
подключение видимо производится, раз программа об этом пишет
Автор топика
Спасибо:

Alexander

Фотография
Дата: 12.10.2011
Ответить


konstmal Перейти
Не приходят.
processdataerror - что это? (я первый раз вижу S# и C#)
подключение видимо производится, раз программа об этом пишет


Событие у трэйдера
посмотрите поднимается ли событие
и на события NewPortfolios \ NewSecurities посмотрите - дёргаются ли они вообще
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


Ставил точки останова в событиях. Срабатывает только в подключении, в других событиях не срабатывают
Автор топика
Спасибо:

Alexander

Фотография
Дата: 12.10.2011
Ответить


konstmal Перейти
Ставил точки останова в событиях. Срабатывает только в подключении, в других событиях не срабатывают


И всё же, ProcessDataError что выдаёт?
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


Alexander Mukhanchikov Перейти

И всё же, ProcessDataError что выдаёт?


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

Я выложил архив с исходниками несколькими постами раньше, полностью solution, может быть у вас будет минутка посмотреть?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.10.2011
Ответить


konstmal Перейти
Я выложил архив с исходниками несколькими постами раньше, полностью solution, может быть у вас будет минутка посмотреть?


Запустите SampleSmart. Что выводится?
Спасибо:

konstmal

Фотография
Дата: 12.10.2011
Ответить


Mikhail Sukhov Перейти

Запустите SampleSmart. Что выводится?


Запустил, подключился со своим логином-паролем.

Нажимаю на кнопку "Инструменты" - выходит пустое окно
Нажимаю "Портфели" -получаю окно в котором 2 строки:
ST8883-MS-01 0 100000 RUB 2 (на сером фоне)
ST8883-RF-01 0 100000 RUB 1 (на белом фоне)

Нажимаю "стоп-заявки" - пустое окно
"Сделки", "Мои сделки", "Заявки" - пустое окно

Экспорт - красная кнопка - нажимается но ничего не происходит

Вот так.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 12.10.2011
Ответить


konstmal Перейти
Экспорт - красная кнопка - нажимается но ничего не происходит

Вот так.


Боевой логин. Запуск примера из последнего дистрибутива (скачал только что). Все выводит и даже дает торговать. Тема на форуме АйТи про Т-счет. Не оно?
Спасибо:

konstmal

Фотография
Дата: 13.10.2011
Ответить


Mikhail Sukhov Перейти

Боевой логин. Запуск примера из последнего дистрибутива (скачал только что). Все выводит и даже дает торговать. Тема на форуме АйТи про Т-счет. Не оно?


Тему посмотрел, только непонятно, почему SmartTrade показывает и котировки и сделки, и позволяет заявки ставить под тем же логином-паролем и по тому же счету?

А есть какая то разница, в какой момент запускать робота? или сервер обязан круглосуточно работать?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.10.2011
Ответить


konstmal Перейти
Тему посмотрел, только непонятно, почему SmartTrade показывает и котировки и сделки, и позволяет заявки ставить под тем же логином-паролем и по тому же счету?


Это решение АйТи, к ним и нужно обращаться. Видимо, есть разница между СмартКом и СмартТрейд.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy