Всем добрый день,
Появилась альтернативная версия коннектора под альфу. За это отдельное спасибо Родиону 👍 ( http://stocksharp.com/users/16581/ ). Версия пока что не окончательная, но исправлены многие недостатки оригинального Альфа-коннектора от Stock#.
Скачать код можно с codeplex, для деталей смотрите коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/14273
Если у Вас желание помочь проекту, отписывайте баги и фидбэк по этому коннектору в данном топике!
Успехов, Сергей
Kommentare (69)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Круто! Очень хотелось бы посмотреть документацию по этому коннектору)
А где сам автор? Давайте его расцелуем, что ли.
Целовать не нужно :). Лучше крепкое мужское рукопожатие :)
Документации особой не требуется. Коннектор ведет себя так как должен себя вести по идеологии BaseTrader.
Единственный ньюанс это наличие методов UnregisterPortfolios(), UnregisterSecurities(), UnRegisterOrders(), UnRegisterMyTrades(), UnregisterOrders(), UnRegisterPositions() - которые позволяют убрать подписку на получение этих данных. Есть и обратные методы RegisterXXX(). Например нужны данные только по позициям, тогда дерегистрируем все таблицы после старта экспорта и включаем RegisterPositions(). Будем получать только изменения по позициям и новые позиции, но позиция Деньги сюда не входит.
На самом деле на низовом уровне, где данные получаются от Альфы, коннектор загребает все новые данные, потому как фильтровать их невозможно. Составные фильтры по SQL запросу толком не работают. Отсюда данные фильтруются на уровне Wrapper и в трейдер уже доходит только то, на что была подписка. Это вероятно нужно учитывать.
StartExport() - автоматом запускает экспорт основных данных. Таким образом если например бумаги не пришли в событии TraderConnected, они придут позже. (Часто бывает что в текущем коннекторе при старте бумаги не приходят или портфели.)
Более подробная дока будет позже. ПОтому как самому нужна.
На самом деле я взял за основу текущий коннектор и на данном этапе переработал событийную модель в части подписки/отписки на получение данных. Работа с ордерами и свечками просто копипастнута. Постепенно и до нее дойдут руки, если не удовлетворит - переработаю и ее.
Баги есть. Но исправляю. Можно сказать что это преальфа релиз :).
Главное - не забросить начинание. Как там Альфа? Собирается новое решение выпускать? Если есть вопросы по коннекторам, не стесняемся задавать их.
Ну вообще жду открытия рынков. Проверю изменения выложу новый коммит. Возможно на нем закончится работа с таблицами. Дальше ордера и история.
Новый коммит. Исправлены баги в подписке/отписке на таблицы. Провел тестирование всего кроме исторических данных. Если обнаружится какой баг, сообщайте.
http://stocksharp.codeplex.com/SourceControl/changeset/changes/14410
Добавил предварительное чтение всех таблиц при старте экспорта. Это избавит от проблемы не появления инструментов и данных, по которым не было изменений. Чтение Заполняет трейдер данными что есть в таблицах терминала.
http://stocksharp.codeplex.com/SourceControl/changeset/changes/14416
Новый коммит. http://stocksharp.codeplex.com/SourceControl/changeset/changes/14570#
В нем переработана работа с ордерами и особенно со стопами. Основные видные изменения - добавился параметр StopPrice в AlfaStopConditions. Стоп заявку теперь нужно создавать следующим образом:
Таким же образом стоп ордера всасываются в S#. Выставляется StopPrice и Slippage при получении новых ордеров от терминала.
Стоп заявки с TakeProfit не тестировались. И не факт что будут отрабатывать корректно. Ставиться должны нормально, и апдейтиться, а вот парситься как будут, бог знает.
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/14616
Добавлен следящий стоп. Создать его можно следующим образом:
Сразу после создания ордера на покупу он будет иметь следующие параметры (после всасывания S# от терминала):
В процессе смены котировок инструмента, состояние заявки будет постоянно обновляться в части Price и StopPrice, разница между ними должна быть равна Slippage.
Аналогичным образом создаются заявки на продажу, только цены будут другие.
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/14671
Видные изменения:
Добавилось свойство AlfaTrader.IsConnected MinLotSize в инструментах отражает минимальный размер лота.
Решил попробовать ваш коннектор, т.к. другой для Альфы с двумя запущенными стратегиями вообще отказывается работать. Сразу на багу наткнулся В AlfaTrader.cs на линии 663 вальнулось:
order.Volume = (Int32)raw["qty"]; order.Balance = (Int32)raw["rest"]; должно быть наверно order.Volume = Int32.Parse((string)raw["qty"]); order.Balance = Int32.Parse((string)raw["rest"]);
Это версия видать совсем дремучая. Уже давно переделано подругому. Только что влил новую. Никаких багов нет.
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/15488
Долго не обновлял, по причине глобальных переделок. Часть из них сделана по аналогии Сергея. Что в итоге получилось?
Полностью асихронная модель приема данных от терминала. Все приходящие данные заворачиваются в очередь. Обработкой очереди занимается отдельный поток. Таким образом блокировки терминала минимальны. Поток минимально обрабатывает очредную порцию данных и передает ее выше, в обертку для таблиц. Каждая таблица имеет свою очередь и обрабатывает ее своим потоком. Парсит данные и передает их тем, кто на них подписался. Получаем многопоточный прием данных. По каждой таблице приходить будет в своем потоке.
Асинхронная подача заявок. Заявки при регистрации ставятся в очередь. Сюда же входят ордера на отмену заявок. Все ордера ставятся в очередь. Очередь обрабатывается своим потоком. Он извлекает ордера по очереди и начинает регистрацию. Регистрация неблокирующая, то есть управление возвращается сразу после подачи заявки. Если произошла ошибка при регистрации/отмене ордера, то формируется сообщение об ошибке и кладется в очередь ошибок, которая в свою очередь обрабатывается своим потоком вызывающим события в зависимости от типа ошибки. Если ордер прошел нормально, то он помещатеся в список ордеров ожидающих подтверждения.
Дальше от терминала приходят по событию OrderConfirmed подтверждения. Ищем ордера в списке ожидающих подтверждение и если нашли, то сразу ставим номер ордера при успешной регистрации, или помещаем сообщение об ошибке в очередь ошибок при неуспешной. Такая же ерунда для ордеров на отмену.
Подобный способ регистрации ордеров обеспечивает нормальную работу терминала при подаче ордеров. Он не завешивает его. Если подавать ордера с таймаутом, терминал перестает принимать данные пока ордер не зарегистрирован окончательно. Это может длиться больше 30 секунд в разных ситуациях. Тестовые прогоны показали достаточную надежность такой системы. На каждый поданный ордер приходит либо успех либо ошибка (отлавливается по событиям типо OrderRegisterFailed). Прогнал серии по 100 ордеров, общей массой в 1000 и больше. Расхождений не было найдено. Были расхождения при отключении терминала в момент подачи заявок.
Если ордер был успешно зарегистрирован, будет событие NewOrder, если была ошибка - событие OrderRegisterFailed. И аналогично для других операций.
Обеспечить обновление ордеров подобным способом невозможно.Поэтому методы Update работают через отмену/подачу нового ордера.
Если подать сразу 2 ордера, второй не пройдет и будет событие об ошибке. Это надо учитывать.Подача ордеров неблокирующая. У альфы есть предел по скорости подачи/отмены ордеров.
В остальном функционал остался прежний.
Целый день воюю с этими двумя последовательными ордерами. Тут вопрос в чем. Запускаю 2-3 стратегии на разных инструментах. Я не могу сказать в какой момент они отменят заявку или выставят ордер. А тут встречаются накладки - я специально для синхронизации завел в стратеги статичное поле LastOrderRegistrationTime и при регистрации жду для примера одну секунду от этого значения, а вот ордер отмену не могу предсказать (использую правила) и тут пару раз и проскачила ошибка:
13:36:02.234 | Error | Стратегия для XXXX | Заявка 3421621415 не была принята по причине System.Exception: Поручение не может быть принято, т.к. превышена предельная интенсивность..
Я вот и думаю, т.к. это явный косяк Альфы, то и обработку его зашить в коннектор. Иначе две и более стратегии придется вручную синхронизовать. Ведь один такой сбой и вся стратегия рушится, т.к. почему-то появляется дубликат заявки (все-таки в конце концов видать доходит до сервера). К примеру в AlfaTrader можно свойство добавить что-то вроде RegisterOrderInterval (установить по умолчанию в секунду) и когда из очереди выбирать на установку или отмену заявки для последующей заявки ожидать этот интервал и плюс (возможно) дожидать ответа от Альфы (успешно или неуспешно)
В последней версии альфа-коннектора с транка ордера ложатся в очередь и вызываются последовательного из одного потока. Это должно решить параллельную работу стратегий.
Ну просто нужно в стратегиях учитывать что заявка может не исполниться в первый раз. Надо подать снова на исполнение. Или просто сделать метод отдельный. Использовать можно котирование для подачи заявок. Пока вроде бы котирование работает в моем коннекторе. Только пишет про ошибку. Залью чуть позже версию в которой уже и ошибок не пишет.
А то что пишет ошибку у Вас это нормально. Альфа не дает две заявки быстро исполнить. Надо учитывать сей факт. То что Сергей пишет про коннектор из транка, верно. Но я намеренно отказался от подобного метода подачи заявок. Почему написано в комментариях к коммиту. Да и даже при ожидании исполнения каждой заявки, заявка может исполниться с ошибкой. В любом случае надо учитывать в стратегии факт возможного ошибочного исполнения заявок. А то что Вы пишете мол заявка даже при ошибке регистрируется и появляется в терминале, Это позволю себе заметить наверняка не совсем так. При сообщении о предельной допустимости заявка точно не регистрируется сервером. Видимо ваши стратегии посылают снова заявки свои на исполнение.
Стратегия котирования под коннектор AlfaPlus от Родиона работает. Изредка случаются сбои, стратегия завершается без позиции. Сильно не разбирался, просто в основной стратегии контролирую этот момент и дублирую в случае чего. В целом коннектор работает шустренько. Продолжаю наблюдения.
новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/15576
Особенностей нет. Просто фикс атомарной перерегистрации. Поскольку сам коннектор на самом деле перерегистрацию делает через отмену старой заявки и подачу новой, указал это в нужном свойстве. Стратегии типо котирования учитывают сей факт при работе.
Приветствую, альфа строители.
Хотел спросить вам как дело с вашим коннектором. Я так понимаю их сейчас целых 2, и не понятно какой из них использовать. Мы хотим выпускать версию 4.1, и этот вопрос предлагаю решить окончательно. Чем альтернативный коннектор лучше текущего? Может быть их соединить в плане фич и багов? Надо уже и на дев ветку накатить все то, что в транке фиксилось, так как именно из дева будет собираться новая версия.
С моей точки зрения, коннектор Сергея более рабочий, по крайней мере меньше багов замечал. У Родиона интересная система с подписками на таблицы. Собственно Сергей говорил, что, возможно, что то возьмет из alfaplus, в таком случае для 4.1 это будет лучшим вариантом
Вообще с моей точки зрения, текущая версия моего коннектора работает гладко и без багов. Во всяком случае мы в две каски используем его всяко разно. Отрабатывает без глюков. Если баги и есть то обычно с Сергеем мы их фиксим одновременно, поскольку я базировался на его коде и мы с ним общаемся по этим вопросам.
Ну и моя версия более юзер френдли. Собрать рабочий код на коннекторе Сергея сложнее. Много надо понять для начала. Ну так было у меня лично. С этого и начался новый коннектор.
Что еще сказать, в моей версии точно работают подписки на разные инструменты одновременно, если Сергей не пофиксил то у него нет. У меня работают события об ошибках регистрации ордеров, у него не работали. Отсюда стратегии тоже могут загонять. Ну и у нас разные схемы подачи ордеров. У него синхронная, у меня асинхронная, то есть подача ордера мгновенная и в терминал так же уходит ордер без ожидания. Отсюда терминал не подвисает. У Сергея была подача с ожиданием.
Пока что весь тот функционал что нужен для работы стратегий достаточен и рабочий. Есть вещи которые весят в тудушках, как то "Время отмены ордера" итд, но эт минорно все. Так что решайте сами :). Ну и если речь шла о багах, то show me the bugs?? :). DerivedOrder поправлю как тока сертификат продлят изверги, а то не тестится.
ЗЫ: пишу код для себя, так что стараюсь :)
сегодня только с Сергеем обнаружили, что не заполняется ExtensionInfo у Security. Поправить бы.
Так у меня вот возникло много проблем при переносе проги с одной машины на другую. Какие ошибки только не вылетают.

