MarketDepth.QuotesChanged в 3.0.2
Atom Ответить
13.02.2011


Михаил, а какая альтернатива MarketDepth.QuotesChanged в новой версии S#?
Как узнать, что стакан изменился?

Теги:


Спасибо:




29 Ответов
1 2  >
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.02.2011
Ответить


Maxim Перейти
Михаил, а какая альтернатива MarketDepth.QuotesChanged в новой версии S#?
Как узнать, что стакан изменился?


Как и всегда, через ITrader.QuotesChanged.
Спасибо:

Maxim

Фотография
Дата: 13.02.2011
Ответить


В новой версии стало немного неудобно.

Раньше можно было подписаться на изменение стакана именно для конкретной бумаги:
GetMarketDepth(Security).QuotesChanged

А теперь надо подписываться на изменение любого стакана и проверять тот ли стакан изменился.

Старый вариант случаем не вернете?
Автор топика
Спасибо:

Maxim

Фотография
Дата: 14.02.2011
Ответить


Не знаю, стоит ли создавать новый пост.
Напишу ка сюда.

Обновил библиотеку до 3.0.2
Загрузил настройки Квика из файла.
Verifaer говорит что все хорошо.
Как обычно, подписан на событие Quik.NewPortfolios.

Но по этому событию не приходят ни одного события.

В чем может быть проблема?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2011
Ответить


Maxim Перейти
Не знаю, стоит ли создавать новый пост.
Напишу ка сюда.

Обновил библиотеку до 3.0.2
Загрузил настройки Квика из файла.
Verifaer говорит что все хорошо.
Как обычно, подписан на событие Quik.NewPortfolios.

Но по этому событию не приходят ни одного события.

В чем может быть проблема?


Sample запускали? Портфели выводятся?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2011
Ответить


Maxim Перейти

Старый вариант случаем не вернете?


Вернуть можно. Но будет только Action.
Спасибо:

Maxim

Фотография
Дата: 14.02.2011
Ответить


1) Действительно, с запуском примеров ситуация немного прояснилась.
Наверно надо сделать на форуме красную надпись: «Сначала проверь Verifaer и Sample, после пиши вопрос».

2) Как оказалось, раньше событие Quik.NewPortfolios выводился до до запуска QuikTrader.StartExport().
В новой версии это событие выводится после запуска DDE.

3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2011
Ответить


Maxim Перейти

3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?


Должно быть и так и так.
Спасибо:

Maxim

Фотография
Дата: 14.02.2011
Ответить


Mikhail Sukhov Перейти
Maxim Перейти

Старый вариант случаем не вернете?


Вернуть можно. Но будет только Action.


Да, это будет гуд.
Я это событие только как экшен и использую.
Хотя может быть, кто нибудь и использует полные возможности.
Автор топика
Спасибо:

Maxim

Фотография
Дата: 14.02.2011
Ответить


Mikhail Sukhov Перейти
Maxim Перейти

3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?


Должно быть и так и так.



Немного не понял ответ?

Теперь в этом поле всегда будет значение «Фирма»?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2011
Ответить


Maxim Перейти
Mikhail Sukhov Перейти
Maxim Перейти

3) В старой версии поле Portfolio.Name содержало значение «Счет депо».
Теперь в новой версии это поле содержит значение «Фирма».
Это баг или фича?


Должно быть и так и так.



Немного не понял ответ?

Теперь в этом поле всегда будет значение «Фирма»?


Должно быть несколько объектов Portfolio.
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Михаил, добрый день.

Все же ситуацию с Portfolio либо я неправильно понимаю, либо происходит что-то неправильно.

Ситуация:
1) Есть тестовый Квик.
В нем есть один «Счет депо» равный NL0011100043.
Есть «Фирма» равная NC0011100000.
2) В старой версии S# я ожидал появления портфеля с значением
Portfolio.Name равным NL0011100043 и в дальнейшем использовал этот
портфель для сделок.
3) В новой версии S# по событию Quik.NewPortfolios приходит только
один портфель с значением Portfolio.Name равным NC0011100000.
Но его использовать для сделок нельзя, так как происходит ошибка (описана ниже).
4) При тестировании работы с помощью 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)


5) Verifaer говорит, что все ок. Скриншот настроек можно посмотреть в фйле №3.

Михаил, можете более подробно описать логику Портфелей. Что откуда берется?
Уверен, что где-то все таки баг присутствует.


Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.02.2011
Ответить


В таблице позиции по бумагам сколько строчек?
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.02.2011
Ответить


Maxim Перейти


Значит у вас должно быть 3 портфеля (фирма, клиентский на мамбу и на фортс). Sample сколько выводит портфелей?
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


В Sample только два портфеля: фирма и фортс.

https://stocksharp.ru/forum/resource.ashx?image=6
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.02.2011
Ответить


Maxim Перейти
В Sample только два портфеля: фирма и фортс.

https://stocksharp.ru/forum/resource.ashx?image=6


А сами позиции выводятся? + скрин как то странно сделан. Как раз в момент старта ДДЕ по позициям.
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Это я не во время старта сделал скрин.
Специально открыл настройки DDE, что бы было видно, что DDE подключено.

Позиции чего и куда выводятся?

Стакан, инструменты, сделки выводятся из Квика в Sample.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.02.2011
Ответить


Maxim Перейти
Это я не во время старта сделал скрин.
Специально открыл настройки DDE, что бы было видно, что DDE подключено.

Позиции чего и куда выводятся?

Стакан, инструменты, сделки выводятся из Квика в Sample.


Позиции + портфели. Два разных окна. Открываются по одной кнопке - Портфели.
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Стоит заметить, что вчера после обновления был
аналогичный глюк. Не было третьего портфеля.
В частности по этой причине я вчера начал спрашивать насчет портфелей.
Но потом как-то он появился. Что произошло я не заметил.

Сегодня вот опять два портфеля.
Автор топика
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Mikhail Sukhov Перейти
Maxim Перейти
Это я не во время старта сделал скрин.
Специально открыл настройки DDE, что бы было видно, что DDE подключено.

Позиции чего и куда выводятся?

Стакан, инструменты, сделки выводятся из Квика в Sample.


Позиции + портфели. Два разных окна. Открываются по одной кнопке - Портфели.



Окно с позициями пустое.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.02.2011
Ответить


Maxim Перейти

Окно с позициями пустое.


Значит с ними что-то не так. ProcessDataError что-нибудь выводит?
Спасибо:

Maxim

Фотография
Дата: 15.02.2011
Ответить


Ошибки есть две.

Код
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 для бумажной позиции не найден..



Автор топика
Спасибо:

Maxim

Фотография
Дата: 16.02.2011
Ответить


Михаил, как еще я могу помочь для ускорения поиска бага и его исправления?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 16.02.2011
Ответить


Maxim Перейти
Михаил, как еще я могу помочь для ускорения поиска бага и его исправления?


Так мы же его нашли. Исправлять надо в Квике. "Инструмент с кодом RIH1 для деривативной позиции не найден."
Спасибо:

Maxim

Фотография
Дата: 16.02.2011
Ответить


Я не думал, что эти ошибки связаны.
В старой версии подобные ошибки я просто игнорировал и все работало.

Правильно ли я понимаю, что мне необходимо добавить RIH1 в инструменты?
А если я не использую деривативы в своей работе, как мне обойти добавление лишних бумаг в таблицу Инструменты?
Для этого надо настраивать фильтры на какие-то таблицы? На какие именно?
Автор топика
Спасибо:
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy