Stock# + SmartCom для чайников, первый опыт


Stock# + SmartCom для чайников, первый опыт
Atom Reply
9/12/2010


думаю это поможет начинающим сделать первые шаги в освоении .....
Респект автору за создание данной библиотеки, но уровень ее далек для
понимания начинающими... сам когда то неплохо писал на процедурных
языках, но тут совсем другое...несколько месяцев изучал С#, создавал
структуру классов, когда увидел Stock#....
Зачем изобретать то, что уже сделано? Оказалось не тут то было...)
Решил попробовать и что из этого вышло:
У меня хороший комп (4 ядра 2.83ГГц и 8 Гиг памяти), Windows 7 x 64
+ .NET FW 4 + VS 2010 Express... установил SmarCom 2 и протестил его
на примерах из ветки АйТи (у меня там реальный счет) работает....
Поставил проект S# 2.4 и начал пробовать:
1. Ни один из проектов не захотел работать, пока не поставил ручками
ссылку на Смартком и не добавил using StClientLib;
Может у меня смартком не тот или установлен не там, но нигде инфы об
этом я не нашел. Да и как я понял 99% инфы под Квик....
2. запустил консольное решение и порадовался - заработало...))
3. поменял эмитента на RIU0, и опять не пошло.... пока не поменял
SecurityTypes.Equity на SecurityTypes.Future....
мелочи конечно, но новичков вышибает из колеи...
Буду пробовать другие решения и комментировать их....

Tags:


Thanks:




31 Answers
1 2  >
Craft

Avatar
Date: 9/12/2010
Reply


Спасибо, Valery, хорошее начинание.
Thanks:

Valery

Avatar
Date: 9/12/2010
Reply


SampleSmart

Подключение произошло успешно, но ...
1. При нажатии экспорт пришлось значительное время подождать, пока
кнопка не стала красной... как я понимаю это означает, что можно
работать дальше. Или нет?
2. Кликнув на Инструменты открылось окно , где выбрал фьючи , РТС и
конкретный РИУ
3. Дальнейшие действия ничего не дали кроме исключений....
4. Портфель и другие окна были пустые ... будем копать в коде...
5. Попытка отключиться ничего не дала ... пришлось прерывать
принудительно...
6. Анализ кода привел к выводам, что кода в остальных окнах просто
нет - просто вывод окна и все....

Хотелось бы знать, кто еще тестил это решение? Может у меня что не
так ? Или это просто пример недописан? Если так ( я понимаю, что автор
и так загружен), то хотя бы можно написать, что примеры не проверены...

Попробуем следующее решение....

Topic starter
Thanks:

Valery

Avatar
Date: 9/12/2010
Reply


SampleSmartCandles

Так же подключился, кликнул Экспорт и .... Жду... сколько ждать, непонятно
правда.... Периодически пытаюсь посмотреть Инструмент.... Кстати кнопка
Подключиться стала недоступной (серой) . Полагаю Экспорт закончится,
когда эта кнопка вновь станет доступной....
Что происходит во время экспорта непонятно? ... дебаггер тоже молчит, не
ругается....

Думаю не один я это делал, но почему то никто не комментирует ....
Типа пусть другие сами понаступают на грабли...
Короче надо разбираться....

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/12/2010
Reply


Демо подключение или реальное? "Ни один из проектов не захотел
работать, " в чем именно выражалось? В выскакивающей ошибке, в падении
примера или просто не реагировании примера на пользовательские
действия?

Thanks:

Valery

Avatar
Date: 9/13/2010
Reply


Еще раз о SampleSmart

При выборе Лукойл на Мамбе все работает в окне инструменты.
При возврате на РИУ заявки выходят и даже видно номера счетов....
Но при вызове стакана получаем
Невозможно вычислить выражение, поскольку текущий поток находится в
состоянии переполнения стека.}
В строке
this.Trader.ProcessDataError += error => this.GuiAsync(() =>
MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));

Попробуем снова... создадим пару заявок в портфеле..... после этого
портфель стал виден в окне Портфель... чудно однако... но в окнах заявок
так ничего и не видно...

Да еще момент... кнопка Экспорт отрабатывается достаточно долго... Обычно
Смарт также тормозит, когда обновляются справочники... тут похоже то же
самое. Только в Смарте это происходит один раз после установки, а тут
при каждом запуске... не айс, но наверняка есть способ это победить...

Вернемся снова к мамбе .
Выбрали сбер. Стакан открывается без проблем, правда вверх ногами, но
это поправимо...))
Ну тут при создание заявки создается исключение и подвешивает прогу
намертво....
Повторный запуск отказал в заявке - мало средств, но это уже
правильно.... Но в окне Портфель пусто, хотя на фортсе есть поза....
Кнопка Бид-Оффер не работает, но полагаю в выхи это нормально..
Ладно, будем считать, что это решение тест прошло.. можно доработать
....

Topic starter
Thanks:

Valery

Avatar
Date: 9/13/2010
Reply


И на десерт SampleSmartSMA

