Сообщество. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=community&page=261Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T14:07:22Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/1384/ФОРТС и ММВБ одновременно2011-02-21T13:26:49Z2011-02-21T13:26:49Zxaxahttps://stocksharp.ru/users/27929/info@stocksharp.ruВозможно ли такое через S#? Как в таком случае настроить квик?https://stocksharp.ru/topic/1383/связь между приказом на исполнение и сделкой2011-02-21T12:28:17Z2011-02-21T12:28:17ZGreene-nskhttps://stocksharp.ru/users/27932/info@stocksharp.ruМихаил, добрый день!<br /><br />Я использую котирование вида BestByPriceQuotingStrategy.<br />Могу ли я сравнивать приказ, который я отослал, с тем, что я получаю в NewMyTrades? Если нет, то как связать посланный приказ с тем, что пришло?<br /><br />Пример кода:<br /><div class="code"><strong>Код</strong><div class="innercode"><br /><br />strategy.NewMyTrades += OnNewMyTrades;<br />...<br />base.ChildStrategies.Add(new BestByPriceQuotingStrategy(_OrderInit, 4.Pips(_OrderInit.Security)));<br />...<br /><br />private void OnNewMyTrades(IEnumerable<MyTrade> trades)<br />{<br /> foreach (MyTrade trade in trades)<br /> {<br /> if (trade.Order.IsMatched())<br /> { <br /> Strategy strategy = StrategyManager.Strategies.FirstOrDefault(s => s.PositionManager.Trades.Any(t => t == trade));<br /> if (strategy != null)<br /> {<br /> // =============== МОГУ ЛИ Я ТАК СРАВНИВАТЬ?<br /> if (trade.Order == _OrderInit)<br /> {<br /> ..........<br /> }<br /> }<br /> } // end if is matched<br /> } // end foreach<br />}<br /></div></div>https://stocksharp.ru/topic/1382/ProcessDataError [3.0.5]2011-02-21T12:16:06Z2011-02-21T12:16:06ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruСегодня во время работы возникла следующая ошибка (версия 3.0.5)<br /><br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"><br />System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.<br /> at System.Collections.Generic.Dictionary`2.get_Item(TKey key)<br /> at Ecng.Collections.SynchronizedDictionary`2.get_Item(TKey key)<br /> at Ecng.Trading.Algo.BaseTrader.#=qMZYPf9u7uP2NRMimEzapIQ8y_JY0yjJ693VlbQUCbuw=.#=qFya9gMkIE$xzntfZuU7j5196DM5Llnj0OF3mkeeWeEs=(Int64 #=qtBAyg70sipTb9L7QXDXJLw==)<br /> at Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)<br /> at Ecng.Trading.Algo.BaseTrader.GetOrder(Int64 id, Func`2 createOrder, Action`1 changeOrder)<br /> at Ecng.Trading.Quik.QuikTrader.#=qAQlNXJDTlVJnxe90IsoXRlANrhvBV5NyidkxS4ns9bQ=.#=q5BAt7kdUzLblep1vcQqNxw==(IList`1 #=qhK3SVFJmQsstqwu7CqxJGQ==, Func`2 #=q6EDxh3Nnw_c7sKO6$_wa2g==)<br /> at #=qUv0rwGqA2pn$73vRBRthqKxIhyHxkw1LOuPdT6pQrZgRNIYT8qd9IzurAT_4K_80.#=qUC9GB3gzNSQNKAXi7RoQrg==(DdeTable #=q3HpgnMKEiKJu9MqmFLnu8A==, IList`1 #=qHJsr80K8XAO4HDTd7Oe3bQ==, Action`2 #=q$lqXBO6D5Lz7OhNvbqgrnw==, Action`1 #=qNBMPOTC$LWRD50yvbEHMIA==)<br /></div></div><br /><br />Предположительно она возникла при срабатывании стоп заявки.<br />На 2.6 такого не былоhttps://stocksharp.ru/topic/1381/Exception при проверки Verifier (3.0.5)2011-02-19T15:43:54Z2011-02-19T15:43:54ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruПри проверки настроек таблиц Квика для бирж РТС и ММВБ (срочный рынок) с помощью Verifier (3.0.5) выскакивает следующий exception:<br /><a href='http://i.pixs.ru/storage/0/6/2/exceptionp_7183324_1729062.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i.pixs.ru/storage/0/6/2/exceptionp_7183324_1729062.png" style='max-width: 600px;' alt=""/></a><br /><br />Если нажать Ok и опять "Проверить" - exception следующий:<br /><a href='http://i.pixs.ru/storage/0/8/1/exceptionp_8937148_1729081.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i.pixs.ru/storage/0/8/1/exceptionp_8937148_1729081.png" style='max-width: 600px;' alt=""/></a><br /><br /><br />Проверку делал сейчас (суббота, неторговое время, 18:30) - мало ли влияет :)https://stocksharp.ru/topic/1380/когда вызывать _strategy.Start()2011-02-18T14:36:56Z2011-02-18T14:36:56Zanebotovhttps://stocksharp.ru/users/27766/info@stocksharp.ruВ примере SampleHistoryTesting, _strategy.Start() вызывается сразу после _manager.Start.<br /><br />Т.к. _manager.Start запускает цикл в параллельном потоке, возможна ситуация, при которой стратегия пропустит первые сделки в истории.<br /><br />Т.е., наверное, правильнее вызывать _strategy.Start в обработчике события _manager.StateChanged<br /><br />Правильна ли моя догадка, или я не понимаю логики старта тестирования?https://stocksharp.ru/topic/1379/некритичная ошибка в SampleHistoryTesting\MainWindow.xaml2011-02-18T11:50:45Z2011-02-18T11:50:45Zanebotovhttps://stocksharp.ru/users/27766/info@stocksharp.ru<div class="code"><strong>Код</strong><div class="innercode"><TextBox x:Name="HistoryPath" Text="" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="0" /><br /><Button x:Name="FindPath" Grid.Column="4" Grid.Row="0" Content="..." Width="25" HorizontalAlignment="Left" Click="FindPath_Click" /><br /></div></div><br />Grid.ColumnSpan="2" - не нужен, из-за него кнопка FindPath закрывает часть текстового поля<br />кстати, у кнопки Grid.Column="4" лучше поправить на 2, т.к. столько колонок у тебя нет :), хотя это ни на что не влияетhttps://stocksharp.ru/topic/1378/Торговля опционами через СмартКом 2.02011-02-17T17:26:07Z2011-02-17T17:26:07ZMyxaGThttps://stocksharp.ru/users/27680/info@stocksharp.ruПривет всем интересующимся. Посмотрел форум и не нашел темы где бы моя просьба была бы умесна и пускай простит меня админ за расплод тем но очень нужно . Судь проблемы собственно. Расчёт греков для опционов в СмартКоме . Мож кто сталкивался с такой барикадой. Подскажите с чем нанеё и как штурмовать. [confused] https://stocksharp.ru/topic/1377/Генерация отчетов тестирования2011-02-17T13:13:33Z2011-02-17T13:13:33Zpondiriverhttps://stocksharp.ru/users/6167/info@stocksharp.ruДоброго времени суток!<br />Во-первых, большое спасибо Михаилу за тестирование на истории! <br />У меня вопрос связанный с генерацией отчетов.<br />Скажите пожалуйста, есть ли возможность генерации отчетов по заданному принципу в базу данных. Что-нить типа: в каждой строке таблицы задается инструмент, время открытия позиции, время закрытия, профит по позиции и проч.<br /><br />https://stocksharp.ru/topic/1376/Выполнение лимитированных заявок в HistoryTestTrader2011-02-17T11:41:11Z2011-02-17T11:41:11Zandyhttps://stocksharp.ru/users/27886/info@stocksharp.ruПопробовал выставлять лимитированные заявки: правильно ли я понял, что они выполнятся при условии, если цена ask из стакана(для заявки на покупку) опускается до цены ордера, и по цене ask (часто отличной от цены в ордере)?<br /><br />Если так то мне кажется это несколько некорректно: во-первых после того как лимитированный ордер попал на биржу, он может выполниться только по своей цене.<br />Во-вторых лимитированную заявку можно считать выполненной не только, когда цена из стакана опускается до цены ордера, но и когда в исторических данных есть сделки с ценой меньше цены ордера.<br />Правильно или я что-то упускаю?<br /><br />Заранее спасибоhttps://stocksharp.ru/topic/1375/Вчерашние свечи в CandleManager2011-02-17T11:13:26Z2011-02-17T11:13:26ZKAXhttps://stocksharp.ru/users/3408/info@stocksharp.ruВчера интересовался тем как в candleManager получить вчерашние свечки. (<a href="http://stocksharp.com/posts/m/6010/#post5294" title="http://stocksharp.com/posts/m/6010/#post5294">Вопросы новичка</a>)<br /><br />Вариант экспорта портфеля на купайле, не понравился, поэтому вот мой велосипед:<br /><div class="code"><strong>Код</strong><div class="innercode"><br />using Ecng.Trading.Algo.Candles;<br /> using Ecng.Trading.BusinessEntities;<br /> using Ecng.Trading.Quik;<br /><br /> public class CandleHistoryManager : CandleManager<br /> {<br /> private CultureInfo _culture;<br /> private IEnumerable<TimeFrameCandle> _history;<br /> public CandleHistoryManager(QuikTrader Quik)<br /> : base(Quik)<br /> {<br /> _culture = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name) { NumberFormat = { NumberDecimalSeparator = "." } };<br /><br /> }<br /><br /> public IEnumerable<TimeFrameCandle> GetTimeFrameCandlesHistory(Security security, TimeSpan timeframe, int candleCount)<br /> {<br /> var candleList = base.GetTimeFrameCandles(security, timeframe, candleCount).ToList<TimeFrameCandle>(); <br /> if (candleList.Count < candleCount)<br /> {<br /> int diff = candleCount - candleList.Count;<br /> string fileName = String.Format("{0}.txt", security.Id);<br /> if (!File.Exists(fileName)) <br /> {<br /> return candleList;<br /> }<br /> if (_history == null)<br /> {<br /> _history = File.ReadAllLines(fileName).Select(line =><br /> {<br /> var parts = line.Split(',');<br /> var time = DateTime.ParseExact(parts[0] + parts[1], "yyyyMMddHHmmss", _culture);<br /> return new TimeFrameCandle<br /> {<br /> OpenPrice = double.Parse(parts[2], _culture),<br /> HighPrice = double.Parse(parts[3], _culture),<br /> LowPrice = double.Parse(parts[4], _culture),<br /> ClosePrice = double.Parse(parts[5], _culture),<br /> TimeFrame = timeframe,<br /> Time = time,<br /> TotalVolume = int.Parse(parts[6], _culture),<br /> Security = security<br /> };<br /> });<br /> }<br /> var neededRange = _history.OrderBy(key => key.Time).ToList<TimeFrameCandle>().GetRange((_history.Count() - diff), diff);<br /> candleList.InsertRange(0, neededRange);<br /> }<br /> return candleList;<br /> } <br /></div></div><br /><br />Собственно алгоритм простой, если количество запрашиваемых свечек больше чем есть, читаем данные из файла.<br />Файл можно получить на финаме. Формат простой: Дата (ГГГГММДД), Время(ЧЧММСС), Open, High, Low, Close, Volume<br /><br />скриншоты и немного воды тут: <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABuRNyMUhA_LuU32mTB3JOT7zTFAZZp3Xtz4aZRe-TtE8z1lVDHeUj8gpT5AHVLpDVzRDvllLiUMUDO3ly4iT-s" title="http://tradecommunity.ru/blog/stocksharp/41.html">http://tradecommunity.ru/blog/stocksharp/41.html</a>https://stocksharp.ru/topic/1374/NullReferenceException в SampleHistoryTesting2011-02-17T08:54:38Z2011-02-17T08:54:38Zanebotovhttps://stocksharp.ru/users/27766/info@stocksharp.ruВ файле \Sources\SampleHistoryTesting\MainWindow.xaml.cs<br />заменить<br /><div class="code"><strong>Код</strong><div class="innercode"><br />protected override void OnClosing(CancelEventArgs e)<br />{<br /> _manager.Dispose();<br /> base.OnClosing(e);<br />}<br /></div></div><br />на код<br /><div class="code"><strong>Код</strong><div class="innercode"><br />protected override void OnClosing(CancelEventArgs e)<br />{<br /> if ( _manager != null )<br /> _manager.Dispose();<br /> base.OnClosing(e);<br />}<br /></div></div><br /><br />вообще, если добавить данные проекты в TFS (если их там нет) и восстановить мне туда доступ, пока я их изучаю, данные правки мог бы вносить самhttps://stocksharp.ru/topic/1373/Заявки. Регистрация, снятие, перестановка2011-02-15T19:59:12Z2011-02-15T19:59:12ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruКто сабжем занимается? Когда ждать хаппи энда? Нужна ли помощь?https://stocksharp.ru/topic/1372/2skuvv. PlazaError.2011-02-15T19:39:19Z2011-02-15T19:39:19ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruА кто источник данного класса? По мере его рефакторинга я понял, что там ошибок - тьма тьмущая (взять хотя бы неправильную трансляцию com enum). Думаю, это не официальный исходник. Хотелось бы спросить автора о магическом парсинге. Нет ли и там кусочка тьмы.[smile] https://stocksharp.ru/topic/1371/Xml комментарии.2011-02-15T19:22:48Z2011-02-15T19:22:48ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruПредлагаю их не забывать. Кто занимается классом Message? Надо его задокументировать.<br /><br />Принцип в написании такой. Если перегружается что-то из базового класса, то комментарии надо просто копировать (copy from base если используется R#). Если что-то из Плазы - копируйте из ПлазаДоки. Иначе - от себя.https://stocksharp.ru/topic/1370/Метаданные. Отдельная папка.2011-02-15T19:20:10Z2011-02-15T19:20:10ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruДумаю надо перенести (skuvv, это Вы на этой задаче?). Сейчас просто невозможно смотреть на этот гигантский список файлов. Хотя они в последствии вообще и не нужны будут. Кто их держит - закидывайте в репозитарий свои изменения.https://stocksharp.ru/topic/1369/Вопросы по архитектуре history testing2011-02-15T19:17:46Z2011-02-15T19:17:46Zpyhta4oghttps://stocksharp.ru/users/497/info@stocksharp.ruВ каких случаях вызывается Strategy.OnRunning?<br />Отдельно интересно узнать в случае запуска отдельно на realtime и отдельно на history.<br /><br />Верно ли что в случае исторического<br />HistoryStrategyManager.TimeStep определяет частоту вызова Strategy.OnRunning?<br />а в случае realtime<br />StrategyManager.Interval определяет частоту вызова Strategy.OnRunning<br /><br /><br />В чем тогда разница между StrategyManager.Interval и HistoryStrategyManager.TimeStep ?<br /><br />Я подписался в стратегии на Trader.NewTrades и они приходят пачками. Чем больше HistoryStrategyManager.TimeStep тем больше.<br />А если моя логика завязана на каждый тик, то какой мне TimeStep ставить? 0 не проходит пишет DivisionByZero.<br /><br /><br />https://stocksharp.ru/topic/1367/Клиринг2011-02-15T08:25:35Z2011-02-15T08:25:35Zxaxahttps://stocksharp.ru/users/27929/info@stocksharp.ruСтолкнулся со след. проблемой: мне нужно по открытию новой свечи произвести сделку. то есть например на часовиках текущая свеча 13-00. когда наступает 14-00 по идее срабатывает условие isTradeTime == false и программа прогоняется в холостую. а затем сразу после того, как isTradeTime == true. должна произойти покупка. в итоге в 14-03 отправляется заявка, но реально клиринг еще не закончился и в итоге выкидывается исключение "попытка совершить .... в клиринг". Я так понимаю метод isTradeTime проверяет заранее заданные интервалы? Или я ошибаюсь? Можно ли как то гарантировано определить идет ли торговля?https://stocksharp.ru/topic/1366/Security.BestAsk и BestBid в S# 3.02011-02-14T15:01:55Z2011-02-14T15:01:55ZMaximhttps://stocksharp.ru/users/6182/info@stocksharp.ruМихаил, можете немного рассказать как получить BestAsk и BestBid?<br />Они по какой то причине равны 0.<br /><br />Я так подозреваю, что это связано с усечением количества столбцов в таблице Инструменты?<br />Для получения этих данных надо использовать старую расширенную версию?<br />Попробовал запустить экспорт стакана, но все равно значения не меняются.<br /><br />https://stocksharp.ru/topic/1365/[major] хранение и восстановление сделок стратегии2011-02-14T05:25:03Z2011-02-14T05:25:03ZGreene-nskhttps://stocksharp.ru/users/27932/info@stocksharp.ruВопрос: как восстановить инфу к какой стратегии относится сделка?<br /><br />Имеется робот с несколькими стратегиями. Эти стратегии генерируют сделки на одной бумаге. Для работы стратегий требуется история сделок, которые они совершили и информация, есть ли открытие позиции.<br />Хочется после остановки и повторного запуска восстанавливать состояние стратегий. В S# есть механизм хранения данных, но в его API есть только сохранение сделок с привязкой к бумаге. Нет информации о стратегиях. <br /><br />Хорошо, я могу сохранять инфу о трейдах в своем собственном хранилище, восстанавливать состояние при старте стратегии, но в S# этой инфы не будет и весь механизм подсчета статистики S# не будет работать. Можно ли как-нибудь при загрузке стратегии указывать ей, какие сделки ее?https://stocksharp.ru/topic/1364/MarketDepth.QuotesChanged в 3.0.22011-02-13T18:38:55Z2011-02-13T18:38:55ZMaximhttps://stocksharp.ru/users/6182/info@stocksharp.ruМихаил, а какая альтернатива MarketDepth.QuotesChanged в новой версии S#?<br />Как узнать, что стакан изменился?