думаю это поможет начинающим сделать первые шаги в освоении ..... Респект автору за создание данной библиотеки, но уровень ее далек для понимания начинающими... сам когда то неплохо писал на процедурных языках, но тут совсем другое...несколько месяцев изучал С#, создавал структуру классов, когда увидел Stock#.... Зачем изобретать то, что уже сделано? Оказалось не тут то было...) Решил попробовать и что из этого вышло: У меня хороший комп (4 ядра 2.83ГГц и 8 Гиг памяти), Windows 7 x 64
- .NET FW 4 + VS 2010 Express... установил SmarCom 2 и протестил его на примерах из ветки АйТи (у меня там реальный счет) работает.... Поставил проект S# 2.4 и начал пробовать:
- Ни один из проектов не захотел работать, пока не поставил ручками ссылку на Смартком и не добавил using StClientLib; Может у меня смартком не тот или установлен не там, но нигде инфы об этом я не нашел. Да и как я понял 99% инфы под Квик....
- запустил консольное решение и порадовался - заработало...))
- поменял эмитента на RIU0, и опять не пошло.... пока не поменял SecurityTypes.Equity на SecurityTypes.Future.... мелочи конечно, но новичков вышибает из колеи... Буду пробовать другие решения и комментировать их....
评论 (31)
登录 或 创建账户, 登录或注册以发表评论
Спасибо, Valery, хорошее начинание.
SampleSmart
Подключение произошло успешно, но ...
кнопка не стала красной... как я понимаю это означает, что можно работать дальше. Или нет? 2. Кликнув на Инструменты открылось окно , где выбрал фьючи , РТС и конкретный РИУ 3. Дальнейшие действия ничего не дали кроме исключений.... 4. Портфель и другие окна были пустые ... будем копать в коде... 5. Попытка отключиться ничего не дала ... пришлось прерывать принудительно... 6. Анализ кода привел к выводам, что кода в остальных окнах просто нет - просто вывод окна и все....
Хотелось бы знать, кто еще тестил это решение? Может у меня что не так ? Или это просто пример недописан? Если так ( я понимаю, что автор и так загружен), то хотя бы можно написать, что примеры не проверены...
Попробуем следующее решение....
SampleSmartCandles
Так же подключился, кликнул Экспорт и .... Жду... сколько ждать, непонятно правда.... Периодически пытаюсь посмотреть Инструмент.... Кстати кнопка Подключиться стала недоступной (серой) . Полагаю Экспорт закончится, когда эта кнопка вновь станет доступной.... Что происходит во время экспорта непонятно? ... дебаггер тоже молчит, не ругается....
Думаю не один я это делал, но почему то никто не комментирует .... Типа пусть другие сами понаступают на грабли... Короче надо разбираться....
Демо подключение или реальное? "Ни один из проектов не захотел работать, " в чем именно выражалось? В выскакивающей ошибке, в падении примера или просто не реагировании примера на пользовательские действия?
Еще раз о SampleSmart
При выборе Лукойл на Мамбе все работает в окне инструменты. При возврате на РИУ заявки выходят и даже видно номера счетов.... Но при вызове стакана получаем Невозможно вычислить выражение, поскольку текущий поток находится в состоянии переполнения стека.} В строке this.Trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
Попробуем снова... создадим пару заявок в портфеле..... после этого портфель стал виден в окне Портфель... чудно однако... но в окнах заявок так ничего и не видно...
Да еще момент... кнопка Экспорт отрабатывается достаточно долго... Обычно Смарт также тормозит, когда обновляются справочники... тут похоже то же самое. Только в Смарте это происходит один раз после установки, а тут при каждом запуске... не айс, но наверняка есть способ это победить...
Вернемся снова к мамбе . Выбрали сбер. Стакан открывается без проблем, правда вверх ногами, но это поправимо...)) Ну тут при создание заявки создается исключение и подвешивает прогу намертво.... Повторный запуск отказал в заявке - мало средств, но это уже правильно.... Но в окне Портфель пусто, хотя на фортсе есть поза.... Кнопка Бид-Оффер не работает, но полагаю в выхи это нормально.. Ладно, будем считать, что это решение тест прошло.. можно доработать ....
И на десерт SampleSmartSMA
Попытка подключиться вызвала сразу исключение... Подозреваю, что связано с новой версией Смарткома.. В диспетчере задач висит процесс, который я никак не могу завершить.... Vshost32-dr2.exe
Завтра попробую со старой....
Непобедимый эффект WPF. Проге не виснет, просто окно с ошибкой - модальное, и уходит на другой план. Приходится на Alt+Tab нажимать.
Судя по продвижению, все таки примеры заработали? Если да, то мой первый вопрос насчет "Ни один из проектов не захотел работать, пока не поставил ручками ссылку на Смартком и не добавил using StClientLib; " В чем это выражалось? Проекты не компилировались? Компилировалось, но возникала ошибка при запуске? Или все запускалось но не реагировало на пользовательский ввод.
Все исключения, ошибки, шаги для воспроизведения - пишите сюда. Потому что очень сложно догадаться, что за исключение возникло на Вашей машине.
я хоть и не программист, но стараюсь писать четко...)) Именно не заработали... при запуске реакция на кнопки =0....))) так как все же по поводу ссылки - ее нужно добавлять? у меня на ноуте стоял старый смартком по стандартному пути....с ним работало без добавления....при переустановке Смарткома все работать перестало.... я заметил, что изменился путь установки Смарткома... в связи с чем я хотел бы уточнить, как библиотека находит Смартком? А она его находит... По пути инсталяции? :)
Лучше просто текст ошибки. Ctrl+C - если запущено не под Debug (как обычное exe). Или из студии, при наведении на иконку ошибки.
А на какую версию переставили? Та, которая сейчас бета - 2.0? Или на 1.1.6.2
Библиотека ее не находит. Смарком сам приходит =) Это такая особенность COM технологии. Через реестр пути указаны.
И снова SampleSmartSMA
Запустил этот проект на своем старом ноуте с ХР, VS2010 + FW 3.5 + Smartcom 1162 Забавные ребята из АйТи - новая версия Смарткома ставится по новому пути ... сразу не заметишь.... Кстати Путь установки могли бы и упростить, а то сначала ставили в папку <<JSC IC IT Invest>>, а потом в <<IC IT Invest>>.... Не сразу и заметишь разницу... Хвала создателю, то бишь автору проекта... выглядит неплохо... правда свечки грузились несколько минут, думаю тормозит расчетная часть (на ноуте простой Пень 2Ггц), т.к. нагрузка на проц была почти под завязку, а сетка не была перегружена... но проверю еще разок после Повторная попытка запуска сразу меня обломила... сначала мне сказали, что неверный логин или пароль(что не может быть, т.к. они забиты в прогу до компиляции... Потом при повторном клике на Подключиться получил вот это: _trader.Connect();
Исключение из HRESULT: 0x800706BE А потом на пол экрана портянка вылезла со списком проблем... скопировать не смог...
Залез в диспетчер задач и нашел процесс, который завершается только при закрытии VS .... Т.е. у меня было запущено 2 копии одновременно... Буду проверять на будущее...
Кстати кнопка Подключиться работала только на подключение... отключаться она не пожелала.... В связи с чем и была проблема Оказалось не совсем в этом... Айти опять отключил серверы может поэтому и проблема с отключением была.... Не порадовала реакция программы на это... Такое и во время сессии бывает частенько....Хотя как я полагаю, прога видать пыталась восстановить связь, как нибудь надо проверить Еще одно маленькое замечание для автора: При смене таймфрейма не всегда выполняется масштабирование - не сразу вьехал, где копать на графике... но это мелочь.... PS. Не все исключения удается копировать, т.к. они не все копируются....разве что скрин делать...
буду стараться...
самое смешное что одну и ту же...1162 просто скачал с сайта и поставил заново ... а пути установки изменились...))
тогда непонятно, почему если я не пропишу ссылку и не добавлю using, то прога Смартком не видит? Кстати, как я читал, в Смарттрейде вроде встроен СмартКом ... при переустановке Смарттрейда иногда начинает глючить Смартком... но не всегда...
Свечечный компонент взят отсюдаhttp://wpf.amcharts.com/. Версия не последняя, так что есть вероятность того, что производительность поднята.
В проге после подключение прописан код очищения поля с паролем. Это учтено?
Тоесть, один раз нажали на подключиться, затем второй раз? Между этими кликами прогу перезапускали?
vshost? Это специальный процесс, он автоматически создается студией.
Все может быть. Пример - он ведь не идеален =)
Должен начать работать ReConnectionManager. Он смотри на два события. Во первых, что СмартКом живой. Это можно протестить, убив его процесс. Второе - что течет экспорт (СмартКмо может быть и жив, но при этом сам потерять соединение). Нужно вызывать метод SetExportTimeOut. Тогда будет мониториться входящий трафик. Как долго нет известий - перезапуск СмартКом.
SmartCom v.2 - несовместимость с SampleSmartSMA
Попробовал заменить сабж v.1.1.6.2 на новую бету версию 2 Сразу получил ошибку в проекте ... похоже изменены методы получения баров...и еще (см. аттач) Проект со свечками не ругается , но и ни чего не делает... После Подключитсяничего не происходит... кнопка становится серой, Экспорт ни к чему не приводит... проц не грузится... точнее наблюдается кратковременная загрузка проца и чуток сетевого трафика... Комбобар Инструмент остается пустым...
Завтра верну на старую версию и попробую на Вин 7
Забыл вложить аттач... блин, а как его добавить то сюда?
понял, не учел ... спасибо
я имел в виду сам проект...
А для него нужно снова пароль? Он ведь очищается...
Он смотри на два события.
А если брокер не пускает на сервер? т.е. сервер пингуется, а ответа нет...
Аттач SmComEX.JPG в разделе файлы... как его сюда присобачить не знаю...
Понятно. Видимо Вы используете параллельно S# и ссылку на новый СмартКОМ. Так не прокатит. Нужно или то или другое. Потому что метаданные в сборках несовместимы.
Конечно параллельно, а как иначе то? Если я не добавляю ссылку, то S# просто не находит СмартКом... новый он или старый.... только совсем старый находил... и вообще как запретить S# искать Смартком или указать на новый СмартКом без добавления ссылки?
У Вас какой версии сейчас установлен СмартКОМ? 2.0?
вернулся на старую версию 1162(пока смысла нет без поддержки S#), но его тоже не находит... приходится ручками ссылку добавлять...
У меня путь к СмартКом такой - "C:\Program Files (x86)\IC IT Invest \SmartCOM 2" У Вас такой же?
Помогите начинающему... Если я правильно понимаю, в этом выражении
объединены сразу несколько действий.
Нельзя ли его для примера расписать в несколько строк, снабдив их комментариями, желательно без использования делегатов и лямбда-выражений. Спасибо.
Я пишу доку только по созданию роботов на C#. По самому языку C# я объем не осилю. Язык популярный. Информации бесплатной и на русском - море. Читай - не хочу. Могу посоветовать форумы rsdn.ru и gotdotnet.ru, где тамошние корефеи с легкостью Вам объяснят, как пользоваться языком.
Скачал 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(IEnumerable1 source, Action1 action) в SampleSmartCandles.MainWindow.<Connect_Click>b__10(IEnumerable1 securities) в C:\Users\TH_one\Documents\Visual Studio 2008\Projects\StockSharp_2.6.2\Sources\SampleSmartCandles\MainWindow.xaml.cs:строка 84в Ecng.Common.DelegateHelper.SafeInvoke(Action
1 handler, T arg) в Ecng.Trading.Algo.BaseTrader.#=qG1PeR6$x3ss8SKTcZRPx7YO2u9Ws0wOPD$7oJ4bnZ1c=.#=q8spuXbKfmTxQpmv$3l7AkQ==(IEnumerable1 #=qOgckecuuB1zZO9JVCQwkIQ==)Через несколько секунд, таких ошибок выпадает целый веер и они продолжают выпадать. При этом пример SampleSmartConsole работает нормально. Не могу ничего понять. SmartCOM 2.0, Win7.
В S# 3.0 смотрели тот же пример?
Посмотрел. Получается точно так же:
Ошибка обработки данных
System.Runtime.InteropServices.COMException (0x80004005): В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL.
в StClientLib.StServerClass.ListenTicks(String symbol)
в Ecng.Trading.Smart.SmartComWrapper.#=qzOhOrOml2PAgCG7rTCjWFaXI399INYZlVBVicdKHZxI=.#=qPZhWQWobmRxwWDuTixn1XVpU8Up$Mh5H24JVzDpvuA8=(StServer #=qJsly6K3VmZ_7IUgAXDwOsw==)
в Ecng.Trading.Smart.SmartComWrapper.#=qum0zEdttrRQfO1KlDO3NQw==(Action
1 #=q36EXl8DghQyD$7JPPLnWGQ==) в Ecng.Trading.Smart.SmartComWrapper.RegisterTrades(String securityId) в Ecng.Trading.Smart.SmartTrader.RegisterTrades(Security security) в Ecng.Collections.CollectionHelper.ForEach(IEnumerable1 source, Action1 action) в SampleSmartCandles.MainWindow.<Connect_Click>b__10(IEnumerable1 securities) в E:\StockSharpReleases\StockSharp_3.0\Sources\SampleSmartCandles\MainWindow.xaml.cs:строка 85в Ecng.Common.DelegateHelper.SafeInvoke(Action
1 handler, T arg) в Ecng.Trading.Algo.BaseTrader.#=q3abNZvXrYgKL68sk6_DkevG11gLGXcY9f0xIrpLlDIU=.#=q1JeNjzk3dQ9MbXuehH1QFg==(IEnumerable1 #=qBCmpU1le4ErdfKR6lMTszQ==)А SampleSmart работает.
В SampleSmartCandles ошибка - регистрация тиков не для нужный инструментов, а для всех подряд. Исправьте ошибку и будет работать.
У меня тоже самое. S# 3.0, SmartCOM 2, с другими прогами работает нормально, Win 7 x64.
// так как инструментов слишком много, то выводим только два популярных с ММВБ и РТС this.GuiAsync(() => _securitiesSource.AddRange(securities.Where(s => s.Id == "LKOH" || s.Id == "<mark>RTS-3.11_FT</mark>")));
// начинаем получать текущие сделки (для построения свечек в реальном времени) <mark>//</mark>securities.ForEach(_trader.RegisterTrades); securities<mark>.Where(s => s.Id == "LKOH" || s.Id == "RTS-3.11_FT")</mark>.ForEach(_trader.RegisterTrades);
Так вроде заработало. Тест прошел, давайте следующий. 😀