Альтернативный Альфа-Коннектор

Альтернативный Альфа-Коннектор
Atom
2/9/2012
Sergey Masyura


Всем добрый день,

Появилась альтернативная версия коннектора под альфу. За это отдельное спасибо Родиону [thumbup] ( http://stocksharp.com/users/16581/ ).
Версия пока что не окончательная, но исправлены многие недостатки оригинального Альфа-коннектора от Stock#.

Скачать код можно с codeplex, для деталей смотрите коммит http://stocksharp.codepl...changeset/changes/14273

Если у Вас желание помочь проекту, отписывайте баги и фидбэк по этому коннектору в данном топике!

Успехов,
Сергей

Tags:


Thanks: OvcharenkoVI


< 1 2 3 4 5  > >>
OvcharenkoVI

Avatar
Date: 3/20/2012
Reply


Mikhail Sukhov
Приветствую, альфа строители.

Хотел спросить вам как дело с вашим коннектором. Я так понимаю их сейчас целых 2, и не понятно какой из них использовать. Мы хотим выпускать версию 4.1, и этот вопрос предлагаю решить окончательно. Чем альтернативный коннектор лучше текущего? Может быть их соединить в плане фич и багов? Надо уже и на дев ветку накатить все то, что в транке фиксилось, так как именно из дева будет собираться новая версия.


С моей точки зрения, коннектор Сергея более рабочий, по крайней мере меньше багов замечал. У Родиона интересная система с подписками на таблицы. Собственно Сергей говорил, что, возможно, что то возьмет из alfaplus, в таком случае для 4.1 это будет лучшим вариантом
Thanks:

ra81

Avatar
Date: 3/20/2012
Reply


OvcharenkoVI
Mikhail Sukhov
Приветствую, альфа строители.

Хотел спросить вам как дело с вашим коннектором. Я так понимаю их сейчас целых 2, и не понятно какой из них использовать. Мы хотим выпускать версию 4.1, и этот вопрос предлагаю решить окончательно. Чем альтернативный коннектор лучше текущего? Может быть их соединить в плане фич и багов? Надо уже и на дев ветку накатить все то, что в транке фиксилось, так как именно из дева будет собираться новая версия.


С моей точки зрения, коннектор Сергея более рабочий, по крайней мере меньше багов замечал. У Родиона интересная система с подписками на таблицы. Собственно Сергей говорил, что, возможно, что то возьмет из alfaplus, в таком случае для 4.1 это будет лучшим вариантом


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

Ну и моя версия более юзер френдли. Собрать рабочий код на коннекторе Сергея сложнее. Много надо понять для начала. Ну так было у меня лично. С этого и начался новый коннектор.

Что еще сказать, в моей версии точно работают подписки на разные инструменты одновременно, если Сергей не пофиксил то у него нет. У меня работают события об ошибках регистрации ордеров, у него не работали. Отсюда стратегии тоже могут загонять. Ну и у нас разные схемы подачи ордеров. У него синхронная, у меня асинхронная, то есть подача ордера мгновенная и в терминал так же уходит ордер без ожидания. Отсюда терминал не подвисает. У Сергея была подача с ожиданием.

Пока что весь тот функционал что нужен для работы стратегий достаточен и рабочий. Есть вещи которые весят в тудушках, как то "Время отмены ордера" итд, но эт минорно все. Так что решайте сами :). Ну и если речь шла о багах, то show me the bugs?? :). DerivedOrder поправлю как тока сертификат продлят изверги, а то не тестится.

ЗЫ: пишу код для себя, так что стараюсь :)
Thanks:

OvcharenkoVI

Avatar
Date: 3/20/2012
Reply


ra81
OvcharenkoVI
Mikhail Sukhov
Приветствую, альфа строители.

Хотел спросить вам как дело с вашим коннектором. Я так понимаю их сейчас целых 2, и не понятно какой из них использовать. Мы хотим выпускать версию 4.1, и этот вопрос предлагаю решить окончательно. Чем альтернативный коннектор лучше текущего? Может быть их соединить в плане фич и багов? Надо уже и на дев ветку накатить все то, что в транке фиксилось, так как именно из дева будет собираться новая версия.


С моей точки зрения, коннектор Сергея более рабочий, по крайней мере меньше багов замечал. У Родиона интересная система с подписками на таблицы. Собственно Сергей говорил, что, возможно, что то возьмет из alfaplus, в таком случае для 4.1 это будет лучшим вариантом


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

Ну и моя версия более юзер френдли. Собрать рабочий код на коннекторе Сергея сложнее. Много надо понять для начала. Ну так было у меня лично. С этого и начался новый коннектор.

Что еще сказать, в моей версии точно работают подписки на разные инструменты одновременно, если Сергей не пофиксил то у него нет. У меня работают события об ошибках регистрации ордеров, у него не работали. Отсюда стратегии тоже могут загонять. Ну и у нас разные схемы подачи ордеров. У него синхронная, у меня асинхронная, то есть подача ордера мгновенная и в терминал так же уходит ордер без ожидания. Отсюда терминал не подвисает. У Сергея была подача с ожиданием.

