← Voltar

Коннектор к IB (beta)

Сделал коннектор к Interactive Brokers. Хочу предоставить для бета тестирования. В дальнейшем как коннектор будет распространяться пока не известно, но у тех, кто поможет в тестировании он точно будет.

Коннектор предоставляется только для тех, кто:

  • уже пишет роботов
  • является клиентом (чтобы иметь реальное подключение к торгам)
  • готов помочь в случае устранения ошибок (отдам с исходным кодом, чтобы было проще протестировать)
  • не является интернет фантомом, а реальный пользователь с этого или другого форума

Пишите сюда или в скайп mika_soukhov

Comentários (18)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

Mikhail Sukhov
Mikhail Sukhov Autor

Пару слов о реализации. Первоначально взял за основу решение от Динозавров. Решение не очень понравилось в связи с тем, что оно как-то странно выглядело с т.з. C# стиля. В последствие понял, что это просто порт Java кода, который предоставляет брокер (причем судя по версиям, далеко не up to date). Поэтому в дальнейшем смотрел на Java код. К изумлению, он оказался даже понятнее, чем C# порт (в котором я нашел довольно много ошибок, как и в самой документации IB😂 ).

gramp
gramp

отправил запрос в скайп

Maxim
Maxim

Михаил, привет.

Попробовал SampleIB на тестовом TWS. Отправлять заявки получается. Информация по заявкам приходит. Портфель и позы тоже видны и изменяются в SampleIB.

А вот информации о сделках в SampleIB не появляется, хотя в TWS сделки появляются.

Не сталкивался ли ты с подобной ситуацией? Может какие дополнительные настройки нужны в TWS (в доках не нашел ничего)? Приходили ли у тебя сделки в SampleIB?

Mikhail Sukhov
Mikhail Sukhov Autor

API у ИБ не дает ленту тиков.

Maxim
Maxim

Извини, забыл уточнить, я имел ввиду свои сделки.

Ты имеешь ввиду, что свои сделки API тоже не дает?

Maxim
Maxim

Михаил, привет.

Видел ли ты предыдущий вопрос? Можешь ли уточнить, получалось у тебя получать свои сделки из IB при помощи SampleIB? Или IB не поддерживает этот функционал?

Kazai Mazai
Kazai Mazai

Maxim: Михаил, привет.

Видел ли ты предыдущий вопрос? Можешь ли уточнить, получалось у тебя получать свои сделки из IB при помощи SampleIB? Или IB не поддерживает этот функционал?

IB отдает информацию по позициям, openOrders, ordersStatus, и Execution. Из этой инфы можно собрать сделки.

У меня свой коннектор к Ib, и у меня тоже траблы с появлением сделок примерно с 4.1.19.1 До этого, кажется, был на 4.1.16.1 и все было окей.

Беда в том, что еще и IB API обновилось.

Могут быть два источника проблемы.

IB что-то изменили, возможно, порядок отдачи execution, order status или open orders. Либо какой-то косяк с Id ордеров. Но я проверил, все приходит, айдишники правильные, OpenOrders как и раньше приходит два раза.

Используются следующие методы, и поэтому вызывают подозрение:

StockSharp.Algo.BaseTrader.GetOrder(bool? isConditional, long transactionId) Раньше был GetOrderByTransactionId(int id)

StockSharp.Algo.BaseTrader.GetOrder(StockSharp.BusinessEntities.Security, StockSharp.BusinessEntities.OrderTypes, long, System.Func<long,StockSharp.BusinessEntities.Order>, System.Func<StockSharp.BusinessEntities.Order,bool>) вроде бы не поменялся(по крайней мене внешне)

StockSharp.Algo.BaseTrader.GetOrder(StockSharp.BusinessEntities.Security, StockSharp.BusinessEntities.OrderTypes, long)

StockSharp.Algo.BaseTrader.AddMyTrade(StockSharp.BusinessEntities.Security, long, long, long, System.Func<long,StockSharp.BusinessEntities.Trade>, System.Action<StockSharp.BusinessEntities.MyTrade>)

Как только, так сразу попробую пересобрать своего трейдера со старым IB API, новым S# и наоборот. Если что нить обнаружу, думаю, что это будет солюшеном для обоих коннекторов.

Беда, что проверить можно только в trading hours.

Kazai Mazai
Kazai Mazai

Kazai Mazai:

Maxim: Михаил, привет.

Видел ли ты предыдущий вопрос? Можешь ли уточнить, получалось у тебя получать свои сделки из IB при помощи SampleIB? Или IB не поддерживает этот функционал?

IB отдает информацию по позициям, openOrders, ordersStatus, и Execution. Из этой инфы можно собрать сделки.

У меня свой коннектор к Ib, и у меня тоже траблы с появлением сделок примерно с 4.1.19.1 До этого, кажется, был на 4.1.16.1 и все было окей.

Беда в том, что еще и IB API обновилось.

Могут быть два источника проблемы.

