Доброго времени суток. Помогите решить проблему. На компе установлен SmartCom 2. при тестировании примера SampleSmart (stocksharp 2.4) получаю исключение "отказано в доступе", при тестировании примера SampleSmarConsole удаётся подключиться один раз, при последующих попытках подключения получаю аналогичное исключение. Проблема с консольным приложением "решается" перезагрузкой компьютера. (Подключаюсь к демосерверу, логин и пароль ввожу корректно. )
コメント (21)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Версию SmartCom 2.0 начал поддерживать лишь Stock# 2.5. Попробуй с ним потестировать
Приведите полный текст ошибки. Есть подозрение, что учетка, из под которой открывается программа, не имеет доступ к процессу Смарта. А это необходимо. Или понижайте учетку для смарта, или запускайте прогу например из под админа. Причина - SmartTrader перед подсоединение перезапускает процесс SmartCOM (из-за того, что тот любит мертво зависать).
Всем спасибо за помощь! Всё оказалось проще, чем я думал. Висел процесс смарткома, который и блокировал мои коннекты.
SmartTrader умеет отслеживать такие вещи. Конкретнее, смарт ком завис в процессе работы или в момент коннекта?
SmartTrader создается, но не запускается. Имелось ввиду СмартКОМ? Тогда SmartTrader в методе Connect должен запустить сам SmartCOM.
Здравствуйте, столкнулся с такой же ошибкой. Суть в том что при первом запуске примера все вроде работает, потом я нажимаю "отключиться", закрываю окно примера, но в процессах остается висеть smartcom2.exe и при повторном запуске робота получаю "откзано в доступе", приходится каждый раз убивать вручную этот процесс. В примере вроде прописан такой кусок, может еще что-то добавить чтобы smartcom вычищался ?
Дать роботу права, чтобы он мог убивать процесс СмартКом.
Прошу прощения за нубский вопрос, но как это сделать ? Поиск по интернету скуп на информацию, все предложенные там способы либо не работают, либо совсем какие-то экзотические. Вообще страано это выглядит что робот сам создает процесс, а потом не может его погасить.
Какая ОС и какие решения были?
Так устроен COM сервер.
ОС XP, пробовал давать права через process explorer, также была рекомендация написать сервис, который будет убивать комовский процесс, но это мне показалось уже слишком.
Работайте из под админского аккаунта.
У меня тоже выпадает System.ViolationException Попытка чтения или записи в защищенную память. но не при коннекте а при попытке получить историю. при этом соединение успешно проходит, выставляются ордера..
операционка XP SP3 работаю под админом.
Картинку не видно, но тип исключения вижу впервые. Это пример или своя программа?
Это пример SampleSmartSma
Писал и свой пример на основе SampleSmartConsole, добавил получение исторических данных и он тоже стал падать с таким исключением.
Ниже стектрейс ошибки при работе стандартного примера SampleSmartSma. Исключение вызывает метод: _trader.RegisterHistoryData(_lkoh, SmartTimeFrames.Minute5, new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), _trader.MarketTime));
System.AccessViolationException. Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена. в StClientLib.StServerClass.GetBars(String symbol, StBarInterval interval, DateTime since, Int32 count) в Ecng.Trading.Smart.SmartComWrapper.<>c__DisplayClass6c.<RegisterHistoryBars>b__6b(StServer server) в Ecng.Trading.Smart.SmartComWrapper.Do(Action
1 action) в Ecng.Trading.Smart.SmartComWrapper.RegisterHistoryBars(String securityId, SmartTimeFrames timeFrame, DateTime from, Int32 count) в Ecng.Trading.Smart.SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, DateTime from, Int32 count, SmartHistoryDirections direction) в Ecng.Trading.Smart.SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, Range1 range) в SampleSmartSMA.MainWindow.Start_Click(Object sender, RoutedEventArgs e) в D:\Proj\Trading\StockSharp_2.6.2_Sources\Sources\SampleSmartSMA\MainWindow.xaml.cs:строка 304 в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) в System.Windows.Controls.Primitives.ButtonBase.OnClick() в System.Windows.Controls.Button.OnClick() в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) в System.Windows.UIElement.CrackMouseButtonEventAndReRaiseEvent(DependencyObject sender, MouseButtonEventArgs e) в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) в System.Windows.Input.InputManager.ProcessStagingArea() в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)Некоторое время назад попытался использовать Stock# в своем проекте, но столкнулся с этой проблемой и решил писать робота на основе SmartCOM без использования Stock#. Но со временем опять возникло желание использовать вашу разработку, и опять таже проблема меня останавливает, сам не могу найти причину, помогите разобраться? :-)
Это пример SampleSmartSma
System.AccessViolationException. Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена. в StClientLib.StServerClass.GetBars(String symbol, StBarInterval interval, DateTime since, Int32 count)
Некоторое время назад попытался использовать Stock# в своем проекте, но столкнулся с этой проблемой и решил писать робота на основе SmartCOM без использования Stock#.
Выделенное говорит о том, что ошибка в СмартКом. Так что переход вряд ли поможет.
Приведи значения, что Вы передаете в SmartTrader.RegisterHistoryData(Security security, SmartTimeFrames timeFrame, Range`1 range)
Вызов выглядит так: _trader.RegisterHistoryData(_lkoh, SmartTimeFrames.Minute5, new Range<DateTime>(DateTime.Today - TimeSpan.FromDays(5), _trader.MarketTime));
_lkoh - Security (инициализируется самим примером, ну судя по всему значение нормальное т.к. предшествующая строка _trader.RegisterTrades(_lkoh); - выполняется)
DateTime.Today = "01.02.2011 0:00:00" _trader.MarketTime = "01.02.2011 14:16:40"
Вобщем все значения по умолчанию, как были в примере, я ничего не менял.
Запустил пример, отработал штатно. Что за сервер? СмартКом последний установлен?
Демо сервер. Смартком 2 стоит, насколько последний не знаю.. Попробую сейчас качнуть последний и переустановить.
Добавлено: Снес SmartTrade, SuperTrade, SmartCOM2 заново установил SmartCOM2
Проблема решилась. Теперь работает. Спасибо.
Наткнулась на такую же проблему, причем проявляется она только в связке с обычным квиком, с квик джуниором все в порядке. Версия одинаковая. Ошибка вылетает при попытке DDE-коннекта, где конкретнее, проследить не могу, так как это дело запускается в винде 2003 сервер по удаленке, у меня на компьютере с XP SP2 все в порядке
мда, проблема решена - надо было при старте коннекта DDE в квике переходить на главную вкладку