← Voltar

Обновление Транзак до версии 2.16.1

Финам обновляет Транзак коннектор до версии 2.16.1. Обновление примечательно тем, что нет обратной совместимости (клиенты на пред версии работать не будут начиная с 19-го числа). Коммит для лечения https://github.com/StockSharp/StockSharp/commit/064d7c3ac90f748283ecb3662b97c2798363cbd6

Comentários (44)

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

titan
titan

Mikhail Sukhov: Финам обновляет Транзак коннектор до версии 2.16.1. Обновление примечательно тем, что нет обратной совместимости (клиенты на пред версии работать не будут). Коммит для лечения https://github.com/StockSharp/StockSharp/commit/064d7c3ac90f748283ecb3662b97c2798363cbd6

🤨 извиняюсь за, может быть, глупый вопрос, а что с этим коммитом делать????я так полагаю ждать новой версии S# с исправленной библиотекой будет правильным решением?

Mikhail Sukhov
Mikhail Sukhov Autor

titan: 🤨 извиняюсь за, может быть, глупый вопрос, а что с этим коммитом делать????

Использовать его. Без него с 19-го работать не будет коннектор.

titan: я так полагаю ждать новой версии S# с исправленной библиотекой будет правильным решением?

Это будет после 19-го.

Mikhail Sukhov
Mikhail Sukhov Autor

Так исходники же

titan
titan
titan

Mikhail Sukhov: Финам обновляет Транзак коннектор до версии 2.16.1. Обновление примечательно тем, что нет обратной совместимости (клиенты на пред версии работать не будут начиная с 19-го числа). Коммит для лечения https://github.com/StockSharp/StockSharp/commit/064d7c3ac90f748283ecb3662b97c2798363cbd6

с новым коннектором из 4.3.11 к сервакам Транзаковским подключается 😎 . Что как там работает или нет, не проверял, квалификация не позволяет...пока не повзоляет....Спасибо

JaguarFX
JaguarFX

Можно вас попросить выложить тут в прикрепленных файлах построенную версию StockSharp.Transaq.dll из API 4.3.11. У меня VS выдает какие-то дикие ошибки.

Mikhail Sukhov
Mikhail Sukhov Autor

lebedevsrg: Можно вас попросить выложить тут в прикрепленных файлах построенную версию StockSharp.Transaq.dll из API 4.3.11. У меня VS выдает какие-то дикие ошибки.

https://yadi.sk/d/knCqAltmjFvfF

JaguarFX
JaguarFX

Михаил, благодарю!

JaguarFX
JaguarFX

В целом с новой библиотекой StockSharp подключается к серверу ТransaqConnector, но выдает следующую некритическую ошибку: TransaqTrader 23.09.2015 20:39:49 +03:00 Error System.InvalidCastException: Cannot convert 7:46:08 with format dd.MM.yyyy HH:mm:ss.fff to DateTime. ---> System.FormatException: Строка не распознана как действительное значение DateTime. в System.DateTime.ParseExact(String s, String format, IFormatProvider provider) в Ecng.Common.TimeHelper.ToDateTime(String value, String format) --- Конец трассировки внутреннего стека исключений --- в Ecng.Common.TimeHelper.ToDateTime(String value, String format) в StockSharp.Transaq.Native.Extensions.ToDate(String s, DateTime now) в StockSharp.Transaq.Native.Extensions.GetElementValueNullable(XElement elem, String name, Func1 getNow) в StockSharp.Transaq.Native.XmlSerializeHelper.<DeserializeMessages>b__89(XElement node) в System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() в System.Linq.Buffer1..ctor(IEnumerable1 source) в System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) в StockSharp.Transaq.Native.XmlSerializeHelper.DeserializeMessages(XElement rootElement) в StockSharp.Transaq.Native.XmlSerializeHelper.Deserialize(String xmlString) в StockSharp.Transaq.TransaqMessageAdapter.<>c__DisplayClass31.<OnCallback>b__2f() в Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func1 func) в StockSharp.Transaq.TransaqMessageAdapter.OnCallback(String data)