С коннектором от Сергея такого не возникало. На самом деле очень хотелось бы их объединить, так как и в одном и другом есть очень важные вещи
Вот тут собственно заполняется.
Значит надо совмещать. Задача даже более необходимая, чем кажется, так как в дев ветке вообще ничего уже по альфе не работает.
Предлагаю для начала включить коннектор в солюшен, чтобы его можно было компилировать со всеми другими программами. Затем, нужно перечислить все эти изменения и отличия. Потому что я даже не смотрел ни новый коннектор, ни старый на совместимость с S#. Вот как недавно было со стоп заявками... Надо начать, потом станет веселее. Не дело, вместо фиксов в существующем коннекторе, плодить новую ветку.
Пишу отличия которые я знаю. Если я не прав Сергей пусть меня поправит.
наличие методов UnregisterPortfolios(), UnregisterSecurities(), UnRegisterOrders(), UnRegisterMyTrades(), UnregisterOrders(), UnRegisterPositions() - которые позволяют убрать подписку на получение этих данных. Есть и обратные методы RegisterXXX(). Например нужны данные только по позициям, тогда дерегистрируем все таблицы после старта экспорта и включаем RegisterPositions(). Будем получать только изменения по позициям и новые позиции, но позиция Деньги сюда не входит. Методы помогают отключить ненужный прием данных.
StartExport() - автоматом запускает экспорт основных данных. Таким образом если например бумаги не пришли в событии TraderConnected, они придут позже. (Часто бывает что в старом коннекторе при старте бумаги не приходят или портфели.).
небольшое отличие в постановке стопов. У меня стоп цена передается в AlfaStopCondition. Так же есть поддержка трейлинг стопов.
Полностью асихронная модель приема данных от терминала. Все приходящие данные заворачиваются в очередь. Обработкой очереди занимается отдельный поток. Таким образом блокировки терминала минимальны. Поток минимально обрабатывает очредную порцию данных и передает ее выше, в обертку для таблиц. Каждая таблица имеет свою очередь и обрабатывает ее своим потоком. Парсит данные и передает их тем, кто на них подписался. Получаем многопоточный прием данных. По каждой таблице приходить будет в своем потоке. В стандартном коннекторе данные от таблиц идут в одном потоке.
Работает нормально подписка на разные инструменты, стаканы и сделки по инструментам. ЧТо позволяет работать с корзиной стратегий.
Заявки подаются асинхронно. То есть не ждем от терминала ответа при передаче ему заявки. Трейдер просто ставит заявку в очередь и возвращает управление. Дальше уже менеджер очереди двигает заявку в Терминал. От терминала тоже не ждем приема заявка. Подтверждение принимаем по событию OrderConfirmed. По этому же событию принимаем ошибки регистрации. В стандартном коннекторе ожидается подтверждение приема заявки. Так же нет событий об ошибке регистрации.
Рыночное время берется напрямую с терминала, а не с внутреннего таймера.
На все методы обращения к терминалу стоит глобальный лок. То есть только один поток в одно время может работать с терминалом. Запрос истории, например, вешает все процессы на время получения данных. Он вешает в любом случае терминал, но без локов ком объект может загнуться при обращении с другого потока. С локами после получения данных все продолжает работать.
Ну и есть известные досадные недоработки или особенности.
Нет поддержки атомарной перерегистрации, по причине невозможности реализации ее через событийную модель. Намеренно отказался от подачи заявок с ожиданием. Это вешает терминал.
Не совсем правильная работа со стопзаявками, что отражается на стратегиях в неверном учете сделок по стоп зяавкам. Связано это с недопонимаем модели сток шарпа и тем что в Альфе стоп заявка не генерит лимитную заявку, а просто активируется. Будет пофиксено.
Порой котирование не правильно функционирует. заявка может исполниться а котирование не знает про это. Еще не проверял толком где глюк. Как разберусь где проблемы, пофиксю.
Не все поля заполняются как нужно в экспортируемых данных (та же беда у стандартного коннектора). Буду фиксить постепенно.
Нет поддержки опционов совершенно. (та же беда у стандартного коннектора). Как доберусь до опционов сразу сделаю. В планах есть.
Ну и наличие кучи фоновых потоков не облегчает отладку, хотя в принципе они локализованы и трудностей не вызывают.
Я на днях попытался использовать альфа коннектор из транка - он практически не работает. Насколько я могу судить, альтернативный коннектор тоже не особо стабилен. Поэтому особого смысла в сохранении чего то в стабильном виде нет. Оно все нестабильно. Поэтому и настаиваю, чтобы это слить в одну ветку, чтобы хоть как-то довести до рабочего состояния.
Пункт фич, что вы привели, выглядят интересными. Предлагаю мержить с основным коннектором.
Опять же там грядет смена платформы. Я все равно планирую пока сидеть на альфе длительное время особенно с перспективой будущей платформы. Обещания красивые. Так что и под новую скорее всего буду делать коннектор. Как-то так.
Мне кажется, мы о разном говорим.
Я рад, что Альфа продолжит развиваться, и что лично вы на ней остаетесь. Но я пишу о том, чтобы сделать сейчас один коннектор, и чтобы в деве что-то заработало. Сейчас есть очень большая вероятность, что в 4.1 попадет что-то не работающее. Ваш коннектор, как я понял, вообще даже не попадает в архивы. Следовательно, при каждом обновлении рефов он может быть не совместим. С учетом того, что вы, как и сами пишите, пока не до конца понимаете модель S#, это накладывает определенные риски и на ваш альтернативный коннектор.
Поэтому, чтобы хоть как-то сдвинуть процесс с мертвой точки, и сделать что-то действительно удобное и работающее, я предлагаю совместить коннекторы в один. дев коннектор вообще сейчас не работает. Ваш коннектор, судя по всему, работает, но с ошибками. Имеет ли смысл вести 2 ветки неработающего? На мой взгляд, нет.
Какие предложения по совмещению? Я пока плохо представляю сей процесс.
Совершенно верно. В итоге мы получим мою версию коннектора или придется дополнять версию базовую. Поскольку как мне известно все фичи что есть в базовом есть у меня. Сергей писал под задачу. Что надо было то сделал. Он не ставил целью сделать пупер либу. Мне нужно было больше функционала, я расширил его код. Вот собственно и все.
А вообще предлагаю с ним и поговорить. Пусть он озвучит свое видение. Он же тоже замешан во всем этом :)
Скрещивать два коннектора смысла мало в силу различий в архитектуре и авторов - получится нечто еще более сложное и менее рабочее. У Родиона есть хорошия решения, которые можно позаимствовать. Предлагаю оставить два коннектора, а я по мере возможностей приведу коннектор из транка в порядок.
Хорошее дело затеял, Родион
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/15775
Посмотрел вчера код альтернативного коннектора. Чтож. Написано много.😂 Я бы даже сказал, есть какой-то элемент овердизайна.
Сергей обещал перетащить свои изменения из транка в дев. Там сделана асинхронная отправка заявок. Ваш коннектор с локами - это путь к дедлогам (что и случилось в маркет котировании). Поэтому, мне кажется, основной коннектор так и остается основным коннектором.
Идея с таблицами интересная. Советую посмотреть на структуру метаданных в квике и плазе. Потому что сейчас выглядит как-то недоделанно.
Вести два коннектора накладно. Предлагаю доделывать только один. Его тестить, его и ревьюить.
Овердизайн остался похоже от полностью асинхронной модели. Планировал так сделать.
Локи есть только на метода терминала. Дедлок Не возможен при моей архитектуре асинхронной передачи данных и приема ордеров. Дедлоки были, но в другом месте. Я избавился о них. Да и они были временным решением. А без локов возможны зависания терминала. ЧТо я и наблюдал :).
Таблицы квика я не могу увидеть. Таблицы Алора и плазы я смотреть. Решил не наворачивать подобные конструкции отдав предпочтение простоте решения. Работать удобно и реализовать было быстро :).
Впрочем если будет рабочее решение мне неважно какое оно будет. Работало бы всё сразу, не было бы второго коннектора :)
Быстро реализовать - это как сейчас в основном коннекторе, ввиде строчки.
Если что-то не работало в основном коннекторе, то надо было его лечить. Зачем новый создавать?
Я это понял сразу.🙄
Почему это было неправильно:
Я все прекрасно понимаю. Я не понимаю только одного - отсутствие на мой взгляд единственно правильного пути развития. Это фиксинг багов в существующем коннекторе. Не сидеть, не ждать, не делать свое - а исправлять именно то, что было изначально.
Дело конечно ваше. Но на мой взгляд время можно было бы существенно сэкономить + уже сейчас иметь продакшен версию для альфы.
Вообще то да😂 Это самый банальный путь, и вот мы уже несколько дней пытаемся понять вместе, почем он не был выбран.
AlfaPlus не собирается после всех переработок. Почему то пишет, что AlfaDirectClass нельзя использовать, нужно использовать доступный интерфейс) Раньше не было такого.
Спасибо, Родион. Будем тестить.
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/15861
Ну и данную версию я очень плотно тестировал в связи с тем, что не работали стратегии правильно итд. Тестировал по части подачи ордеров.
тест 1) Нарисовал стратегию которая ставит орде и тут же его снимает. И так до бесконечности. Запустил 4 таких стратегии дабы они конкурировали. Прошло около 1000 ордеров, без единого бага.
тест 2) Нарисовал стратегию которая по концу свечи, заводит котирование на покупку. Если купилось, то по концу следующей свечи, заводит котирование на продажу. Одновременно стартовало 4 таких стратегии по концу свечи. То есть не всегда ордера проходили сразу. ПРошло Сделок 500 таким образом. Ну и несколько часов еще в одну стратегию стояло колбасилось, перед этим. Если учесть что работало даже не по стакану несколько часов, то все сделки завершались успешно. Со стаканом тоже.
Это к вопросу надежности подачи заявок. Вполне надежно.
Добрый день. Я погонял данный коннектор пару недель, все отлично работает. Паралельно запускал 7 стратегий на разных инструментах. Ничего не валится. Единственная просьба добавить какой-нибудь флаг, который бы отрубал бы неинформативные (наверно не только для меня) сообщения вида this.AddInfoLog("OnProcessPortfolios() {0}", data.ToString()); this.AddInfoLog("OnProcessPositions() {0}", data.ToString()); ... , которые засоряют логи.
Вообще эту мелочь надо доделать чтобы выводиласьнепосредственная информация. Но это минорные баги. Так что пока не обращаю внимание на это. Сделаю позже.
По поводу засора логов данными не только у вас желание это убрать. Ну эту беду решили насколько я знаю в фильтре логгера. Поищите тему "Заявка в процессе регистрации".
А обновить коннектор советую. Последний релиз уже проверен тестами, боевой эксплуатацией. По части надежности подачи заявок, не было нарицаний. Может где чего не считается или какие неявные баги, выплывут потом.
БИБЛИОТЕКА (КОННЕКТОР ALFAPLUS) СОБИРАЛАСЬ И ТЕСТИРОВАЛАСЬ С RELEASE 4.0.22
В дальнейшем буду указывать версию S#, ато получаются непонятки и не работает у людей.
стоп-заявки не приходят через _trader.NewStopOrders
Тока что проверил. Все есть и приходит. Релиз я указывал сверху. На нем точно работает. Если что не работает, нужно более широкое описание проблемы.
и в списке _trader.StopOrders тоже их нет
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/15942
Релиз 4.0.22
Новый коммит: http://stocksharp.codeplex.com/SourceControl/changeset/changes/16302
проверялся с релизом 4.0.22
Если брать "+5%/-5%" - то цена будет вне лимита для текущей сессии, соответсвенно заявка будет висеть невыполненная в состоянии ожидания. Вдобавок, BestAsk не обновляется, если инструмент не подписан.
Кстати да. Такая петрушка на фучах может быть. Спасибо :). Инструмент будет обновляться при старте экспорта. Это уже однозначно. И бест аск с бидом обновляются тоже. Я проверял на стоках все ок. А на фучах не проверил дырявая моя голова. Поправлю проценты. Перепроверю.
Может лучше планки? Security Min Max Prices.
Новый коммит: http://stocksharp.codeplex.com/SourceControl/changeset/changes/16310
для релиза 4.0.22
Мне кажется, что Михаил другое имел ввиду. Что то вроде лимитов.
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/16430
тестировался на релизе 4.0.22
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/changes/16718
Версия S# 4.0.22
мелкая правка. Запрос истории возвращает свечки TimeFrame а не Candle. Собственно он их такими и создает, просто тип возвращал базовый. Неудобно несколько было я поправил.
Событие NewOrder приходит сразу же после присвоения ордеру номера на бирже. Как Сделано у Сергея. Неконец руки и у меня дошли. Будет приходить на 1-3 секунды быстрее чем раньше было :)
Если кто пользует еще мою версию коннектора отпишитесь я выложу апдейты. Версия все еще под 4.0.22. Под последние версии стокшарпа переписать руки не дошли. 4.0.22 хорошая стабильная версия пока сижу на ней.
Хотелось бы
Новый коммит http://stocksharp.codeplex.com/SourceControl/changeset/18825 Версия S# 4.0.22
прошу заранее прощения за кривой коммит в несколько этапов, бесит меня этот TFS, не могу с ним по человечески работать.