Stock# + SmartCom для чайников, первый опыт
Atom Ответить
12.09.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....
мелочи конечно, но новичков вышибает из колеи...
Буду пробовать другие решения и комментировать их....

Теги:


Спасибо:




31 Ответов
1 2  >
Craft

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


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

Valery

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


SampleSmart

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

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

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

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

Valery

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


SampleSmartCandles

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

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

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

Mikhail Sukhov

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


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

Спасибо:

Valery

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


Еще раз о SampleSmart

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

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

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

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

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

Valery

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


И на десерт SampleSmartSMA

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

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

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

Mikhail Sukhov

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


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

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

Спасибо:

Mikhail Sukhov

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


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

Спасибо:

Valery

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


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

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

Mikhail Sukhov

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


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

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

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

Спасибо:

Valery

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


И снова SampleSmartSMA

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

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

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

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

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

Valery

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


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

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

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

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

Mikhail Sukhov

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


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

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

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

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

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

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

Спасибо:

Valery

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


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

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

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

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

Valery

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


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

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

Valery

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


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

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

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

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

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

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

Valery

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


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

Mikhail Sukhov

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


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

Спасибо:

Valery

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


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

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

Mikhail Sukhov

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


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

Спасибо:

Valery

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


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

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

Mikhail Sukhov

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


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

Спасибо:

toyan

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


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

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

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

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

Mikhail Sukhov

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


toyan

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

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


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

toyan

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


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

TH_one

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


Скачал 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.
Спасибо:
1 2  >

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

loading
clippy