Mikhail Sukhov
Mikhail Sukhov Autor

Посмотрите на последнем коммите.

sazon
sazon

Привет всем. Скачал последнюю версию (4.13), собрал "SampleTransaq", вылетает ошибка инициализации библиотеки, не существует, хотя вроде лежит рядом с exe.

sazon
sazon

В общем скачал исходники, посмотрел через отладчик путь к библиотеке при вызове "Api.Initialize(IntPtr path, int logLevel)". А путь такой: "...\StockSharp_4.3.13\Samples\Transaq\SampleTransaq\bin\Debug\StockSharp.Transaq". Откуда и зачем "StockSharp.Transaq" ??? При создании папки "StockSharp.Transaq" и копировании туда txmlconnector.dll ошибка отсутствия библиотеки не вылетала. Не знаю, но в общем так.

titan
titan

какая-то ботва с подключением при использовании библиотек в версии 4.3.13

StockSharp.Transaq.Native.ApiException: <error>Не удалось инициализировать библиотеку. does not exist </error> в StockSharp.Transaq.Native.ApiClient.CheckErrorResult(IntPtr ptr) в StockSharp.Transaq.Native.ApiClient..ctor(Action`1 callback, String dllPath, Boolean overrideDll, Boolean isHft, String path, ApiLogLevels logLevel) в StockSharp.Transaq.TransaqMessageAdapter.Connect() в StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)

При использовании библиотек из скомпилированных исходников 4.3.11 вроде подключается без ошибок 🤨. 😳 нельзя ли прояснить ситуацию...

sazon
sazon

titan: какая-то ботва с подключением при использовании библиотек в версии 4.3.13

StockSharp.Transaq.Native.ApiException: <error>Не удалось инициализировать библиотеку. does not exist </error> в StockSharp.Transaq.Native.ApiClient.CheckErrorResult(IntPtr ptr) в StockSharp.Transaq.Native.ApiClient..ctor(Action`1 callback, String dllPath, Boolean overrideDll, Boolean isHft, String path, ApiLogLevels logLevel) в StockSharp.Transaq.TransaqMessageAdapter.Connect() в StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)

При использовании библиотек из скомпилированных исходников 4.3.11 вроде подключается без ошибок 🤨. 😳 нельзя ли прояснить ситуацию...

Здравствуйте. Смотрите пост выше. Я отписал как раз относительно этого.

titan
titan

sazon:

titan: какая-то ботва с подключением при использовании библиотек в версии 4.3.13

StockSharp.Transaq.Native.ApiException: <error>Не удалось инициализировать библиотеку. does not exist </error> в StockSharp.Transaq.Native.ApiClient.CheckErrorResult(IntPtr ptr) в StockSharp.Transaq.Native.ApiClient..ctor(Action`1 callback, String dllPath, Boolean overrideDll, Boolean isHft, String path, ApiLogLevels logLevel) в StockSharp.Transaq.TransaqMessageAdapter.Connect() в StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)

При использовании библиотек из скомпилированных исходников 4.3.11 вроде подключается без ошибок 🤨. 😳 нельзя ли прояснить ситуацию...

Здравствуйте. Смотрите пост выше. Я отписал как раз относительно этого.

Благодарю за отклик, но нельзя ли поподробнее:где создали папку в которую txmlconnector.dll запихали?Ибо создание \...путь проекта...\bin\Debug\StockSharp.Transaq\ и копирование туда txmlconnector.dll и ,навсяк случай, StockSharp.Transaq.dll эффекта не принесло...

Mikhail Sukhov
Mikhail Sukhov Autor

titan:

Фикс на Гите неделю назад был залит. Собранная версия https://yadi.sk/d/fxNGwi6KjmxVS

titan
titan

Mikhail Sukhov:

titan:

Фикс на Гите неделю назад был залит. Собранная версия https://yadi.sk/d/fxNGwi6KjmxVS

"O, ес, ес...Гёрл, гёрл" из к\ф "Джентельмены удачи"...То что нужно...😀 Заработало, спасибо.

Mikhail Sukhov
Mikhail Sukhov Autor

Финам сообщает, что будет в ближайщее время еще одно обновление (только на серверной стороне). Держимся!🙂

Проверить ботов можно по адресу 78.41.194.114 порт 3510.

titan
titan

Будем надеяться, что апосля наступит стабильность. Сейчас Транзак переподключаться стал часто...

Mikhail Sukhov
Mikhail Sukhov Autor

titan: Будем надеяться, что апосля наступит стабильность. Сейчас Транзак переподключаться стал часто...

Вы проверьте на том сервере. Логин финамовский нужен. Как я понял - это боевой сервер с примененными изменениями.

RomSunZ
RomSunZ

Может кто-нибудь проверить проблему с кодировкой в транзаке? Для этого нужно открыть пример Transaq, подключиться и попробовать отменить неактивную заявку (для этого нужно в окне заявок выделить 2 заявки - активную и неактивную, иначе не получиться отменить). У меня в этом случает коннектор выдает сообщение об ошибке, в котором вместо кириллицы вопросительные знаки, при том, что в остальных сообщениях русские буквы присутствуют:

151028-154247.706 8712 [8584] Inf >> <command id="cancelorder"> <transactionid>801</transactionid> </command> 151028-154247.772 8712 [8584] Inf << <result success="false"><message>??????? ????? ?????????????? ??????.</message></result>

Проверил пример с финама, там эти сообщения транслируются нормально.

Пробовал так:


		private string ProcessPtrResult(IntPtr pResult)
		{
			if (pResult != IntPtr.Zero)
			{
				String errStr = Marshal.PtrToStringAnsi(pResult);
				String errStr1 = Marshal.PtrToStringAuto(pResult);
				String errStr3 = Marshal.PtrToStringUni(pResult);

				var result = _encoding.ToString(pResult).Replace("&", "&amp;");
				_api.FreeMemory(pResult);
				return result;
			}


PtrToStringAnsi выдает вопросительные знаки, остальные - китайские иероглифы.

Mikhail Sukhov
Mikhail Sukhov Autor

Подебажьте, да и найдите проблему.

RomSunZ
RomSunZ

Mikhail Sukhov: Подебажьте, да и найдите проблему.

Ну так я и додебажил до ProcessPtrResult, дальше некуда...

Mikhail Sukhov
Mikhail Sukhov Autor

RomSunZ:

Mikhail Sukhov: Подебажьте, да и найдите проблему.

Ну так я и додебажил до ProcessPtrResult, дальше некуда...

И что там выводится?

RomSunZ
RomSunZ

Mikhail Sukhov:

RomSunZ:

Mikhail Sukhov: Подебажьте, да и найдите проблему.

Ну так я и додебажил до ProcessPtrResult, дальше некуда...

И что там выводится?


        String errStr = Marshal.PtrToStringAnsi(pResult);
        String errStr1 = Marshal.PtrToStringAuto(pResult);
        String errStr3 = Marshal.PtrToStringUni(pResult);
 
        var result = _encoding.ToString(pResult).Replace("&", "&amp;");

PtrToStringAnsi выводит вопросительные знаки PtrToStringAuto и PtrToStringUni выводит иероглифы _encoding.ToString выводит вопросительные знаки

Mikhail Sukhov
Mikhail Sukhov Autor

RomSunZ:

Mikhail Sukhov:

RomSunZ:

Mikhail Sukhov: Подебажьте, да и найдите проблему.

Ну так я и додебажил до ProcessPtrResult, дальше некуда...

И что там выводится?

    String errStr = Marshal.PtrToStringAnsi(pResult);
    String errStr1 = Marshal.PtrToStringAuto(pResult);
    String errStr3 = Marshal.PtrToStringUni(pResult);

    var result = _encoding.ToString(pResult).Replace("&", "&amp;");
> PtrToStringAnsi выводит вопросительные знаки
> PtrToStringAuto и PtrToStringUni выводит иероглифы
> _encoding.ToString выводит вопросительные знаки

А какая в итоге ошибка?
RomSunZ
RomSunZ

Mikhail Sukhov:

RomSunZ:

Mikhail Sukhov:

RomSunZ:

Mikhail Sukhov: Подебажьте, да и найдите проблему.

Ну так я и додебажил до ProcessPtrResult, дальше некуда...

И что там выводится?

    String errStr = Marshal.PtrToStringAnsi(pResult);
    String errStr1 = Marshal.PtrToStringAuto(pResult);
    String errStr3 = Marshal.PtrToStringUni(pResult);

    var result = _encoding.ToString(pResult).Replace("&", "&amp;");
> > PtrToStringAnsi выводит вопросительные знаки
> > PtrToStringAuto и PtrToStringUni выводит иероглифы
> > _encoding.ToString выводит вопросительные знаки
> 
> А какая в итоге ошибка?

В итоге ошибка с кодировкой, вместо русского текста выводит вопросительные знаки: <result success="false"><message>??????? ????? ?????????????? ??????.</message></result>
Mikhail Sukhov
Mikhail Sukhov Autor

Полная информация о .NET исключении.

RomSunZ
RomSunZ

Mikhail Sukhov: Полная информация о .NET исключении.

Михаил, нет никаких исключений. При преобразование IntPtr в string не может сопоставить кодировку и выдает вместо кириллицы вопросительные знаки. Я попросил тех, кто пользуется данным коннектором проверить получают ли они нормальный русский текст или тоже получают "??????? ????? ?????????????? ??????." вместо текста.

sazon
sazon

Уважаемые представители StockSharp-a. Возник следующий вопрос: если я подписываюсь через метод TransaqTraderSubscribeMarketData(...) на получение сделок по нескольким инструментам, то сделки мне должны приходить начиная с какого момента, с момента подписки или начиная с 1000? На данный момент S# в случае подписи на два инструмента, для одного выдает данные с начала дня, для другого с момент подписи. Мне кажется это странным. Попробовал поэкспериментировать с вашими исходниками, забив значение "tradeno" равным единице (об этом есть информация в документации для txmlconnector) в XmlSerializeHelper::SerializeSubscribeTicks(...) и все запахало так, как и думал. Судя по логам от TC у вам при подписке на очередной инструмент для предыдущих инструментов "tradeno" переопределяется на ноль, с единицы.

123115.051665 [8576] [13916] <cmd> <command id="subscribe_ticks" filter="true">

<security secid="16920" tradeno="1" />

</command> 123115.063675 [8576] [13916] <res> [R] <result success="true"/> 123115.074682 [8576] [13916] <cmd> <command id="subscribe_ticks" filter="true">

<security secid="16920" tradeno="0" />

<security secid="2831" tradeno="1" />

</command>

Mikhail Sukhov
Mikhail Sukhov Autor

На примере воспроизводится?

sazon
sazon

Mikhail Sukhov: На примере воспроизводится?

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

Mikhail Sukhov
Mikhail Sukhov Autor

sazon:

Mikhail Sukhov: На примере воспроизводится?

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

Поппобуйте на примере это проделать. Думаю ошибка в вашем коде и то что вы выше написали о номерах тиков не соответчвует коду коннектора.

sazon
sazon

Mikhail Sukhov:

sazon:

Mikhail Sukhov: На примере воспроизводится?

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

Поппобуйте на примере это проделать. Думаю ошибка в вашем коде и то что вы выше написали о номерах тиков не соответчвует коду коннектора.

В примере в обработчике установки соединения добавил подписку на два инструмента через "Trader.SubscribeMarketData(security, StockSharp.Messages.MarketDataTypes.Trades)" и навесил запись в текстовый файл всех сделок.Тоже самое, для одного инструмента с 10-00, для другого с момента подписки.

Mikhail Sukhov
Mikhail Sukhov Autor

Транзак с новой версией 2.18.1

https://github.com/StockSharp/StockSharp/commit/b982c8c70d185100876bdfe867afb3ae87356d4a

Какие-то небольшие фиксы в коннекторе. Проверить, понятно, лучше заранее.

sazon
sazon

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

Mikhail Sukhov
Mikhail Sukhov Autor

sazon: Не знаю, как в последней версии, но в предыдущей не работала разность между локальным и текущим временем, все время оно равнялось null. Хотя во время отладки вашего коннектора выяснилось, что разность при соответствующем запросе возвращается.

https://github.com/StockSharp/StockSharp/tree/master/Connectors/Transaq

titan
titan

sazon: Не знаю, как в последней версии, но в предыдущей не работала разность между локальным и текущим временем, все время оно равнялось null. Хотя во время отладки вашего коннектора выяснилось, что разность при соответствующем запросе возвращается.

А к чему это может приводить????На команду Trader.Connect, Trader поменял свойство ConnectionState в Connecting и прикинулся веником...

sazon
sazon

titan:

sazon: Не знаю, как в последней версии, но в предыдущей не работала разность между локальным и текущим временем, все время оно равнялось null. Хотя во время отладки вашего коннектора выяснилось, что разность при соответствующем запросе возвращается.

А к чему это может приводить????На команду Trader.Connect, Trader поменял свойство ConnectionState в Connecting и прикинулся веником...

Если честно, то не понял.

titan
titan

...разность между локальным и текущим временем, все время оно равнялось null...На что это может повлиять?

sazon
sazon

titan: ...разность между локальным и текущим временем, все время оно равнялось null...На что это может повлиять? Мне нужна именно эта разность, и ТС ее предоставляет через свой API. В стокшарпе ее нет, она null.

titan
titan

sazon:

titan: ...разность между локальным и текущим временем, все время оно равнялось null...На что это может повлиять? Мне нужна именно эта разность, и ТС ее предоставляет через свой API. В стокшарпе ее нет, она null.

ммм..ясн...А как параметр называется разность между локальным и текущим временем, который все время равнялся null?любопытства ради...

sazon
sazon

titan:

sazon:

titan: ...разность между локальным и текущим временем, все время оно равнялось null...На что это может повлиять? Мне нужна именно эта разность, и ТС ее предоставляет через свой API. В стокшарпе ее нет, она null.

ммм..ясн...А как параметр называется разность между локальным и текущим временем, который все время равнялся null?любопытства ради...

Свойство: ServerTimeDiff. Дело в том, что там эта разность возвращается при инициализации 'TransaqTrader'-a, просто ее никак не используют, при отладке коннектора это видно. Я для себя поправил в исходниках, но в новой версии, как говорят, все поправлено.

sazon
sazon

есть большое подозрение, что не работает обновление позиции

nil69
nil69

Вечер добрый! Может кто подскажет в чем проблема сей ошибки Версия 4.3.13

"StockSharp.Transaq.Native.ApiException: <error>Не удалось инициализировать библиотеку. does not exist </error> в StockSharp.Transaq.Native.ApiClient.CheckErrorResult(IntPtr ptr) в StockSharp.Transaq.Native.ApiClient..ctor(Action`1 callback, String dllPath, Boolean overrideDll, Boolean isHft, String path, ApiLogLevels logLevel) в StockSharp.Transaq.TransaqMessageAdapter.Connect() в StockSharp.Transaq.TransaqMessageAdapter.OnSendInMessage(Message message) в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)"

Я видел, что эта проблема уже поднималась в этой ветке, но к сожалению работающего варианта так и не нашел - ссылки на яндекс архив уже не актуальны, а с созданием папки "StockSharp.Transaq" с последующим копированием библиотеки не увенчались успехом. Заранее благодарен, за любую подсказку.

В общем решил проблему сам, ибо код с "коробки" не рабочий, ввиду того, что автор пытается писать логи в несуществующую папку Debug/StockSharp.Transaq/Logs/ . Прошу меня извинить, если метод решения этой проблемы уже где - то расписан, но даже если так, негоже оставлять такой костыль в рабочей ветке🙂