Попытка подключиться вызвала сразу исключение... Подозреваю, что связано
с новой версией Смарткома..
В диспетчере задач висит процесс, который я никак не могу завершить....
Vshost32-dr2.exe

Завтра попробую со старой....

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/13/2010
Reply


Непобедимый эффект WPF. Проге не виснет, просто окно с ошибкой -
модальное, и уходит на другой план. Приходится на Alt+Tab нажимать.

Судя по продвижению, все таки примеры заработали? Если да, то мой
первый вопрос насчет "Ни один из проектов не захотел работать, пока не
поставил ручками
ссылку на Смартком и не добавил using StClientLib; " В чем это
выражалось? Проекты не компилировались? Компилировалось, но возникала
ошибка при запуске? Или все запускалось но не реагировало на
пользовательский ввод.

Thanks:

Mikhail Sukhov

Avatar
Date: 9/13/2010
Reply


Все исключения, ошибки, шаги для воспроизведения - пишите сюда. Потому
что очень сложно догадаться, что за исключение возникло на Вашей
машине.

Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


я хоть и не программист, но стараюсь писать четко...)) Именно не
заработали... при запуске реакция на кнопки =0....)))
так как все же по поводу ссылки - ее нужно добавлять?
у меня на ноуте стоял старый смартком по стандартному пути....с ним
работало без добавления....при переустановке Смарткома все работать
перестало.... я заметил, что изменился путь установки Смарткома... в
связи с чем я хотел бы уточнить, как библиотека находит Смартком? А
она его находит... По пути инсталяции?
:)

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2010
Reply


Лучше просто текст ошибки. Ctrl+C - если запущено не под Debug (как
обычное exe). Или из студии, при наведении на иконку ошибки.

А на какую версию переставили? Та, которая сейчас бета - 2.0? Или на
1.1.6.2

Библиотека ее не находит. Смарком сам приходит =) Это такая
особенность COM технологии. Через реестр пути указаны.

Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


И снова SampleSmartSMA

Запустил этот проект на своем старом ноуте с ХР, VS2010 + FW 3.5 +
Smartcom 1162
Забавные ребята из АйТи - новая версия Смарткома ставится по новому
пути ... сразу не заметишь....
Кстати Путь установки могли бы и упростить, а то сначала ставили в
папку <<JSC IC IT Invest>>, а потом в <<IC IT Invest>>.... Не сразу и
заметишь разницу...
Хвала создателю, то бишь автору проекта... выглядит неплохо... правда
свечки грузились несколько минут, думаю тормозит расчетная часть (на
ноуте простой Пень 2Ггц), т.к. нагрузка на проц была почти под
завязку, а сетка не была перегружена... но проверю еще разок после
Повторная попытка запуска сразу меня обломила... сначала мне сказали,
что неверный логин или пароль(что не может быть, т.к. они забиты в
прогу до компиляции...
Потом при повторном клике на Подключиться получил вот это:
_trader.Connect();

Исключение из HRESULT: 0x800706BE
А потом на пол экрана портянка вылезла со списком проблем...
скопировать не смог...

Залез в диспетчер задач и нашел процесс, который завершается только
при закрытии VS ....
Т.е. у меня было запущено 2 копии одновременно... Буду проверять на
будущее...

Кстати кнопка Подключиться работала только на подключение... отключаться
она не пожелала....
В связи с чем и была проблема
Оказалось не совсем в этом... Айти опять отключил серверы может поэтому
и проблема с отключением была....
Не порадовала реакция программы на это... Такое и во время сессии
бывает частенько....Хотя как я полагаю, прога видать пыталась
восстановить связь, как нибудь надо проверить
Еще одно маленькое замечание для автора:
При смене таймфрейма не всегда выполняется масштабирование - не сразу
вьехал, где копать на графике... но это мелочь....
PS. Не все исключения удается копировать, т.к. они не все
копируются....разве что скрин делать...

Topic starter
Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


буду стараться...

самое смешное что одну и ту же...1162 просто скачал с сайта и поставил
заново ... а пути установки изменились...))

тогда непонятно, почему если я не пропишу ссылку и не добавлю using,
то прога Смартком не видит?
Кстати, как я читал, в Смарттрейде вроде встроен СмартКом ... при
переустановке Смарттрейда иногда начинает глючить Смартком... но не
всегда...

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2010
Reply


Свечечный компонент взят отсюдаhttp://wpf.amcharts.com/. Версия не
последняя, так что есть вероятность того, что производительность
поднята.

В проге после подключение прописан код очищения поля с паролем. Это
учтено?

Тоесть, один раз нажали на подключиться, затем второй раз? Между этими
кликами прогу перезапускали?

vshost? Это специальный процесс, он автоматически создается студией.

Все может быть. Пример - он ведь не идеален =)

Должен начать работать ReConnectionManager. Он смотри на два события.
Во первых, что СмартКом живой. Это можно протестить, убив его процесс.
Второе - что течет экспорт (СмартКмо может быть и жив, но при этом сам
потерять соединение). Нужно вызывать метод SetExportTimeOut. Тогда
будет мониториться входящий трафик. Как долго нет известий -
перезапуск СмартКом.

Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


