Основная функциональность в альфа-коннекторе завершена.
Код свободно доступен на 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. Заработало. Обновил, все перекомпилил, открыл в Альфе все возможные таблицы.
Хорошо, посмотрю.
У альфа-конектора мало пользователей, про ошибки тоже практически никто не пишет. Если возьмете Квик, то там точно все что есть в сток-шарпе работает.