Пока что весь тот функционал что нужен для работы стратегий достаточен и рабочий. Есть вещи которые весят в тудушках, как то "Время отмены ордера" итд, но эт минорно все. Так что решайте сами :). Ну и если речь шла о багах, то show me the bugs?? :). DerivedOrder поправлю как тока сертификат продлят изверги, а то не тестится.

ЗЫ: пишу код для себя, так что стараюсь :)


сегодня только с Сергеем обнаружили, что не заполняется ExtensionInfo у Security. Поправить бы.

Так у меня вот возникло много проблем при переносе проги с одной машины на другую. Какие ошибки только не вылетают.



С коннектором от Сергея такого не возникало. На самом деле очень хотелось бы их объединить, так как и в одном и другом есть очень важные вещи
Thanks:

ra81

Avatar
Date: 3/21/2012
Reply


OvcharenkoVI

сегодня только с Сергеем обнаружили, что не заполняется ExtensionInfo у Security. Поправить бы.

Так у меня вот возникло много проблем при переносе проги с одной машины на другую. Какие ошибки только не вылетают.

С коннектором от Сергея такого не возникало. На самом деле очень хотелось бы их объединить, так как и в одном и другом есть очень важные вещи

Вот это уже другой разговор. Трабла с переносом ясно с чем связана. Если будут багрепорты будут багфиксы. Пофиксим ошибку переноса. А ExtensionInfo даж не знаю что за беда. ЧТо там должно содержаться ??

Code
security.SetPaperNo(paper_no);
security.SetCurrency(curr_code);
security.SetPlaceCode(place_code);


Вот тут собственно заполняется.
Thanks:

Mikhail Sukhov

Avatar
Date: 3/21/2012
Reply


ra81

Ну и моя версия более юзер френдли. Собрать рабочий код на коннекторе Сергея сложнее. Много надо понять для начала. Ну так было у меня лично. С этого и начался новый коннектор.


Значит надо совмещать. Задача даже более необходимая, чем кажется, так как в дев ветке вообще ничего уже по альфе не работает.

Предлагаю для начала включить коннектор в солюшен, чтобы его можно было компилировать со всеми другими программами. Затем, нужно перечислить все эти изменения и отличия. Потому что я даже не смотрел ни новый коннектор, ни старый на совместимость с S#. Вот как недавно было со стоп заявками... Надо начать, потом станет веселее. Не дело, вместо фиксов в существующем коннекторе, плодить новую ветку.
Thanks:

ra81

Avatar
Date: 3/22/2012
Reply


Mikhail Sukhov

Предлагаю для начала включить коннектор в солюшен, чтобы его можно было компилировать со всеми другими программами. Затем, нужно перечислить все эти изменения и отличия. Потому что я даже не смотрел ни новый коннектор, ни старый на совместимость с S#. Вот как недавно было со стоп заявками... Надо начать, потом станет веселее. Не дело, вместо фиксов в существующем коннекторе, плодить новую ветку.


Пишу отличия которые я знаю. Если я не прав Сергей пусть меня поправит.

1) наличие методов UnregisterPortfolios(), UnregisterSecurities(), UnRegisterOrders(), UnRegisterMyTrades(), UnregisterOrders(), UnRegisterPositions() - которые позволяют убрать подписку на получение этих данных. Есть и обратные методы RegisterXXX(). Например нужны данные только по позициям, тогда дерегистрируем все таблицы после старта экспорта и включаем RegisterPositions(). Будем получать только изменения по позициям и новые позиции, но позиция Деньги сюда не входит. Методы помогают отключить ненужный прием данных.

2) StartExport() - автоматом запускает экспорт основных данных. Таким образом если например бумаги не пришли в событии TraderConnected, они придут позже. (Часто бывает что в старом коннекторе при старте бумаги не приходят или портфели.).

3) небольшое отличие в постановке стопов. У меня стоп цена передается в AlfaStopCondition. Так же есть поддержка трейлинг стопов.

4) Полностью асихронная модель приема данных от терминала. Все приходящие данные заворачиваются в очередь. Обработкой очереди занимается отдельный поток. Таким образом блокировки терминала минимальны. Поток минимально обрабатывает очредную порцию данных и передает ее выше, в обертку для таблиц. Каждая таблица имеет свою очередь и обрабатывает ее своим потоком. Парсит данные и передает их тем, кто на них подписался. Получаем многопоточный прием данных. По каждой таблице приходить будет в своем потоке. В стандартном коннекторе данные от таблиц идут в одном потоке.

5) Работает нормально подписка на разные инструменты, стаканы и сделки по инструментам. ЧТо позволяет работать с корзиной стратегий.

6) Заявки подаются асинхронно. То есть не ждем от терминала ответа при передаче ему заявки. Трейдер просто ставит заявку в очередь и возвращает управление. Дальше уже менеджер очереди двигает заявку в Терминал. От терминала тоже не ждем приема заявка. Подтверждение принимаем по событию OrderConfirmed. По этому же событию принимаем ошибки регистрации. В стандартном коннекторе ожидается подтверждение приема заявки. Так же нет событий об ошибке регистрации.

