работа со SmartCOM: System.NullReferenceException
Atom Ответить
17.08.2010


Добрый день!

Только осваиваю библиотеку применительно к SmartCOM. Для разработки
пользуюсь SmartCOM2, S# 2.0.1 и MS Visual C# 2010 экспресс выпуск, ОС
лицензионная Windows 7 х64.

SmartCOM и SmartTrader установлены, в SmartTrader настроил параметры
демо-счёта - соединение идёт нормально.

В MSVC# открываю решение, запускаю проект SampleSmart или любой из
тех что предназначены для SmartCOM, ввожу login и pass, нажимаю
подключить и вылетает сообщение об исключении:
System.NullReferenceException: ссылка на объект не указывает на
экземпляр объекта, и дальше ещё текст.

Что за ошибка? Процесс SmartCOM2 работает, исходники я не трогал.

Вот ещё выложил скриншот с ошибкой, может что-то прояснит.

http://narod.ru/disk/23819109000/ScreenShot.jpg.html


Заранее благодарю за ответ и большое спасибо за библиотеку!

Теги:


Спасибо:




9 Ответов
Mikhail Sukhov

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


Судя по ошибки падает на обработчике новых портфелей. Конкретнее
сказать не могу, с тестовым счетом не работал. Поставьте точку
останова на обработчик NewPortfolios. А вообще все это странно.
Портфели должны приходить только после запуска экспорта (кнопка
Экспорт). Видимо ребята из АйТи что-то еще не доделали для демо
доступа.

Спасибо:

Антон Сухов

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


this.Trader.NewPortfolios += portfolios =>
{
// регистрирует портфели на обновление данных

portfolios.ForEach(this.Trader.RegisterPortfolio); //
сюда ставил стоп
this.GuiAsync(() =>
_portfoliosWindow.Portfolios.AddRange(portfolios));

Ставил стоп по Вашей рекомендации, но до него дело не доходит, ошибка
вылетает, программа дальше работает, но там везде пусто.

Как быть? Реального счёта пока нет в айти инвест..
Автор топика
Спасибо:

Mikhail Sukhov

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


Завтра гляну, что там за чехарда.

Спасибо:

Mikhail Sukhov

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


Оказывается, эта вещь и вечером работает, только торговать не дает...
Нашел две особенности. Во-первых, демо доступ располагается по другому
адресу. Его надо задавать. Во-вторых, SmartTrader не совсем корректно
обрабатывает демо счет (исправлю в 2.3). Вообщем, вот код, как надо
создавать шлюз под демо счет:

this.Trader = new SmartTrader(this.Login.Text, this.Password.Password,
"89.175.35.229".To<IPAddress>()) { IsAutoSaveOrders = false };

Спасибо:

Антон Сухов

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


Михаил, благодарю за ответ! Как потестю отпишу результаты!
Автор топика
Спасибо:

Антон Сухов

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


Потестил, работает! Спасибо большое, будем работать дальше!
Автор топика
Спасибо:

Антон Сухов

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


Возникли ещё проблемки. Запустил сегодня вне торг сессии: нажимаю
портфель - показывает всё как надо, 100000 тестовых денег. Сейчас
запускал во время торгов. Показывает в окне Портфели: название St1061,
а остальное всё по нулям. Открыл сам терминал SmartTrader, посовершал
несколько сделок. Закрыл. Открываю программу-> Сделки: показывает все
сделки которые совершал, цены, суммы, количество - всё нормально, но
там где название инструмента - пусто. В заявках тоже самое -
инструменты пустые.

Где собака порылась? Заранее спасибо!
Автор топика
Спасибо:

Mikhail Sukhov

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


Начну с конца.

Во-первых ссылкаhttps://stocksharp.ru/doc/help/html/84ca931f-bba3-41e6-9c7f-c93278c61658.htm

(второй пункт). У СмартКома есть большая проблема - не посылает
информацию о заявках. А сделка требует эту инфу (не бывает сделки без
заявки). Поэтому, если торгуете, то торгуйте или через робот, или
через терминал. Потому как робот ваши заявки не увидит. Вернее, даже
не неувидит, а S# сэмулирует заявки, подставив в них пыстые параметры
(чтобы хоть как то вывести информацию). Поэтому и инфа будет пуста...
Разработчики клянуться что поправят это, но воз уже пол года как на
одном месте. ;-/

По нулям - это что? Денег в портфеле? Опять же старый добрый
обработчик NewPortfolios. Там что приходит?

И небольшое уточнее. Терминал - это SmartTrade. А SmartTrader - это
моя шлюз к SmartCOM. Их у меня несколько (QuikTrader, SmartTrader,
AlorTrader, MultiTrader и еще несколько не для публики).

Спасибо:

Антон Сухов

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


Ок, немного разбираюсь, спасибо.

Да, показывает что в портфеле плечо=0, вх средства=0, PL=0. Самое
интересное что когда вне торговой сесиии запускал прогу - портфель
отображался как надо, вот в чём загвоздка.
Автор топика
Спасибо:


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

loading
clippy