Сообщество. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=community&page=189Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T10:28:29Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/2894/Ошибка System.OutOfMemoryException в NDde.dll2012-07-25T18:24:58Z2012-07-25T18:24:58ZСерёжа Сорокинhttps://stocksharp.ru/users/212/info@stocksharp.ruИспользую 4.1.3, скачанный из репозитория с номером 18403. Программа компилируется и нормально работает около часа. При запуске занимает память около 400Мб, но через час вываливается эта ошибка. Программа уже использует 1.3-1.5Гб (по диспетчеру задач смотрю). Пишет "нет исходных файлов для отладки", значит это в защищенной длл. Скриншоты прикрепляю и проект, на котором ошибка выскакивает, тоже. Стратегия простая на часовых свечках. При работе подписывается на стакан и на свечки (candleManager) по одному инструменту RIU2. Если будете запускать, то она там перед работой качает с финама исторические данные в каталог d:\historyC#_60. Если мешает, то, наверное, этот участок можно закомментировать.<br /><br />На скриншотах можно увидеть, что ошибка вываливается в NDde.Foundation.Server.DdemlServer.ProcessCallBack().<br /><br />Возможно, баг, а, возможно, я неправильно понимаю логику S#. Посмотрите, пожалуйста, в чем тут может быть причина?<br /><br />Проект, на котором через час вываливается ошибка: <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABZi6aGiRBsiReXaSBqb4iH6daFvurWL6yDLyBGqePqdHWm5xVi7DnG_phtSuNQbWyj8GIwpG6Ufh0Z9scuoAfY5UaHSi2l_OoUom4GwvYnrn3G7yN1uXeLVn6-SSFf2COXmwlpWzN-g4QBsxSrOZXpe86tKobPODS74VcmOJNkVg" title="https://dl.dropbox.com/u/59802690/AllStrategies_4.1_%D0%B4%D0%BB%D1%8F%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B8.rar">https://dl.dropbox.com/u...B0%D0%B2%D0%BA%D0%B8.rar</a>https://stocksharp.ru/topic/2893/Возвращается не верное время терминала2012-07-25T14:44:41Z2012-07-25T14:44:41Zpaveldhttps://stocksharp.ru/users/6010/info@stocksharp.ruПериодически QuikTerminal.GetTerminals(false).First().ServerTime.Value<br />возвращает не правильный день.<br />Вот например сейчас у меня приведенный вызов возвращает 24.07.12, хотя сегодня 25.07.12. Время возвращает верное<br />Кто-то сталкивался с подобным глюком и как это лечится?https://stocksharp.ru/topic/2892/Опционы в Альфа-Директ2012-07-24T18:56:35Z2012-07-24T18:56:35ZSergey Masyurahttps://stocksharp.ru/users/701/info@stocksharp.ruВ Альфа-коннекторе на данный момент отсутствует поддержка опционов. Поэтому небольшой опрос - кому-нибудь требуется? Если наберется около 10 желающих, запланирую в таски.https://stocksharp.ru/topic/2891/Событие NewOrders OrdersChanged2012-07-24T17:55:12Z2012-07-24T17:55:12ZРоман Угрюмовhttps://stocksharp.ru/users/6091/info@stocksharp.ruИспользую билд 18411 ветка trunk<br />Не появляется событие NewOrders и OrdersChanged<br />запрос <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var orders = this.quikTrader.Trader.Orders;</pre>
</div></div><br />показывает, что заявок нет, в окне квика "Заявки" заявки есть<br />при работающем роботе ставил и снимал заявки - события нет<br /><br />Делал так:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.quikTrader = new QuikTrader(quikPath).GuiSyncTrader(); // создаем шлюз к Quik-у и синхронизуем его
this.quikTrader.Connect(); // производим соединение
this.quikTrader.NewOrders += this.NewOrderIsReciew; //Подписался
this.quikTrader.OrdersChanged += this.OrdersIsChanged;
this.quikTrader.Trader.StartExport(); //Запустил экспорт
this.quikTrader.RegisterOrderLog(this.tradeSecurity[(int)tikerNumber]); //На всякий случай делал это - не помогло
</pre>
</div></div>https://stocksharp.ru/topic/2890/а гидра минутки может грузить или только тики?2012-07-24T17:11:44Z2012-07-24T17:11:44ZКонверторhttps://stocksharp.ru/users/28548/info@stocksharp.ruвсех приветствую,<br />вот приступил к изучению гидры и возник вопрос:<br />а она может минутки качать или только тики? [blink] https://stocksharp.ru/topic/2889/проблемы с котирование2012-07-24T14:05:41Z2012-07-24T14:05:41ZEThttps://stocksharp.ru/users/5992/info@stocksharp.ruАлгоритм маркет котирования очень сильно и очень быстро))) перебирает лишние контракты! <br />сборка 18326https://stocksharp.ru/topic/2888/На сколько в тестировании важен кризис 2008г2012-07-24T10:06:14Z2012-07-24T10:06:14ZMenDelhttps://stocksharp.ru/users/6356/info@stocksharp.ruНе знаю чему отдать приоритет, есть две системы с примерно одинаковом результатом, тестирование проводилось за последнее 6,5 лет.<br />Одна показывает очень высокую просадку в 2008г, но маленькую среднюю просадку за остальные 5 лет.<br />А другая 2008 год прошла хорошо, но в другое время средняя просадка у нее выше, чем у первой.<br /><br />Хотелось услышать ваше мнениее, кто как относится к кризису? На сколько он для ваших расчетов важен?https://stocksharp.ru/topic/2886/4.1.2 Внезапные переподключения к торговому серверу2012-07-23T14:46:28Z2012-07-23T14:46:28ZАндрей Александровичhttps://stocksharp.ru/users/255/info@stocksharp.ruЗдравствуйте, после перехода на новую версию библиотеки начались беспричинные разрывы связи с торговым сервером. В классе подключения есть обработчики исключений catch (COMException ex) и catch (Exception ex) но они ничего не фиксируют... система просто начинает переподключаться. В классе отвечающим за подключение ничего не менялось и до перехода на новую версию библиотеки такого не наблюдалось ни разу. Подскажите в чем может быть проблема и как мне определить её причины в этом случае.https://stocksharp.ru/topic/2885/4.1.2 Проблемы с удалением правил из стратегии.2012-07-23T14:25:09Z2012-07-23T14:25:09ZАндрей Александровичhttps://stocksharp.ru/users/255/info@stocksharp.ruНе могу разобраться как удалить правило из стратегии после перехода на 4.1.<br />Для примера возьмем правило которое теперь называется Trader.WhenTimeCome. Если использовать его в качестве таймера который вызывает некий метод раз в секунду то до 4.1 код выглядел примерно так.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
nextCall = Trader.MarketTime.AddSecond(1);
this.When.Ttrader.TimeCome(nextCall)
.Do(Meth);
public void Meth()
{
Rules.Remove(Trader.TimeCome(nextCall);
nextCall = Trader.MarketTime.AddSecond(1);
this.When.Ttrader.TimeCome(nextCall)
.Do(Meth);
}
</pre>
</div></div><br /> <br />Вот как я реализовал этот код в 4.1<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
nextCall = Trader.MarketTime.AddSecond(1);
this.Trader.WhenTimeCome(nextCall)
.Do(Meth).Apply(this);
public void Meth()
{
Rules.Remove(Trader.TimeCome(nextCall);
nextCall = Trader.MarketTime.AddSecond(1);
this.Trader.WhenTimeCome(nextCall)
.Do(Meth);
}
</pre>
</div></div><br /><br />Проблема в том что зарегистрированное правило не удаляется привычным образом, и при регистрации очередного программа падает из-за не обрабатываемого исключения. Добавив вывод на экран значения Rules.Count я пришёл к выводу что у меня не получается уменьшить это значение ни одним из доступных способов(Rules.Remove(); TryRemoveRule(); Rules.Clear())<br />Подскажите что я делаю не так?https://stocksharp.ru/topic/2884/Не приходят стаканы по событию NewMarketDepths2012-07-23T14:00:43Z2012-07-23T14:00:43ZСерёжа Сорокинhttps://stocksharp.ru/users/212/info@stocksharp.ruВерсия 4.1.2. Подключаюсь к квику. Событие появления новых стаканов срабатывает только один раз. (Вывожу его время на форму). К сожалению, среди сэмплов нет работы с этим событием. Поэтому, возможно, я что-то делаю неверно, но проверить это не могу.<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void ConnectClick()
{
Debug.WriteLine(QuikTerminal.GetDefaultPath());
_trader = new QuikTrader(QuikTerminal.GetDefaultPath());
_candleManager = new CandleManager(_trader);
_trader.NewPortfolios += s => this.GuiAsync(() => Portfolios.ItemsSource = _trader.Portfolios);
_trader.Connected += () => _trader.StartExport();//запускаем экспорт
_trader.NewSecurities += sec =>
{
foreach (var s in sec.Where(s => s.Code == RtsCode))
{
_trader.RegisterMarketDepth(s);
}
};
_trader.NewMarketDepths +=
q => this.GuiAsync(() => lblLastRefresh.Content = q.First().LastChangeTime.ToString());
_trader.Connect();
}</pre>
</div></div>https://stocksharp.ru/topic/2883/Как при срабатывании правила .WhenNewTrades() передать заявку, по которой прошли сделки?2012-07-23T13:52:57Z2012-07-23T13:52:57Zproftshttps://stocksharp.ru/users/6174/info@stocksharp.ruСобственно раньше было так:<br /><br />в Метод передавалось правило.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
this
.When(order.NewTrades())
.Do(xxx => Метод1(xxx));
private void Метод1(StrategyRule _Rule1)
{
var ID = long.Parse(_Rule1.Name.Substring(20, 8));
Order1 = this.Trader.Orders.Single(o => o.TransactionId == ID);
...
}
</pre>
</div></div><br /><br />в самом методе из названия правила доставался номер заявки, по номеру заявки находилась нужная из всех заявок. <br /> https://stocksharp.ru/topic/2882/Ошибка в гидре из транка.2012-07-23T06:13:00Z2012-07-23T06:13:00Zanotharhttps://stocksharp.ru/users/6089/info@stocksharp.ruДелал следующее: снес базу. Запустил гидру-то есть все чистое-новое. Удалил ненужные источники. Поредактировал свойства плазы нажал сохранить и выскочила ошибка.<br />10:08:47.982 | Error | StockSharp | System.MissingMethodException: Method not found: '!!1 Ecng.Collections.CollectionHelper.TryGetValue(Ecng.Collections.SynchronizedDictionary`2<System.__Canon,!!1>, System.__Canon)'.<br /> at Ecng.Data.Database.UpdateCache[TEntity](TEntity entity, SerializationItemCollection source)<br /> at Ecng.Data.Database.Update[TEntity](TEntity entity, FieldList keyFields, FieldList valueFields)<br /> at Ecng.Data.HierarchicalPageLoadList`1.OnUpdate(TEntity entity)<br /> at Ecng.Serialization.RelationManyList`1.Update(TEntity entity)<br /> at System.Windows.Input.CommandBinding.OnExecuted(Object sender, ExecutedRoutedEventArgs e)<br /> at System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender, ExecutedRoutedEventArgs e, CommandBinding commandBinding)<br /> at System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings, Object sender, RoutedEventArgs e, ICommand command, Boolean execute)<br /> at System.Windows.Input.CommandManager.FindCommandBinding(Object sender, RoutedEventArgs e, ICommand command, Boolean execute)<br /> at System.Windows.Input.CommandManager.OnExecuted(Object sender, ExecutedRoutedEventArgs e)<br /> at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> at System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter, IInputElement target, Boolean userInitiated)<br /> at MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource(ICommandSource commandSource, Boolean userInitiated)<br /> at System.Windows.Controls.Button.OnClick()<br /> at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)<br /> at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)<br /> at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)<br /> at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)<br /> at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)<br /> at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)<br /> at System.Windows.Input.InputManager.ProcessStagingArea()<br /> at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)<br /> at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)<br /> at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)<br /> at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)<br /> at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<br /> at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)https://stocksharp.ru/topic/2881/Модификация таблицы всех сделок.2012-07-21T14:42:12Z2012-07-21T14:42:12Zobrubatorhttps://stocksharp.ru/users/27743/info@stocksharp.ruЗдравствуйте.<br />Помогите новичку. Хочу модифицировать таблицу всех сделок следующим образом: Если подряд идут несколько покупок или продаж, то складывать кол-во лотов в них и выводить одной строкой до тех пор пока не появится сделка в противоположном направлении.<br /><br />Например, если в таблице всех сделок строки идут таким образом:<br />RIU2 SPBFUT 140110 1 BUY<br />RIU2 SPBFUT 140110 1 BUY<br />RIU2 SPBFUT 140110 1 BUY<br />RIU2 SPBFUT 140110 1 BUY<br />RIU2 SPBFUT 140000 1 SELL<br />RIU2 SPBFUT 140000 2 SELL<br />RIU2 SPBFUT 140000 1 SELL<br />RIU2 SPBFUT 140000 1 SELL<br />RIU2 SPBFUT 140000 1 SELL<br />RIU2 SPBFUT 140115 1 BUY<br />RIU2 SPBFUT 140115 1 BUY<br /><br />то, по идее, в модифицированной таблице они должны выглядеть таким образом:<br />RIU2 SPBFUT 140110 4 BUY<br />RIU2 SPBFUT 140000 6 SELL<br />RIU2 SPBFUT 140115 2 BUY<br /><br />Еще было бы неплохо фильтровать эту таблицу по крупным объемам. Т.е. показывать только те сделки в которых объем был выше, например 100 лотов.<br /><br />К сожалению, с C# практически не знаком. Посмотрел примеры в библиотеке и пример простого привода. Кое-что прояснилось, но конкретно для такой задачи полезного для себя не подчерпнул. Возможно плохо искал. Может кто-нибудь подскажет в каком направлении копать, поделится примером? https://stocksharp.ru/topic/2880/4.1.3 Ошибка при создании шлюза.2012-07-20T09:49:22Z2012-07-20T09:49:22ZMoadiphttps://stocksharp.ru/users/5973/info@stocksharp.ruСборка <b>18354</b><br /><br />При создании экземпляра класса QuikTrader, возникает ошибка.<br />Проверял на Sample.<br /><br />StackTrace<br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_e5e1f10881de4bcea3d9e97320f589a7');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_e5e1f10881de4bcea3d9e97320f589a7' style='display:none'><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
System.NotImplementedException: Метод или операция не реализованы.
в Ecng.Collections.SynchronizedSet`1.UnionWith﴾IEnumerable`1 other﴿
в StockSharp.Quik.DdeTable.#=qqP4jiK6iKM4gZjWmwoFNmA==﴾#=qoF20$LsBou778asWyaK_glrNgBuqxYjWKetVkI0NwOY= #=q0YIZ2_ganqJlJgS$M$kcug==, String
#=q6N4BvBWLatxjs8FvlGlbdg==, IEnumerable`1 #=q$v6SpJ0iRC9ll76NYM5lKw==﴿
в StockSharp.Quik.DdeTable..ctor﴾#=qoF20$LsBou778asWyaK_glrNgBuqxYjWKetVkI0NwOY= #=qnrCVJKW$uYdG2P79zDlM_A==, String #=qWwHdQg232kojzzXHl_b0ww==, IEnumerable`1
#=qe9cZZPUu9hpEVKnAlumKFg==﴿
в StockSharp.Quik.QuikTrader.#=qSteYbV3gscLN_5u0xP_K9Q==﴾﴿
в StockSharp.Quik.QuikTrader..ctor﴾String path﴿
в Sample.MainWindow.ConnectClick﴾Object sender, RoutedEventArgs e﴿ в d:\StockSharp 4.1 License\Sources\trunk\Samples\Quik\Sample\MainWindow.xaml.cs:строка 102
в 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.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.RaiseTrustedEvent﴾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, WindowMessage 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, Int32 numArgs﴿
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen﴾Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler﴿
</pre>
</div></div><br /></div>https://stocksharp.ru/topic/2879/Два робота на одном квике2012-07-20T07:04:13Z2012-07-20T07:04:13ZСерёжа Сорокинhttps://stocksharp.ru/users/212/info@stocksharp.ruВ одном процедура подключения выглядит так:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void ConnectClick()
{
_trader= new QuikTrader(QuikTerminal.GetDefaultPath());
_candleManager= new CandleManager(_trader);
_trader.NewSecurities +=s=> { };//событие вызывается через метод
_trader.Connected += () => _trader.StartExport();//запускаем экспорт
_trader.Connect();
}</pre>
</div></div><br /><br />Во втором так:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
private void ConnectClick()
{
_trader = new QuikTrader(QuikTerminal.GetDefaultPath()); // @"C:\Program Files (x86)\Quik-Zerich\info.exe");//
_trader.NewSecurities += NewSecurities;//событие вызывается через метод
_trader.NewPortfolios += portfolios =>this.GuiAsync(()=>
{
Portfolios.ItemsSource =
_trader.Portfolios;
});
_trader.Connected += () => _trader.StartExport();//запускаем экспорт
_trader.Connect();
}</pre>
</div></div><br /><br />Так вот если один робот уже запущен, то второй слетает на строке _trader.Connect() с ArgumentException: <div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">Не удалось подключиться к Quik. Возможно, в Quik-е не включена обработка внешних транзакций.<br />Имя параметра: path</div></div><br /><br />Есть ли способ подключаться к квику двумя роботами сразу?https://stocksharp.ru/topic/2878/Вопрос по SecurityChanged2012-07-19T18:11:08Z2012-07-19T18:11:08ZMemoryhttps://stocksharp.ru/users/6063/info@stocksharp.ruА кто знает в каких именно случаях возникает SequrityChanged? Я раньше всегда считал что оно возникает по изменению Bid Ask и по совершению сделки. Добавил обработку SequrityChanged в SampleSmart <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// подписываемся на событие разрыва соединения
Trader.ConnectionError += error => this.GuiAsync(() =>
{
// заблокируем кнопку Экспорт (так как соединение было потеряно)
ChangeConnectStatus(false);
MessageBox.Show(this, error.ToString(), "Ошибка соединения");
});
Trader.ProcessDataError += error => this.GuiAsync(() => MessageBox.Show(this, error.ToString(), "Ошибка обработки данных"));
Trader.NewSecurities += securities => this.GuiAsync(() => _securitiesWindow.AddSecurities(securities));
Trader.NewMyTrades += trades => this.GuiAsync(() =>
_myTradesWindow.Trades.AddRange(trades));
Trader.NewTrades += trades => this.GuiAsync(() =>
{
foreach (var trade in trades)
{
LastTradeID=trade.Id;
Console.WriteLine(" Trade id " + trade.Id+" Trade price "+trade.Price);
}
_tradesWindow.Trades.AddRange(trades);
}
);
Trader.SecuritiesChanged += Secs =>
{
foreach (Security Sec in Secs)
{
if (Sec.LastTrade != null)
Console.WriteLine("sec " + Sec.Code + " sec trade id " + Sec.LastTrade.Id + "sec trade price " + Sec.LastTrade.Price + " last trade id " + LastTradeID);
}
};
</pre>
</div></div><br /><br />получил любопытный результат. <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
sec RIU2 sec trade id 0sec trade price 140410 last trade id 599469678
sec RIU2 sec trade id 0sec trade price 140410 last trade id 599469678
sec RIU2 sec trade id 0sec trade price 140410 last trade id 599469678
sec RIU2 sec trade id 0sec trade price 140410 last trade id 599469678
Trade id 599469685 Trade price 140415
Trade id 599469686 Trade price 140415
Trade id 599469687 Trade price 140420
Trade id 599469688 Trade price 140420
Trade id 599469689 Trade price 140420
Trade id 599469690 Trade price 140420
Trade id 599469691 Trade price 140425
Trade id 599469692 Trade price 140425
Trade id 599469693 Trade price 140425
Trade id 599469694 Trade price 140430
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
sec RIU2 sec trade id 0sec trade price 140430 last trade id 599469694
Trade id 599469696 Trade price 140425
sec RIU2 sec trade id 0sec trade price 140425 last trade id 599469696
</pre>
</div></div><br /><br />похоже SequrityChanged приходит не после каждой сделки. Причем не приходит даже после сделок с другой ценой. <br />И еще вопрос почему в обработчик Trader.SequrityChanged LastTrade всегда приходит с Id==0?https://stocksharp.ru/topic/2877/Проблема с CandleManager.Start2012-07-19T10:48:30Z2012-07-19T10:48:30ZMemoryhttps://stocksharp.ru/users/6063/info@stocksharp.ruПосле перехода с 4.1.1 на 4.1.2, вдруг начало вылетать исключение ArgumentNull. При этом пишет следующее - Value cannot be null.<br />Parameter name: securityId. В 4.1.1 все хороше работало. Код простейший:<br /> <div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var timeFrame = TimeSpan.FromMinutes(1);
CandleSeries series = new CandleSeries(typeof(TimeFrameCandle), Sec, timeFrame);
candleManager.Start(series);
</pre>
</div></div><br />Sec.Id кончно-же есть.https://stocksharp.ru/topic/2876/Стратегия ложный пробой2012-07-17T21:00:27Z2012-07-17T21:00:27ZStockSharphttps://stocksharp.ru/users/341/info@stocksharp.ruСтратегия ложный пробой<br /><br />Стратегия не торговалась на реальных деньгах. <br />Тесты показывают, что стратегия работает в плюс, но соотношение риск/прибыль не такое, чтобы запускать эту систему на деньгах.<br /><br /><span style="color:green"><b>32% Profit </b></span> <span style="color:red"><b>17% DD</span> с 2009 года.</b> <b>Средняя прибыль <span style="color:green">0.98%</b></span><br /><br />Приложил код для WLD к данной стратегии. Данный код модифицировался по-разному. Один из трейдеров, с которым я работал над этой системой, смог немного модифицировать её и получить устойчивый результат с 2009 года с хорошим соотношением риск/прибыль. Но средний профит при этом был очень невысоким, поэтому даже в этом случае, не вижу смысла “мучать” стратегию.<br /><br />Идея стратегии основана на наблюдении, как иногда возникают тренды в обратную сторону, после пробития ближайшего макс/мин. Я хотел научиться брать эти развороты. Я предполагал, что за этими макс/мин собирали стопы, наливали нужный объем и шли куда надо. Тестировать эти развороты с помощью стакана или других способов, чтобы определить сбор стопов, я не мог, т.к. под рукой не было необходимых данных, поэтому я решил воспользоваться тем, что есть и формализовать паттерн ложного пробоя на свечках. <br /><br />Наблюдение пробоя ближ. макс/мин относилось к 5минутному графику, и изначально предполагалось, что стратегия будет работать на этом ТФ. В итоге, данная стратегия работает на часовиках. Если пробовать распознать поход за стопами на 5 мин, я бы использовал более “точные” данные – ордер лог или тики + стаканы. Что кажется трудоемким, поэтому эту идею оставили в таком виде.<br /><br />Алгоритм стратегии – Цена идет вверх N пунктов ( PeakRange ), после чего идет вниз N пунктов ( PeakRange ). Таким образом образуется Пик. После этого, если цена подходит к пику, активируется уровень входа, который будет находиться на удалении ( Step ) от уровня пика. Если после активации уровня, цена пробивает его и уходит вверх, то уровень просто не активируется. При образовании нового пика, уровень переносится. Если после активации уровня цена начинает обратное движение, мы входим в шорт. Стоп ставится на уровень пика + Delta Stop.https://stocksharp.ru/topic/2875/SampleCandles - не рисует свечки2012-07-17T16:57:40Z2012-07-17T16:57:40ZStashttps://stocksharp.ru/users/28351/info@stocksharp.ruДоброго времени суток,<br /><br />Подскажите пожалуйста, пытаюсь разобраться с графиками и свечками, открыл пример из последнего StockSharp - SampleCandles, и он ни в какую не хочет рисовать свечки, рисует лишь пустой график, если нажать на график то он превращается в черный экран. Рыл по этому форуму, но решения увы не нашел, ткните пож-ста куда копать ?<br />Из инструментов в SampleCandles выбираю RIU2<br /><br />Quik настраивал загрузкой wnd-файла из StockSharp<br />Verifier говорит что все хорошо.<br />Sample рисует стакан RIU2, заявки в стакане прыгают.<br /><br /><br />UPD: Тему пару строками ниже смотрел, в таблице всех сделок у меня выбраны все инструменты.<br /><br />Огромное спасибо!https://stocksharp.ru/topic/2874/Ошибка при котировании, синхронные транзакции2012-07-17T14:56:58Z2012-07-17T14:56:58ZNattyDhttps://stocksharp.ru/users/687/info@stocksharp.ruЗдравствуйте, вылазит ошибка при котировании (MarketQuotingStrategy), после которой оно останавливается.<br />QuickTrader переведен в синхронный режим.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_trader = new QuikTrader(terminal.SystemProcess.MainModule.FileName) { IsAsyncMode = false};</pre>
</div></div><br />Заметил, что в терминале в таблице заявок у заявок все-равно присутствует "ID Транзакции", так и должно быть?<br /><br />S# 4.1.1 <br />Quik 6.02, 6.01<br /><br />Прилагаю Лог стратегии, QuickTrader ошибок не выдает<br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_4be4cac4653a4ad1930f9479955f58d3');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_4be4cac4653a4ad1930f9479955f58d3' style='display:none'><br /><div class="code"><strong>Код</strong><div class="innercode"><br />S_UXU2@UX_UE01058 | 17.07.2012 17:23:49.173 | | Стратегия запущена.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.230 | | Стратегия запущена.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.241 | | Котирование на Buy объема 1.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.242 | | Приостановка правил. _rulesSuspendCount 1.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.263 | | Возобновление правил. _rulesSuspendCount 0.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.535 | | Цена текущей NULL и лучшей 1148,8.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.535 | | Лучший бид 1148,8 и лучший аск 1151.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.536 | | Регистрация новой заявки на Buy с ценой 1148,8 и объемом 1.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.858 | | Заявка 62614459 принята биржей.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:49.877 | | Заявка 62614459 на Buy отправлена с ценой 1148,8 объемом 1.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.678 | | Цена текущей 1148,8 и лучшей 1148,9.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.682 | | Лучший бид 1148,9 и лучший аск 1151.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.683 | | Котирование заявки 62614459 на Buy с ценой 1148,8 объемом 1.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.732 | Ошибка | System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.<br /> в Ecng.ComponentModel.EventsContainer.BeginSuspend()<br /> в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)<br /> в StockSharp.Quik.QuikTrader.#=quI0ECWyYQ6D__0FpXXVx6mSb4AwRxeUY74VZaV60ZGg=(Order #=qaR_EgCNBXJebgaITxbqg_g==, TransactionBuilder #=qwBPlvcbc6_QcBpexeXMNMA==)<br /> в StockSharp.Quik.QuikTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)<br /> в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)<br /> в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)<br /> в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()<br /> в StockSharp.Algo.Strategies.StrategyRule`1.#=q8bZ8akm2FRZTBpctt6Y5pGD5YVrOfStu6VYJathjxck=.#=q$e$XHZXKAmDkGmxEdc31$w==(#=qkGIHUZeVjCPY5HrimUIWQQ== #=qsWSJ9nMRKasYRGrfSojqqg==)<br /> в StockSharp.Algo.Strategies.StrategyRule`1.#=qlvr2POsvDBbjTf98t0zvpyTMDmDnGEKeQtksNgtDiQQ=()<br /> в StockSharp.Algo.Strategies.Strategy.#=qqT0_S6QHKdYMEa00TsYhuA==(IStrategyRule #=qif9rZwhz_4WWQY1beitBUA==, Func`1 #=qHWkgHkFI$KyWdUXhoglrLw==, Object #=qKlkKmXRkYYMu2oQmfgx5Qg==, Boolean #=qqMKPYFUZPSoo5HQN$qfRDw==)<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.740 | | Отмена заявки 62614459.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.763 | Ошибка | System.InvalidOperationException: Операция является недопустимой из-за текущего состояния объекта.<br /> в Ecng.ComponentModel.EventsContainer.BeginSuspend()<br /> в StockSharp.Algo.BaseTrader.ProcessEvents(Action handler)<br /> в StockSharp.Quik.QuikTrader.#=quI0ECWyYQ6D__0FpXXVx6mSb4AwRxeUY74VZaV60ZGg=(Order #=qaR_EgCNBXJebgaITxbqg_g==, TransactionBuilder #=qwBPlvcbc6_QcBpexeXMNMA==)<br /> в StockSharp.Quik.QuikTrader.OnCancelOrder(Order order)<br /> в StockSharp.Algo.BaseTrader.CancelOrder(Order order)<br /> в StockSharp.Algo.Strategies.Strategy.CancelOrder(Order order)<br /> в StockSharp.Algo.Strategies.Strategy.#=q8NeZglL_Y2Olm7EbsZMnj5T$RL0jaskjS$tqw$OkhqY=(Order #=qtaw3SxG5fnCWwlzB7fb6tQ==)<br /> в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)<br /> в StockSharp.Algo.Strategies.Strategy.#=qlMIUqzdOVfkxxxZfy5U$4WlakkxUmbAXfYW$9f3mLMM=(IEnumerable`1 #=qw$TTgXa8aFwOOKdO4k5RmQ==)<br /> в StockSharp.Algo.Strategies.Strategy.CancelActiveOrders()<br /> в StockSharp.Algo.Strategies.QuotingStrategy.#=qGZP_NLsRWYYuvXhjtYTla5YlhizT$hMidiP7hrDCmvo=()<br /> в StockSharp.Algo.Strategies.StrategyRule`1.#=q8bZ8akm2FRZTBpctt6Y5pGD5YVrOfStu6VYJathjxck=.#=q$e$XHZXKAmDkGmxEdc31$w==(#=qkGIHUZeVjCPY5HrimUIWQQ== #=qsWSJ9nMRKasYRGrfSojqqg==)<br /> в StockSharp.Algo.Strategies.StrategyRule`1.#=qlvr2POsvDBbjTf98t0zvpyTMDmDnGEKeQtksNgtDiQQ=()<br /> в StockSharp.Algo.Strategies.Strategy.#=qqT0_S6QHKdYMEa00TsYhuA==(IStrategyRule #=qif9rZwhz_4WWQY1beitBUA==, Func`1 #=qHWkgHkFI$KyWdUXhoglrLw==, Object #=qKlkKmXRkYYMu2oQmfgx5Qg==, Boolean #=qqMKPYFUZPSoo5HQN$qfRDw==)<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.764 | | Стратегия останавливается.<br />MQS_UXU2@UX_UE01058 | 17.07.2012 17:23:50.772 | | Стратегия остановлена.<br /><br /></div></div><br /></div><br /><br />Что я делаю не так?