7) Рыночное время берется напрямую с терминала, а не с внутреннего таймера.

8) На все методы обращения к терминалу стоит глобальный лок. То есть только один поток в одно время может работать с терминалом. Запрос истории, например, вешает все процессы на время получения данных. Он вешает в любом случае терминал, но без локов ком объект может загнуться при обращении с другого потока. С локами после получения данных все продолжает работать.

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

1) Нет поддержки атомарной перерегистрации, по причине невозможности реализации ее через событийную модель. Намеренно отказался от подачи заявок с ожиданием. Это вешает терминал.

2) Не совсем правильная работа со стопзаявками, что отражается на стратегиях в неверном учете сделок по стоп зяавкам. Связано это с недопонимаем модели сток шарпа и тем что в Альфе стоп заявка не генерит лимитную заявку, а просто активируется. Будет пофиксено.

3) Порой котирование не правильно функционирует. заявка может исполниться а котирование не знает про это. Еще не проверял толком где глюк. Как разберусь где проблемы, пофиксю.

4) Не все поля заполняются как нужно в экспортируемых данных (та же беда у стандартного коннектора). Буду фиксить постепенно.

5) Нет поддержки опционов совершенно. (та же беда у стандартного коннектора). Как доберусь до опционов сразу сделаю. В планах есть.

5) Ну и наличие кучи фоновых потоков не облегчает отладку, хотя в принципе они локализованы и трудностей не вызывают.
Thanks:

Mikhail Sukhov

Avatar
Date: 3/22/2012
Reply


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

Пункт фич, что вы привели, выглядят интересными. Предлагаю мержить с основным коннектором.
Thanks:

ra81

Avatar
Date: 3/22/2012
Reply


Mikhail Sukhov
Я на днях попытался использовать альфа коннектор из транка - он практически не работает. Насколько я могу судить, альтернативный коннектор тоже не особо стабилен. Поэтому особого смысла в сохранении чего то в стабильном виде нет. Оно все нестабильно. Поэтому и настаиваю, чтобы это слить в одну ветку, чтобы хоть как-то довести до рабочего состояния.

Пункт фич, что вы привели, выглядят интересными. Предлагаю мержить с основным коннектором.

Они не мерджатся :). Просто потому что кардинально отличаются друг от друга внутри. Предлагаю попробовать коннектор из дев ветки Альфа плюс. Дальше уже решать. Про известные баги я указал. Поддерживать свой коннектор я один фиг буду, будет он в транке или не будет, потому что он удовлетворяет стабильностью работы и тем что все работает без бубна. Либо надо допиливать старый коннектор до состояния нового, что по сути куча работы. Тут один выбросить и оставить другой. Мерджить не выйдет.

Опять же там грядет смена платформы. Я все равно планирую пока сидеть на альфе длительное время особенно с перспективой будущей платформы. Обещания красивые. Так что и под новую скорее всего буду делать коннектор. Как-то так.
Thanks:

Mikhail Sukhov

Avatar
Date: 3/22/2012
Reply


Мне кажется, мы о разном говорим.

Я рад, что Альфа продолжит развиваться, и что лично вы на ней остаетесь. Но я пишу о том, чтобы сделать сейчас один коннектор, и чтобы в деве что-то заработало. Сейчас есть очень большая вероятность, что в 4.1 попадет что-то не работающее. Ваш коннектор, как я понял, вообще даже не попадает в архивы. Следовательно, при каждом обновлении рефов он может быть не совместим. С учетом того, что вы, как и сами пишите, пока не до конца понимаете модель S#, это накладывает определенные риски и на ваш альтернативный коннектор.

Поэтому, чтобы хоть как-то сдвинуть процесс с мертвой точки, и сделать что-то действительно удобное и работающее, я предлагаю совместить коннекторы в один. дев коннектор вообще сейчас не работает. Ваш коннектор, судя по всему, работает, но с ошибками. Имеет ли смысл вести 2 ветки неработающего? На мой взгляд, нет.
Thanks:

ra81

Avatar
Date: 3/22/2012
Reply


Mikhail Sukhov
Мне кажется, мы о разном говорим.

Я рад, что Альфа продолжит развиваться, и что лично вы на ней остаетесь. Но я пишу о том, чтобы сделать сейчас один коннектор, и чтобы в деве что-то заработало. Сейчас есть очень большая вероятность, что в 4.1 попадет что-то не работающее. Ваш коннектор, как я понял, вообще даже не попадает в архивы. Следовательно, при каждом обновлении рефов он может быть не совместим. С учетом того, что вы, как и сами пишите, пока не до конца понимаете модель S#, это накладывает определенные риски и на ваш альтернативный коннектор.

Поэтому, чтобы хоть как-то сдвинуть процесс с мертвой точки, и сделать что-то действительно удобное и работающее, я предлагаю совместить коннекторы в один. дев коннектор вообще сейчас не работает. Ваш коннектор, судя по всему, работает, но с ошибками. Имеет ли смысл вести 2 ветки неработающего? На мой взгляд, нет.


Какие предложения по совмещению? Я пока плохо представляю сей процесс.
Thanks:
< 1 2 3 4 5  > >>

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

loading
clippy