SmartCom v.2 - несовместимость с SampleSmartSMA

Попробовал заменить сабж v.1.1.6.2 на новую бету версию 2
Сразу получил ошибку в проекте ... похоже изменены методы получения
баров...и еще (см. аттач)
Проект со свечками не ругается , но и ни чего не делает... После
Подключитсяничего не происходит... кнопка становится серой, Экспорт ни к
чему не приводит... проц не грузится... точнее наблюдается кратковременная
загрузка проца и чуток сетевого трафика...
Комбобар Инструмент остается пустым...

Завтра верну на старую версию и попробую на Вин 7

Topic starter
Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


Забыл вложить аттач...
блин, а как его добавить то сюда?

Topic starter
Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


понял, не учел ... спасибо

я имел в виду сам проект...

А для него нужно снова пароль? Он ведь очищается...

Он смотри на два события.

А если брокер не пускает на сервер? т.е. сервер пингуется, а ответа
нет...

Topic starter
Thanks:

Valery

Avatar
Date: 9/14/2010
Reply


Аттач SmComEX.JPG в разделе файлы... как его сюда присобачить не
знаю...
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2010
Reply


Понятно. Видимо Вы используете параллельно S# и ссылку на новый
СмартКОМ. Так не прокатит. Нужно или то или другое. Потому что
метаданные в сборках несовместимы.

Thanks:

Valery

Avatar
Date: 9/15/2010
Reply


Конечно параллельно, а как иначе то? Если я не добавляю ссылку, то S#
просто не находит СмартКом... новый он или старый.... только совсем
старый находил...
и вообще как запретить S# искать Смартком или указать на новый
СмартКом без добавления ссылки?

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/15/2010
Reply


У Вас какой версии сейчас установлен СмартКОМ? 2.0?

Thanks:

Valery

Avatar
Date: 9/19/2010
Reply


вернулся на старую версию 1162(пока смысла нет без поддержки S#), но
его тоже не находит...
приходится ручками ссылку добавлять...

Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/19/2010
Reply


У меня путь к СмартКом такой - "C:\Program Files (x86)\IC IT Invest
\SmartCOM 2\" У Вас такой же?

Thanks:

toyan

Avatar
Date: 10/1/2010
Reply


Помогите начинающему...
Если я правильно понимаю, в этом выражении

Code
this.Trader.ProcessDataError += error => this.GuiAsync(() =>
MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));

объединены сразу несколько действий.

Нельзя ли его для примера расписать в несколько строк, снабдив их комментариями,
желательно без использования делегатов и лямбда-выражений.
Спасибо.
Thanks:

Mikhail Sukhov

Avatar
Date: 10/1/2010
Reply


toyan

Code
this.Trader.ProcessDataError += error => this.GuiAsync(() =>
MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));

объединены сразу несколько действий.


1. Подписываемся на событие ProcessDataError.
2. Его обработчик синхронизует вывод ошибки с GUI потоком.
3. После синхронизации появляется MessageBox

toyan

Нельзя ли его для примера расписать в несколько строк, снабдив их комментариями,
желательно без использования делегатов и лямбда-выражений.
Спасибо.


Я пишу доку только по созданию роботов на C#. По самому языку C# я объем не осилю. Язык популярный. Информации бесплатной и на русском - море. Читай - не хочу. Могу посоветовать форумы rsdn.ru и gotdotnet.ru, где тамошние корефеи с легкостью Вам объяснят, как пользоваться языком.
Thanks:

TH_one

Avatar
Date: 2/11/2011
Reply


Скачал StockSharp 2.6.2. Пробую запускать пример SampleSmartCandles. Он подключается. Но когда нажимаешь экспорт, выпадает:

Ошибка обработки данных

System.Runtime.InteropServices.COMException (0x80004005): В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL. в StClientLib.StServerClass.ListenTicks(String symbol)
в Ecng.Trading.Smart.SmartComWrapper.<>c__DisplayClass5d.<RegisterTrades>b__5c(StServer server)
в Ecng.Trading.Smart.SmartComWrapper.Do(Action`1 action)
в Ecng.Trading.Smart.SmartComWrapper.RegisterTrades(Security security)
в Ecng.Trading.Smart.SmartTrader.RegisterTrades(Security security)
в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
в SampleSmartCandles.MainWindow.<Connect_Click>b__10(IEnumerable`1 securities)
в C:\Users\TH_one\Documents\Visual Studio 2008\Projects\StockSharp_2.6.2\Sources\SampleSmartCandles\MainWindow.xaml.cs:строка 84
в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)
в Ecng.Trading.Algo.BaseTrader.#=qG1PeR6$x3ss8SKTcZRPx7YO2u9Ws0wOPD$7oJ4bnZ1c=.#=q8spuXbKfmTxQpmv$3l7AkQ==(IEnumerable`1 #=qOgckecuuB1zZO9JVCQwkIQ==)

Через несколько секунд, таких ошибок выпадает целый веер и они продолжают выпадать. При этом пример SampleSmartConsole работает нормально.
Не могу ничего понять. SmartCOM 2.0, Win7.
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy