← 返回

Можно ли запускать 2 и более приложний которые используют Quik коннектор с одним запущенным Quik'ом ?

Можно ли запускать 2 и более приложний которые используют Quik коннектор с одним запущенным Quik'ом ?

Расчитал ли на это коннектор S#?

评论 (13)

登录创建账户, 登录或注册以发表评论

Marat
Marat

Добрый день. Для решения данной задачи Вы можте воспользоваться Hydra в режиме Эмуляции, подробнее здесь.

rappersmerti
rappersmerti 作者

@Marat, мне нужно в боевом режиме. Это возможно?

Marat
Marat

rappersmerti: @Marat, мне нужно в боевом режиме. Это возможно?

Добрый день. Эмуляция на это и расчитана, что с одной учетке Вы одновременно торгуете с двух прог.

rappersmerti
rappersmerti 作者

@Marat 2 приложения получается запускать, но не получается 3. При запуске 3-го приложения получаю ошибку

FIX 28.09.2021 17:29:29 +03:00 Error System.IO.IOException: Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение.. ---> System.Net.Sockets.SocketException (10053): Программа на вашем хост-компьютере разорвала установленное подключение. at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at StockSharp.Fix.Native.BaseFixWriter.WriteByte(Byte value) at StockSharp.Fix.Native.TextFixWriter.Write(FixTags tag) at StockSharp.Fix.Native.Extensions.WriteFixMessage(IFixWriter writer, IFixWriter bodyWriter, String version, String msgType, String senderCompId, String targetCompId, FastDateTimeParser sendingTimeParser, Int64 seqNum, Action`1 handler) at StockSharp.Fix.Dialects.BaseFixDialect.SendInMessage(Message message) at StockSharp.Fix.FixMessageAdapter.OnSendInMessage(Message message)

Marat
Marat

rappersmerti: @Marat 2 приложения получается запускать, но не получается 3. При запуске 3-го приложения получаю ошибку

FIX 28.09.2021 17:29:29 +03:00 Error System.IO.IOException: Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение.. ---> System.Net.Sockets.SocketException (10053): Программа на вашем хост-компьютере разорвала установленное подключение. at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at StockSharp.Fix.Native.BaseFixWriter.WriteByte(Byte value) at StockSharp.Fix.Native.TextFixWriter.Write(FixTags tag) at StockSharp.Fix.Native.Extensions.WriteFixMessage(IFixWriter writer, IFixWriter bodyWriter, String version, String msgType, String senderCompId, String targetCompId, FastDateTimeParser sendingTimeParser, Int64 seqNum, Action`1 handler) at StockSharp.Fix.Dialects.BaseFixDialect.SendInMessage(Message message) at StockSharp.Fix.FixMessageAdapter.OnSendInMessage(Message message)

Мы рассмотрели данные которые Вы прислали, в них проблем с гидрой или коннектором мы не обнаружили. Гидра позволяет работать больше чем с 3 приложениями через один коннектор. Не моглди бы Вы создать наиболее простые приложения с минимальным кодом, на которых будет воспроизводиться ошибка?

Marat
Marat

rappersmerti: @Marat 2 приложения получается запускать, но не получается 3. При запуске 3-го приложения получаю ошибку

FIX 28.09.2021 17:29:29 +03:00 Error System.IO.IOException: Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение.. ---> System.Net.Sockets.SocketException (10053): Программа на вашем хост-компьютере разорвала установленное подключение. at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at StockSharp.Fix.Native.BaseFixWriter.WriteByte(Byte value) at StockSharp.Fix.Native.TextFixWriter.Write(FixTags tag) at StockSharp.Fix.Native.Extensions.WriteFixMessage(IFixWriter writer, IFixWriter bodyWriter, String version, String msgType, String senderCompId, String targetCompId, FastDateTimeParser sendingTimeParser, Int64 seqNum, Action`1 handler) at StockSharp.Fix.Dialects.BaseFixDialect.SendInMessage(Message message) at StockSharp.Fix.FixMessageAdapter.OnSendInMessage(Message message)

Мы рассмотрели данные которые Вы прислали, в них проблем с гидрой или коннектором мы не обнаружили. Гидра позволяет работать больше чем с 3 приложениями через один коннектор. Не моглди бы Вы создать наиболее простые приложения с минимальным кодом, на которых будет воспроизводиться ошибка?

Marat
Marat

Добрый день. Мы уже рассматриваем вашу проблему.

rappersmerti
rappersmerti 作者

Воспроизвел проблему на приложении из урока 02_MarketDepths_Trades. Приложил скрин на котором 2 этих приложения запущены и на одном стакан обновляется а на другом нет. Не смотря на то что инструмент выбран в обоих. Hydra_bug.PNG

Marat
Marat

rappersmerti: Воспроизвел проблему на приложении из урока 02_MarketDepths_Trades. Приложил скрин на котором 2 этих приложения запущены и на одном стакан обновляется а на другом нет. Не смотря на то что инструмент выбран в обоих. Hydra_bug.PNG

То есть запущены два одинаковых приложения? Какие логи у Вас выходят?

rappersmerti
rappersmerti 作者

в логе гидры единственное сообщение (сейчас воспроизвел когда запустил 3 приложения. Иногда 2 а иногда 3 требуется):

Unhandled Exception 04.10.2021 22:38:56 +03:00 Error System.AggregateException: A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread. (Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения.) ---> System.Net.Sockets.SocketException (995): Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения. at System.Net.Sockets.Socket.GetException(SocketError error, Boolean wrapExceptionsInIOExceptions) at System.Net.Sockets.Socket.CompleteAccept(Socket s, TaskSocketAsyncEventArgs1 saea) at System.Net.Sockets.Socket.<>c.<AcceptAsync>b__281_0(Object s, SocketAsyncEventArgs e) at System.Net.Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) at System.Net.Sockets.SocketAsyncEventArgs.OnCompletedInternal() at System.Net.Sockets.SocketAsyncEventArgs.FinishOperationAsyncFailure(SocketError socketError, Int32 bytesTransferred, SocketFlags flags) at System.Net.Sockets.SocketAsyncEventArgs.HandleCompletionPortCallbackError(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Net.Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__179_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pNativeOverlapped) --- End of stack trace from previous location --- at System.Net.Sockets.TcpListener.<AcceptTcpClientAsync>g__WaitAndWrap|29_0(Task1 task) --- End of inner exception stack trace ---

Да, запущены 2 одинаковых приложения. С этим какието проблемы? Нельзя одинаковые? Если нельзя то скажите насколько разные можно пожалуйста

rappersmerti
rappersmerti 作者

Да, запущены 2 одинаковых приложения. С этим какието проблемы? Нельзя одинаковые? Если нельзя то скажите насколько разные можно пожалуйста

Marat
Marat

rappersmerti: Да, запущены 2 одинаковых приложения. С этим какието проблемы? Нельзя одинаковые? Если нельзя то скажите насколько разные можно пожалуйста

Добрый день. Используйте в разных приложениях разные значение параметров SenderCompId. Например, в первом приложении: marketDataAdapter.SenderCompId = "app1" transactionAdapter.SenderCompId = "app1"

Во втором приложении: marketDataAdapter.SenderCompId = "app2" transactionAdapter.SenderCompId = "app2" и т.д. image_2021-10-13_14-21-15.png

Support
Support

небольшое уточнение. используя разные значение SenderCompId, можно подключаться напрямую к квику. нет необходимости подключаться через гидру.