Основная функциональность в альфа-коннекторе завершена.
Код свободно доступен на http://stocksharpconnectors.codeplex.com/SourceControl/list/changesets
Из основных явных недоделок можно выделить:
- отсутствие поддержки опционов
- отсутствие поддержки стоп-ордеров.
В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.
评论 (145)
登录 或 创建账户, 登录或注册以发表评论
Несколько идей для доработки:
У кого еще какие будут варианты?
Добрый День Сергей,
А открытый интерес поддеживается альфа-коннектором? Или эти идеи пока для будущих фич?
Спасибо,
Исходники все на http://stocksharp.codeplex.com/ Открытый интерес ждет вас.😂
ОИ добавить делов на 10 минут. Последнее время в основном занимаюсь разработкой роботов на заказ. Как будет время обязательно добавлю.
Да, глянул код, похоже надо open_pos_qty добавить в фильтр и сохранить его в свойствах security во время OnProcessSecurities. Попробую.
Добавил открытый интерес для инструментов.
Добрый день, Сергей!
На мой взгляд, добавление заявок типа следящий стоп наиболее ожидаемо из вышеперечисленных доработок. В последней версии такие заявки так и не появились. Может я просмотрел? Тогда прошу прощения...
Добрый день. Конечно, никто тогда ничего не отписал - соотвественно я сделал вывод, что людям это не нужно. Буду иметь в виду, при возможности добавлю.
Уважаемые коллеги, доброго времени суток!
У меня Alfa/SampleGUI не отображает сделки и мои сделки на демо-версии альфадиректа? Какие таблицы в альфе должны быть для этого открыты? Таблица "мои сделки" открыта.
В AlfaConnector работает candleManager? Пробую создавать candleManager - свечи не приходят.
Спасибо.
Привет.
Настройка терминала описана на http://stocksharp.com/doc/ в Альфа-Директ -> Настройка терминала.
Если проблемы с примером, надо смотреть логи. Как подключить логи - http://stocksharp.com/doc/ в Альфа-Директ -> Отладка.
По поводу свечек - выложите сюда исходник и логи.
Вот логи:
Жму "Подключиться":
Жму "Сделки": В лог ничего не выводится. Окно "Сделки" пустое.
Выкладываю. Лог:
Исходник:
Спасибо!
Спасибо за описание. Проблема воспроизводится.
http://stocksharp.codeplex.com/workitem/483
Как будет время поправлю.
Исправлено. Проверьте, пожалуйста.
Проверил. По-прежнему не работает (в окне Сделки сделок нет).
Еще, когда нажимаю "Отключиться" такая ошибка возникает:
Вот логи:
Ошибка соединения
System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.
ОК
Судя по логам у Вас и в самом терминале на сегодня не было сделок.
В таблице сделок есть сделки по Лукойлу.
Uploaded with ImageShack.us
Скачал эту версию "7954 by masyura Jul 30 at 12:29 AM - [Альфа] Исправлено получение Моих Сделок" на http://stocksharp.codeplex.com/ Открыл stocksharp-7954\Connectors\Alfa\Alfa.sln. Скомпилировал. Заменил файл в своем проекте. Удалил и заново добавил в References.
Не работает.
Это демо-счет в Альфе?
Ну да, демо-счет. Я об этом в первом же посте написал.
На демо и счете и ММВБ пока нет возможности проверить, но на рабочем логине и фортс "мои сделки" стали отображаться.
Кто-нибудь еще может проверить на последней версии?
Хочу уточнить как должен работать пример Samples\AlfaDirect\SampleGUI:
Правильно?
PS: Я правильно понимаю, что свечи в candleManager'е формируются на основе этих данных о сделках?
"Мои сделки" на реале работает. Таблица "Сделки" на реале по-прежнему пустая.
Спасибо за прояснения. Фикс был сделан именно для Моих Сделок.
Окно сделки - пустое. Это недоработка в примере. Потому что нигде не подписываются на получения сделок об инструментах. Следует доработать пример, спасибо за замечание.
CandleManager строит свечки по сделкам, все верно.
Недоработка примера - http://stocksharp.codeplex.com/workitem/490
Пример уже исправлен? Где можно исправленный посмотреть?
Разве вот эта строчка не подписывает на получение сделок?
this.Trader.NewTrades += trades => this.GuiAsync(() => _tradesWindow.Trades.AddRange(trades));
А можно в двух словах, что там нужно добавить? Очень срочно надо. )))
Сделал. В двух словах явно бы не получилось описать. Из окна Инструменты сделки открываются также как и стаканы.
Спасибо. Все работает. 👍
иногда появляется блуждающая ошибка
У Вас старый код. В последней версии строчки закомментированы.
Для багов есть открытый Issue Tracker - http://stocksharp.codeplex.com/workitem/list/advanced . Так что просьба репортить туда.
Прикрепил исправленные файлы на основе 9308. Может пригодится кому. Поправил AlfaTrader.cs, AlfaWrapper.cs и SecuritiesWindow.xaml (из примера SampleGUI). Вроде ОИ получается при создании списка. Что не совсем понятно:
Создайте логин на коде плексе и я дам доступ на запись. Зачем сюда аттачи складывать, когда можно сразу в репозитарий залить. Там мы сможет наглядно увидеть изменения.
Вчера слил с codeplex репозитарий. Открыл в Connectors/Alfa.sln и собрал AlfaDirect. Все собралось. Затем AlfaTest не собрался:
Может я что-то не так делаю? Как правильно собрать?
Вчера слил с codeplex репозитарий. Открыл в Connectors/Alfa.sln и собрал AlfaDirect. Все собралось. Затем AlfaTest не собрался:
Может я что-то не так делаю? Как правильно собрать?
Пофиксил
В SampleGUI для AlfaDirect:
Окей. Спасибо.
http://stocksharp.codeplex.com/workitem/585
Произошло это из-за моего изменения. Теперь по умолчанию лучший бид, аск и последняя цена = NULL.
Соответственно в логгер сделал вывод "NULL". Если есть идея как вывести покрасивше - поправлю :)
Resolved with changeset 10068.
Исправлено на codeplex (пример и коннектор).
Подключаться можно как с уже запущенным терминалом, так и без терминала, указав у трейдера свойства Login и Password - терминал запустится и подключится автоматически.
В AlfaTest.exe ввожу логин и пароль и всегда получаю ошибку:
"Ошибка авторизации! Вероятно, Вы ошиблись при вводе имени пользователя или пароля. Повторите попытку максимально внимательно..."
Ввожу в терминале - все проходит.
Update: Также пропало окошко с выводом информации.
Ошибку авторизации поправил - http://stocksharp.codeplex.com/SourceControl/changeset/changes/10352
Окно пропало по задумке - на нем недобно что-либо читать, скролировать. Логи идут в окно Output у Visual Studio.
Обновился. Логин и пароль как раз ввожу. Но всегда ошибка авторизации. Через терминал все проходит. А через AlfaTest - нет. Через Alpha SampleGUI все тоже проходит.
Обновился. Логин и пароль как раз ввожу. Но всегда ошибка авторизации. Через терминал все проходит. А через AlfaTest - нет. Через Alpha SampleGUI все тоже проходит.
В AlfaTest для автоматической авторизации надо еще чекбокс включить. А вобще самое простое подключаться в уже запущенному терминалу.
Спасибо.
Запустил AlfaTest.ext через Debug. Соединился, нажал "Start Export". Через 3 секунды получил:
AlfaTest.vshost.exe Information: 0 : TestForm OnNewSecurities() A first chance exception of type 'System.NullReferenceException' occurred in AlfaTest.exe
Начиная с последних версий Stock# некоторые поля в инструментах теперь null, если не инициализированы. Это ошибка примера, если есть желание - можете исправить.
Если бы я знал еще как исправить...🤨
Еще один баг. Или может только у меня так. AlfaDirect SampleGUI. Запускаю, подключаюсь, жму "Портфели". И в "Портфели" "Текущий размер" всегда одна и таже цифра. Причем в терминале Альфа-Директ перестает обновляться информация по портфелю. ;(
Update: Перезапустил AlfaDirect, теперь в терминале стало все обновляться, странно.
А "Текущий размер" в "Портфели" так и должен быть статичным? Не должен меняться? Ткните пожалуйста где почитать как получать "текущий размер портфеля".
Чтобы информация по портфелю обновлялась, необходимо вызвать метод RegisterPortfolio. Возможно, в примере этого не делается. Это всего лишь пример и в нем нет задачи использовать все, что только можно. Только основные базовые вещи. Как будет время, посмотрю.
А ГО по портфелю как получить? Leverage показывает 0, а портфеле фьючерсы и опционы. Leverage не то конечно как я понимаю, но что отвечает за ГО по портфелю?
А Security.LastTrade.Price я так понимаю не для получения последней цены? Потому что у меня Security.LastTrade всегда null. RegisterQuotes и RegisterSecuritiesChanged делаю.
Открываем stocksharpconnectors\Connectors\Alfa\Connector\AlfaWrapper.cs, смотрим какая таблица и поля используются
Далее открываем доку из sdk альфы
ТАБЛИЦА «ACC_BAL» - АГРЕГИРОВАННЫЙ БАЛАНС ПОЗИЦИЙ ПО СЧЕТАМ Ключевое поле: treaty Поле Тип Описание treaty Integer Счет. acc_code String Портфель. forward_bal Float Баланс. money Float Деньги. deposit Float Гарантийное обеспечение срочного рынка. var_margin Float Вариационная маржа дня. long_bal Float Баланс длинных позиций на споте. short_bal Float Баланс коротких позиций на споте. call Float Требование. margin Float Маржа ФСФР. option_pl Float Финансовый результат опционов. profit_bal Float Нереализованный прибыль/убыток. daily_pl Float Прибыль/убыток дня. rel_pl Float %Прибыль/убыток дня.
Требуется вот это поле добавить? deposit Float Гарантийное обеспечение срочного рынка.
Если требуется, давай добавлю. Делов немного.
Верно, LastTrade не заполняется в Альфа-коннекторе. Надо доделать.
http://stocksharp.codeplex.com/workitem/630
Исправлено на Codeplex.
http://stocksharp.codeplex.com/SourceControl/changeset/changes/11339
Сергей, спасибо за детальное объяснение. Да, хорошо бы deposit добавить. Так как ГО по портфелю отслеживать требуется.
Спасибо за будущий фикс с LastTrade.
Кстати, а есть в планах создать коннектор на основе серверного API от Альфа-Директ, вместо интерфейса через COM? Например терминал Euphoria для альфы использует такое API (http://ni-soft.ru) . Но тогда если надо будет запустить одновременно и робота и терминал, то потребуется дополнительный логин получить.
Правда я списывался со службой поддержки, мне сказали, что они документацию по этому API не предоставляют сейчас. Потому что грядет его смена (уже как 2 года грядет) и будет также выпущена новая версия терминала Альфа-Директ.
Да и я так понимаю Альфа не так популярна как Quick, чтобы много сил тратить на этот коннектор.
По поводу ГО создал баг http://stocksharp.codeplex.com/workitem/632
По поводу серверного API, желания с ним связываться мало, к тому же публично он закрыт.
Альфа мне нравится намного больше, чем квик. Так что на любителя. По поводу коннектора, если будет фидбэк от пользователей по поводу багов/фичей, будут и фиксы (по мере наличия времени).
Альфа коннектор, в отличие от Квика, открыт. И доступен всем желающим для исправлений и дополнений 😎
В S#4.04 при запуске SampleAlfaCandles вылетает следующее:
Спасибо, проверю.
В 4.0.5 исправлено и работает.
ничего не изменилось(( и ещё не работает выбор времени начала и конца построения свечек на форме.
Не работает каким образом?
PS: проверил на двух ноутах - работают и свечки и выбор даты. Есть сдвиг с москвой по времени?
нет сдвига
терминал запускается ,выбираю инструмент и таймфрейм. нажимаю график и всё.вылетает этот эксепшен и причём подвисает терминал . в логе кстати свечки записываються
Возможности воспроизвести у меня нет. Так что можете провести debug самостоятельно. К тому же, если работает получение свечек - зачем смотреть пример?
всё таки удалось запустить пример со свечками,удалив из файла chartwindow.xaml из строчки Title="ChartWindow" Height="480" Width="640" Icon="/SampleAlfaCandles;component/stocksharp.ico" Topmost="False" WindowStartupLocation="CenterScreen"> вот эту запись --Icon="/SampleAlfaCandles;component/stocksharp.ico" Но по прежнему не работает выбор начала и конца построения свечек.причём выбор даты работает. Выявилась ещё одна проблема. свечки строятся не по таймфрейму который выбирается,а в зависимости от выбранного интервала истории. Так например выбираю минутки ,интервал оставляю по дефолту,а строятся почему то часовики. наименьший таймфрейм который выводится 15мин ,в независимости от того что выбраны минутки.
Спасибо по поводу иконки. Как оказалось, это работает не на всех машинах.
По поводу свечек - возможно am chart их так группирует, посмотрю в чем причина.
Для референса - http://stocksharp.codeplex.com/workitem/692
Не получаеться выставить заявку в примере SampleGui Нормально подключаюсь получаю все инструменты и так далее. Но пример не отправялет завку в альфу,пробовал то же самое вручную в своём терминале ,всё нормально. Чем это может быть вызвано? При этом никакой ошибки проект не отлавливает....
Проверил маркет и лимитные заявки - работают обе.
В терминале в таблице с заявками она вобще не появляется? Или может Вы отправляли по цене вне лимита и она при этом не выставится в стакан?
Как будет время еще посмотрю.
В таблице не появляеться ,потому что и не выставляеться.Точно проверил несколько раз,не вне лимита и потом я точно такую же отправял вручную и она ставилась нормально. Версия альфы 3.5.2(сборка 7) Спасибо за быстрый ответ!
Так. C codeplex можете собрать Connectors\Alfa\Samples\AlfaTest\ и выставить заявку через него? Заодно в output окно Visual Studio идут подробные логи от коннектора.
Запустил коннектор альфа директ ,вручную только прописал именно свой счёт потому ,что у меня их 2. И он всё равно не выставляет заявки Может быть проблема в двух счетах,при том что один на фортсе ,а другой на споте?
Логи: AlfaTest.vshost.exe Information: 0 : TestForm AlfaTrader successfuly created <-------------------------------->
[Удалено в целях безопасности / Сергей]
AlfaTest.vshost.exe Information: 0 : TestForm Buy Limit AlfaTest.vshost.exe Information: 0 : AlfaTrader RegisterOrder: TransactionId=2956805003, Id=0, Price=7900, Balance=1, Security=SBER-12.11@FORTS, State=None
Молодец, двигаешься в верном направлении. В Альфа-коннекторе не поддерживается несколько счетов.
В AlfaWrapper.cs есть такой код.
Чтобы сделать поддержку нескольких счетов, это надо еще 150р заплатить за подключение клиринговой пары =)
Огромное спасибо ,никогда бы не догадался ,поменял вместо "-000" на "-001" и всё стало выставляться!
Вот ещё одну вещь заметил ,когда запрашиваю свечки через getCandleBounds допустим часовики,то последняя готовая свечка приходит с неправильным закрытием p.s Говоря про последнюю свечку я говорю именно про ту которая уже закрылась и поменяться она уже не может.
Т.е. open/high/low правильные, а close - нет? И так только для последней закрытой свечки?
Проверю open,high,low ,но Close точно с потолка берёться
Появился вопрос такого рода: работаю над арбитражным роботом, который берет данные из стакана в стиле security.bestbid.price, используя один интерфейс Trader для связи с терминалом, но в таком случае метод Trader.RegisterSecurity, quotes, trades и так далее обрабатывает только один инструмент. Для решения этого вопроса я создал еще один AlfaTrader Trader1, все работает, но программа работает с такой скоростью, что отвечает только окно с логами, а все остальное наглым образом виснет. Ноутбук у меня вроде хороший, процессор i5, 8 gb ram.
Вот код:
Как это возможно оптимизировать?
public void Calculate() { this.ind = new Ind(); this.ind2 = new Ind2();
Это я знаю, просто до этого с одним трейдером второй инструмент молчал
Оба инструмента должны быть в списке позиций/балансов. Тогда должно нормально работать. В доке про это есть упоминание.
Как возможно получить Security.OpenPrice?
Инструмент регистрируется, но значение всегда null... в коннекторе не нашел
Добавил в коннектор.
http://stocksharp.codeplex.com/SourceControl/changeset/changes/12431
Спасибо, Сергей
Возникла такая трабла - утром все нормально работало, спустя пару часов запустил заново робота и начал выскакивать эксэпшн stcClientError. Просто при попытке создания шлюза к серверу. Пробовал на всех своих заготовках, там везде разные сборки StockSharp.AlfaDirect.dll
Никто не знает, может у альфы какие то проблемы там?((
Распечатайте текст ошибки сообщения message и код ошибки. Все станет понятно. А так, для информации, иногда надо терминал перезапускать.
У меня тоже самое возникает в не рабочее время. Вообще в нерабочее время и по выходным с Альфы добиться какого либо вменяемого результата практически не возможно бывает. Выкачать данных и то дилемма. И кэш чистю, и перегружаю. Боле менее стабильная работа тока в рабочие часы.
Осваиваю Stock#, очень нравится. Планирую глобальный переезд. Немножко пока плыву в многочисленных методах. Не хватает рабочего примера работы с альфой через ту же SmaStrategy. В частности несовпадение методов Trader для Смарта и альфы немножко сбивает. А так продолжаю разбираться, работа конечно огромная сделана, большое человеческое спасибо создателям.
кстати на примерах вылетает то же самое
Кстати, было бы хорошо добавить еще Security.ClosePrice. Добавил бы сам, но еще не регистрировался на codeplex
Кто мешает? Регистрация занимает 1 минуту :)
На будущее стоит заводить баг через Issue Tracker на код плекс.
http://stocksharp.codeplex.com/workitem/list/advanced
ClosePrice - это цена закрытия сессии или последняя цена? Зачем она нужна в нерабочее время? Если после вечернего клиринга, то OpenPrice как раз содержит цену открытия вечерней сессии. Какой use-case для цены открытия и что под этим имеету в виду?
Цена закрытия предыдущей сессии. Нужна для расчета изменения стоимости актива(очень важно для стратегий парного трейдинга например). Я у себя в коннекторе добавил уже:
В AlfaTrader
И в AlfaWrapper
К сожалению, не умею пока пользоваться codeplex, чтобы добавить, в ближайшее время постараюсь освоить...
const string _securityFieldsCreate = "paper_no, ANSI_name, mat_date, status, p_code, place_code, curr_code, go_buy, go_sell, board_code, open_pos_qty, open_price, close_price"; const string _securityFieldsUpdate = "paper_no, sell, sell_qty, buy, buy_qty, min_deal, max_deal, open_pos_qty, open_price, close_price";
const string _securityFieldsCreate = "paper_no, ANSI_name, mat_date, status, p_code, place_code, curr_code, go_buy, go_sell, board_code, open_pos_qty, open_price, close_price"; const string _securityFieldsUpdate = "paper_no, sell, sell_qty, buy, buy_qty, min_deal, max_deal, open_pos_qty, open_price, close_price";
Товарищи, есть такая трабла, может кто знает как ее решить?
Терминал дает не правильную цену открытия в таблице котировок, при этом на графике на свечке все правильно...
Цена открытия - это цена открытия вечерней сессии.
А реально получить цену открытия текущей сессии?
Да. Как вариант можно с сервера запросить минутную свечку 10:00 - 10:01 и посмотреть у нее цену открытия.
Но спасибо за разъяснение
Этот способ я пытался провернуть, но у меня почему то виснет GeHistoryData)
Сейчас решил провернуть стратегию без фьючей, так что надеюсь отложить этот вопрос в ящик)
Берите эту свечку не с сервера, а локально из базы терминалы. Тогда ничего виснуть не будет.
Подскажите пожалуйста, это только у меня, или вообще с CandleManager проблемма под Alfa? Я никак не могу добиться от него любого не null значения. Перебрал уже все примеры, добавил по нему все что можно. Все подсоединяется, квоты бегут в логах, GetMarketPrice выдает нормальные цифры, а candleManager молчит как партизан. Сборка 12564.
Не знаю, не пробовал. Можно будет посмотреть. У меня своя реализация получения исторических/реал-тайм свечек из терминала. Возможно к Новому Году добавлю ее в публичный коннектор в том числе.
UP. Заработало. Обновил, все перекомпилил, открыл в Альфе все возможные таблицы.
Хорошо, посмотрю.
У альфа-конектора мало пользователей, про ошибки тоже практически никто не пишет. Если возьмете Квик, то там точно все что есть в сток-шарпе работает.
У меня почему - то две заявки не регистрируются подряд...
Вторая всегда обрабатывает и исполняется, а первая даже не появляется в таблице в Альфе.
От инструмента не зависит
ну она равна выбранному инструменту, с этим все ок, то есть, когда в других местах я задаю получение стакана или чего то еще по этому инструменту, то все работает нормально.
Разница только в инструментах. Для отладки можете в первом ордере поменять инстурмент на security_2 и запустить. Если исполнится - значит проблема в инструменте.
попробовал, вообщем получается так, что исполняется всегда только вторая заявка
если поменять местами, то наоборот order1 выполнится, а order нет
Попробую, спасибо. Кстати вы писали, что существует какой то другой метод получения свечек от альфы, было бы очень приятно увидеть это в доступе) готов тоже скинуться на колбасу:)
Окей. Выложу ближе к выходным.
Жаль, что спасибо можно говорить только один раз=)
Ссори за офф. Сырокопченую?
Попробую найти, а так да, есть такой косяк у них((
Как выяснилась такая же ерунда, если, например, отменить ордер и тут же отправить заявку на регистрацию.
У себя в роботе после первой операции запускаю таймер и жду пока та первая заявка отменится / в Вашем случае исполнится
На самом деле нет такого таймаута фиксированного. Я пытался где-то пол-года тому назад подобрать, но всегда получалось по разному. Бывало что лимитка + стоп проскакивали менее чем за секунду, а бывало и за 3 не получалось. Мои выводы:
да, посмотрим чего сделают. обещать я тоже умею 😎
Все ждут в принципе)
Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)
жду не дождусь)
Залил реализацию получения реал-тайм свечек на CodePlex.
Свечки берутся локально из терминала - должен быть открыт график с этими свечками для данного инструмента и именно этого же тайм-фрейма.
Если будут вопросы или сложности - пишите. Как будет время добавлю это в пример и обновлю документацию.
trader.CandlesFinished += OnCandlesFinished; trader.CandlesStarted += OnCandlesStarted; trader.CandlesChanged += OnCandlesChanged;
trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));
Порядок =)
trader.CandlesFinished += OnCandlesFinished; trader.CandlesStarted += OnCandlesStarted; trader.CandlesChanged += OnCandlesChanged;
trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));
trader.CandlesFinished += OnCandlesFinished; trader.CandlesStarted += OnCandlesStarted; trader.CandlesChanged += OnCandlesChanged;
trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));
Сергей, огромное спасибо, будем пробовать!
Сергей, все копался копался - не знаю что куда воткнуть.
Можно ли в AlfaTrader добавить GlobalFilter? Чтобы не было обязательным держать открытым таблицы заявок, сделок и так далее, было бы очень удобно.
Выдержка из документации Альфы:
Установка и получение глобальных фильтров. СИНТАКСИС [VB] ADObj.GlobalFilter(Name)
[C++] HRESULT get_GlobalFilter(BSTR Name, BSTR *Value); HRESULT put_GlobalFilter(BSTR Name, BSTR Value); ПРИМЕЧАНИЕ Терминал устанавливает на сервере «Альфа-Директ» так называемые глобальные фильтры, которые указывают какую именно информацию необходимо присылать клиенту. Выбор этих фильтров определяется открытой конфигурацией в терминале. Данное свойство позволяет установить дополнительные фильтры к уже существующим. При чтении этого свойства будут доступны лишь те фильтры, которые были установлены с помощью открытого интерфейса. Параметр Name определяет с каким именно фильтром будет работа: • «FI» – котировки; • «AT» – все сделки; • «Q» – очереди заявок. Значение фильтра задается как набор цифровых кодов инструментов (paper_no) соединенных знаком «|». ЗНАЧЕНИЯ ЦИФРОВЫХ КОДОВ ИНСТРУМЕНТОВ МОЖНО УЗНАТЬ ИЗ ТАБЛИЦЫ ЛОКАЛЬНОЙ БАЗЫ ДАННЫХ.
В принципе я сам уже добавил... Завтра как рынок откроется - посмотрю, будет ли работать
Полезности вобщем-то мало. Если стакан, например, перестанет обновлятся, а такое бывает периодески c альфой - в роботе вы этого даже увидите. Если думаете, что будет выше скорость получения рыночных данных - возможно, но на малозначимую величину. Чем проще код - тем он надежнее.
Тут конечно согласен
Печально, а то с парный трейдингом беда теперь из за этого)
Вы посмотрели в чем именно проблема - в получении свечек или в том, как Вы их на графике отрисовываете?
свечки получаю и те и другие, на графике получается каша, потому что по мере поступления свеч от разных инструментов они как один инструмент рисуются, чем то пульс напоминает))) И индикатор такую же ересь выдает
Если нормально приходят свечки для обоих инструментов - тогда в коннекторе проблем никаких нет. К какому инструменту какая свечка относится можно определить по токену. Как отрисовывать информацию на графике - личное дело каждого )
в принципе решил я вопрос, но как то все очень страшно выглядит(
Создал два AlfaTrader. Для каждого свой Trader.Connect() и Trader.CandlesStarted/Changed/Finished создавались, ну вот так он в принципе стабильно получает свечки, но все же колхозно все выглядит, думаю может объявится потом много багов в этом способе решения( так что буду ждать новый релиз от S#, может когда нибудь появится возможность такая
На каких вкладках были открыти графики? На разных? Есть мысль, что если график открыт на неактивной вкладке после определенного интревала альфа-директ перестает его обновлять в целях оптимизации. Как только перейти на ту владку - он подгрузит то, что простил. Пробовали на одной вкладке оба графике держать? Идея с двумя коннекторами однозначно плохое решение.
Если запустить 100 коннекторов, как в примере с параллельным тестированием, на каждый коннектор по стратегии, то подвешивается сам Альфадирект, видать не успевает обрабатывать. Сижу думаю, как поэлегантнее решить вопрос одновременной работы сотни-другой стратегий...
В Альфа-Директ нельзя транзакции с ордерами делать одновременно. Т.е. если, например, две стратегии одноврменно отправят ордера - второй ордер Альфа завернет.
В чем смысл ста коннекторов? Посмотрите код коннекторе - очевидно, что никакого. Достаточно одного.
Если необходимо запускать большие портфели стратегий - прямая дорога на Plaza (или хотя бы на Quik).
Да я просто не особо углубляясь взял с примера по образцу. Сейчас исправил, на один коннектор навешиваю стратегии. Достаточно шустренько все бегает. Альфа директ не морозит. На проблему одновременного посыла ордеров я еще не натолкнулся.. как вариант можно сделать буфер на край, по очереди их в альфу скармливать.
Ковыряюсь в процессах, меня терзают смутные сомнения что ошибка в самом коннекторе, событие ProcessHistoryCandles отрабатывается отлично, и свечки, которых не видно в кандле менеджере стратегии, успешно проходят через CandlesChanged.SafeInvoke(token, new [] ); Куда они дальше идут я не вижу, но есть подозрение что это место сбоит. Можно предположить что по неким причинам в хранилище складываются только свечки с последнего секьюрити. Причем первую свечку успешно выдаем всем, а вот следующую только последнему секьюрити зарегестрированному.
вот здесь согласен. сталкивался с этой бедой
Все-ж CandleManager неправильно выбирает свечки из коннектора.
trader.CandlesFinished += (t, candlesLocal) => { ... // вот это НЕ работает var candles = candleManager.GetTimeFrameCandles(strategy.Security, timeFrame, bounds);
// это работает var candles2 = trader.GetLocalHistoryData(strategy.Security, timeFrame, bounds); .... } Выход сейчас один, напрямую по событию конца свечи скармливать в стратегию напрямую данные, в обход кэндле-менеджера. Надеюсь баг локализован окончательно и не заживется долго )
private void TableChanged(string tableName, string tableParams, object data, object fieldtypes) { NewDataExported.SafeInvoke();
// case _positionsTable: // ProcessPositions.SafeInvoke((string)data); // break; } }
В TableChanged пропущена_myTradesTable, поэтому и не работает. Создавайте отдельные топики для каждой проблемы, будет удобнее )
Да. Я заметил. У себя в коде я поправил и сбилдил библиотеку на базе вашего кода из trunk ветки Кодеплекса.
Ссылка на отдельную тему http://stocksharp.com/forum/2324/niet-sobytiia-NewMyTrade/