Действительно, с запуском примеров ситуация немного прояснилась.
Наверно надо сделать на форуме красную надпись: «Сначала проверь Verifaer и Sample, после пиши вопрос».
Как оказалось, раньше событие Quik.NewPortfolios выводился до до запуска QuikTrader.StartExport().
В новой версии это событие выводится после запуска DDE.
В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?
Maxim:
3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?
Maxim:
3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?
Maxim:
3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?
Все же ситуацию с Portfolio либо я неправильно понимаю, либо происходит что-то неправильно.
Ситуация:
Есть тестовый Квик.
В нем есть один «Счет депо» равный NL0011100043.
Есть «Фирма» равная NC0011100000.
В старой версии S# я ожидал появления портфеля с значением
Portfolio.Name равным NL0011100043 и в дальнейшем использовал этот
портфель для сделок.
В новой версии S# по событию Quik.NewPortfolios приходит только
один портфель с значением Portfolio.Name равным NC0011100000.
Но его использовать для сделок нельзя, так как происходит ошибка (описана ниже).
При тестировании работы с помощью Sample в окошке Заявки можно выбрать только
один счет равный NC0011100000. Если после этого выставить заявку, то происходит
ошибка. Скриншот ошибки можно посмотреть у меня в Альбоме. Файл №2.
Описание ошибки:
{"Код ошибки WrongSyntax Сообщение ACCOUNT=NC0011100000; CLIENT_CODE=S#; TRANS_ID=36591485; CLASSCODE=QJSIM; SECCODE=SBER03; QUANTITY=1; OPERATION=B; TYPE=L; ACTION=NEW_ORDER; PRICE=100; EXECUTION_CONDITION=PUT_IN_QUEUE;"}
at #=qA98JTuuXq7lQ1aQZLPVJbm1DLeYGJboi9O5tmeDP5icpuuPWnrW$9GsEgfGOuA1T.#=qaFmuGlzpTWbzFNFkL0XYVQ==(Int32 #=qZCQKdnf0Eit0Hbg_$IIcOQ==, StringBuilder #=qSQZByV6eDw7sBRxErYGOvw==)
at #=qG5gG25DHYRUxdLhMUitTs6EIadvuLRVfOzcbYiyI9KE=.#=qg0rp1ZKu$tTM6_A7eFso8V3Z3ETsOl_OWvKzbqVwiZI=(String #=qG3qYfxe9sl6d1pdF4HEolg==, OrderStatus& #=qx4OWjbTahJUf3bAvBiKKyw==, UInt32& #=q51qp_50TxygxuDg7tdO4Cw==, Int64& #=qb$zRH_BdRoces20Fe447gA==, String& #=qvUT4N_bmixloSEM2gS_nGQ==)
at Ecng.Trading.Quik.QuikTrader.#=qfn5G4xBeYxS5OnUENPG745dGCKCJ2O8ebk8iOGORmhw=(Order #=qYmy3yYh9EW4qxAb6NWzgdg==, TransactionBuilder #=qj3wCZJSihKRZQ4GCKll9QA==)
at Ecng.Trading.Quik.QuikTrader.OnRegisterOrder(Order order)
at Ecng.Trading.Algo.BaseTrader.RegisterOrder(Order order)
at Sample.NewOrderWindow.Send_Click(Object sender, RoutedEventArgs e) in G:\C\Tools\StockSharp\StockSharp_3.0.2\Sources\Sample\NewOrderWindow.xaml.cs:line 29
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
at System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e)
at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)
Verifaer говорит, что все ок. Скриншот настроек можно посмотреть в фйле №3.
Михаил, можете более подробно описать логику Портфелей. Что откуда берется?
Уверен, что где-то все таки баг присутствует.
Стоит заметить, что вчера после обновления был
аналогичный глюк. Не было третьего портфеля.
В частности по этой причине я вчера начал спрашивать насчет портфелей.
Но потом как-то он появился. Что произошло я не заметил.
Quik ProcessDataError. System.InvalidOperationException: Инструмент с кодом RIH1 для деривативной позиции не найден. at Ecng.Trading.Quik.QuikTrader.#=qwzmGrKnG$0lhDHOD3BPyMF9RowzqQXE4dzlPAS2KUE0=.#=qFPbdj1BEzGKlTCos4uLnaA==(IList`1 #=qNMJMBPSWc2scH2IzDV$7Zw==, Func`2 #=qCzadsfi6dy6lGU_mAdN9Xw==) at #=quGTwhwLIWW3DtBfyW1Jtuo1ONbAVvlrV$5Jjz2zHEHkmG__tqFLh5lErByaGw7xU.#=quyKfkQHGrEIgN80amJTeBg==(DdeTable #=qdxa_dOa3udVBc9Yn6gToJA==, IList`1 #=qKeABQb4HcqtH1$oTS7dhnw==, Action`2 #=q$h2T27S4_vZFd1K7JvgEsA==, Action`1 #=qDbuaOSYxrwzd6fSsZ9aWtA==)Exception message: Инструмент с кодом RIH1 для деривативной позиции не найден..
Quik ProcessDataError. System.InvalidOperationException: Инструмент с кодом MSNG для бумажной позиции не найден. at Ecng.Trading.Quik.QuikTrader.#=qwzmGrKnG$0lhDHOD3BPyMF9RowzqQXE4dzlPAS2KUE0=.#=qIOJE0tFePpVNlJhutSlRPA==(IList`1 #=qets5mJxCNVFW$6DZMeDYew==, Func`2 #=qpyv1AvZMRROSaOKUf3OQFw==) at #=quGTwhwLIWW3DtBfyW1Jtuo1ONbAVvlrV$5Jjz2zHEHkmG__tqFLh5lErByaGw7xU.#=quyKfkQHGrEIgN80amJTeBg==(DdeTable #=qdxa_dOa3udVBc9Yn6gToJA==, IList`1 #=qKeABQb4HcqtH1$oTS7dhnw==, Action`2 #=q$h2T27S4_vZFd1K7JvgEsA==, Action`1 #=qDbuaOSYxrwzd6fSsZ9aWtA==)Exception message: Инструмент с кодом MSNG для бумажной позиции не найден..
Я не думал, что эти ошибки связаны.
В старой версии подобные ошибки я просто игнорировал и все работало.
Правильно ли я понимаю, что мне необходимо добавить RIH1 в инструменты?
А если я не использую деривативы в своей работе, как мне обойти добавление лишних бумаг в таблицу Инструменты?
Для этого надо настраивать фильтры на какие-то таблицы? На какие именно?
Maxim:
А если я не использую деривативы в своей работе, как мне обойти добавление лишних бумаг в таблицу Инструменты?
Для этого надо настраивать фильтры на какие-то таблицы? На какие именно?
Так же, возможно стоит рассмотреть старый вариант, когда подобные исключения
не влияли на работу экспорта. Подозреваю, что если во время работы экспорта
сделать вручную сделку с бумагой, которой нет в Инструментах, то экспорт остановится.
Comments (29)
Login or Create account, Log in or register to leave a comment
Как и всегда, через ITrader.QuotesChanged.
В новой версии стало немного неудобно.
Раньше можно было подписаться на изменение стакана именно для конкретной бумаги: GetMarketDepth(Security).QuotesChanged
А теперь надо подписываться на изменение любого стакана и проверять тот ли стакан изменился.
Старый вариант случаем не вернете?
Вернуть можно. Но будет только Action.
Да, это будет гуд. Я это событие только как экшен и использую. Хотя может быть, кто нибудь и использует полные возможности.
Не знаю, стоит ли создавать новый пост. Напишу ка сюда.
Обновил библиотеку до 3.0.2 Загрузил настройки Квика из файла. Verifaer говорит что все хорошо. Как обычно, подписан на событие Quik.NewPortfolios.
Но по этому событию не приходят ни одного события.
В чем может быть проблема?
Sample запускали? Портфели выводятся?
Действительно, с запуском примеров ситуация немного прояснилась. Наверно надо сделать на форуме красную надпись: «Сначала проверь Verifaer и Sample, после пиши вопрос».
Как оказалось, раньше событие Quik.NewPortfolios выводился до до запуска QuikTrader.StartExport(). В новой версии это событие выводится после запуска DDE.
В старой версии поле Portfolio.Name содержало значение «Счет депо». Теперь в новой версии это поле содержит значение «Фирма». Это баг или фича?
Должно быть и так и так.
Немного не понял ответ?
Теперь в этом поле всегда будет значение «Фирма»?
Должно быть несколько объектов Portfolio.
Михаил, добрый день.
Все же ситуацию с Portfolio либо я неправильно понимаю, либо происходит что-то неправильно.
Ситуация:
Описание ошибки:
Михаил, можете более подробно описать логику Портфелей. Что откуда берется? Уверен, что где-то все таки баг присутствует.
В таблице позиции по бумагам сколько строчек?
Восемь строчек.
http://stocksharp.com/forum/resource.ashx?image=5
Значит у вас должно быть 3 портфеля (фирма, клиентский на мамбу и на фортс). Sample сколько выводит портфелей?
В Sample только два портфеля: фирма и фортс.
http://stocksharp.com/forum/resource.ashx?image=6
А сами позиции выводятся? + скрин как то странно сделан. Как раз в момент старта ДДЕ по позициям.
Это я не во время старта сделал скрин. Специально открыл настройки DDE, что бы было видно, что DDE подключено.
Позиции чего и куда выводятся?
Стакан, инструменты, сделки выводятся из Квика в Sample.
Позиции + портфели. Два разных окна. Открываются по одной кнопке - Портфели.
Окно с позициями пустое.
Значит с ними что-то не так. ProcessDataError что-нибудь выводит?
Стоит заметить, что вчера после обновления был аналогичный глюк. Не было третьего портфеля. В частности по этой причине я вчера начал спрашивать насчет портфелей. Но потом как-то он появился. Что произошло я не заметил.
Сегодня вот опять два портфеля.
Ошибки есть две.
Михаил, как еще я могу помочь для ускорения поиска бага и его исправления?
Так мы же его нашли. Исправлять надо в Квике. "Инструмент с кодом RIH1 для деривативной позиции не найден."
Я не думал, что эти ошибки связаны. В старой версии подобные ошибки я просто игнорировал и все работало.
Правильно ли я понимаю, что мне необходимо добавить RIH1 в инструменты? А если я не использую деривативы в своей работе, как мне обойти добавление лишних бумаг в таблицу Инструменты? Для этого надо настраивать фильтры на какие-то таблицы? На какие именно?
На таблицы с позициями.
Спасибо, Михаил. Вроде разобрался.
Возможно, в документацию стоит добавить какие бумаги необходимы в таблице Инструменты.
Так же, возможно стоит рассмотреть старый вариант, когда подобные исключения не влияли на работу экспорта. Подозреваю, что если во время работы экспорта сделать вручную сделку с бумагой, которой нет в Инструментах, то экспорт остановится.
Хотя можно более детально настраивать фильтры.
Они и в прошлой версии влияли на экспорт. Просто Вы этого не замечали.🙂