IB что-то изменили, возможно, порядок отдачи execution, order status или open orders. Либо какой-то косяк с Id ордеров. Но я проверил, все приходит, айдишники правильные, OpenOrders как и раньше приходит два раза.

Используются следующие методы, и поэтому вызывают подозрение:

StockSharp.Algo.BaseTrader.GetOrder(bool? isConditional, long transactionId) Раньше был GetOrderByTransactionId(int id)

StockSharp.Algo.BaseTrader.GetOrder(StockSharp.BusinessEntities.Security, StockSharp.BusinessEntities.OrderTypes, long, System.Func<long,StockSharp.BusinessEntities.Order>, System.Func<StockSharp.BusinessEntities.Order,bool>) вроде бы не поменялся(по крайней мене внешне)

StockSharp.Algo.BaseTrader.GetOrder(StockSharp.BusinessEntities.Security, StockSharp.BusinessEntities.OrderTypes, long)

StockSharp.Algo.BaseTrader.AddMyTrade(StockSharp.BusinessEntities.Security, long, long, long, System.Func<long,StockSharp.BusinessEntities.Trade>, System.Action<StockSharp.BusinessEntities.MyTrade>)

Как только, так сразу попробую пересобрать своего трейдера со старым IB API, новым S# и наоборот. Если что нить обнаружу, думаю, что это будет солюшеном для обоих коннекторов.

Беда, что проверить можно только в trading hours.

Откатил свой коннектор до S# 4.1.15.0, а IB API оставил новое. Все окей. В 4.1.16.1 изменился механизм состояний ордеров, вероятно поэтому ордера не подхватываются в mytrades

Maxim
Maxim

Kazai Mazai, а какую версию IB ты используешь?

Kazai Mazai
Kazai Mazai

Maxim: Kazai Mazai, а какую версию IB ты используешь?

Тепер снова 4.1.15.0

Maxim
Maxim

Я имел ввиду не версию стокшарпа.

Вопрос какой версией TWS ты пользуешься?

И второй вопрос: ты используешь свой коннектор для связи с TWS или стокшарповский коннектор?

Kazai Mazai
Kazai Mazai

Maxim: Я имел ввиду не версию стокшарпа.

Вопрос какой версией TWS ты пользуешься?

И второй вопрос: ты используешь свой коннектор для связи с TWS или стокшарповский коннектор?

9.70 бета csharp api.

Там, кстати, косяк с знаком разделителя в чтении double из сокета =)

Свой использую.

dij1
dij1

Коннектор к IB в последней версии неработоспособен. Очень жаль, очередное разочарование.

error

er2

Андрей Шабанов
Андрей Шабанов

Коннектор к IB в последней версии неработоспособен. Очень жаль, очередное разочарование.

буквально вчера запускал демо IB и обертку из сэмплов, вроде все отображал вполне нормально😒

dij1
dij1

Насчет демо ничего не могу сказать, но на реальном счету выдают две вышеописанные ошибки. Как погуглил, там ошибка региональных настроек или что-то вроде того. На самом деле, IB выпустили уже свой коннектор, так что вопрос скорее в том, как его с S# подружить.

Mikhail Sukhov
Mikhail Sukhov Autor

dij1: Как погуглил, там ошибка региональных настроек или что-то вроде того.

Если ошибка со скрина, то это не региональные настройки.

Коннектор в ИБ готов протестировать через скайп.

Petr
Petr

Добрый день! Я попробовал запустить пример коннектора (IBSample) на версии 4.2.2.24, но при нажатии кнопки подключить выдает следующую ошибку:

System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в StockSharp.Algo.Connector.ProcessEvents(Action handler, Bolean enqueue)

В отладчике пишет информацию:

mscorlib.dll!System.Threading.Monitor.Wait(object obj, int millisecondsTimeout, bool exitContext) mscorlib.dll!System.Threading.Monitor.Wait(object obj) StockSharp.InteractiveBrokers.dll!#=qu8stL08l5q5pqNTNMXblWZ9Qk9ffYQk79urbQKYz2zzCobxJghuaQYESVhkbBFCE.#=qDoe3YItxzeLBR9Y3HY3zQA==(bool #=qs37dW5RKXxvuXN677jNdMg==) StockSharp.InteractiveBrokers.dll!StockSharp.InteractiveBrokers.IBTrader.#=qS0GkCRV0Uy_ivxuGarjG4oBPCa9vSt5Vj_FuQksyKdU=() StockSharp.InteractiveBrokers.dll!StockSharp.InteractiveBrokers.IBTrader.#=qkGgjUOSI2axsj0WkwavP$39d3wIDVrE4xFzQGmsVl94=() Ecng.Common.dll!Ecng.Common.ThreadingHelper.Thread.AnonymousMethod__f() mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() [Переход от машинного кода к управляемому]

Потом я попробовал запустить коннектор более старой версии (4.1.19.1) и все работает. Можете помочь?

Laconsta
Laconsta

Добрый день! Коннектор к Interactive Brokers в данный момент существует? Планируется ли рабочая версия?