Форум. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=forum&page=237Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T09:23:03Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/1318/проблема с ReConnectionSettings.TimeBounds2011-01-15T08:22:43Z2011-01-15T08:22:43ZValdishttps://stocksharp.ru/users/28545/info@stocksharp.ruпочему в выходной не работает такой код ?<br /><br /> this._Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(1);<br /> this._Trader.ReConnectionSettings.TimeBounds = Exchange.Test.WorkingTime; <br /> this._Trader.ReConnectionSettings.ReConnectingAttemptCount = -1;<br /> this._Trader.ReConnectionSettings.ConnectingAttemptCount = -1;<br /> this._Trader.ReConnectionSettings.ConnectionRestored += () =><br />хотя в хелпе написано что биржа Test не имеет ограничений по времени работы ...<br />и даже если удалить строку <br /> this._Trader.ReConnectionSettings.TimeBounds = Exchange.Test.WorkingTime; <br />всё равно соединение в выходной день не востанавливается .<br />причем в рабочие дни всё работает .https://stocksharp.ru/topic/1317/Проблема свечек2011-01-14T18:16:10Z2011-01-14T18:16:10Zavkarhttps://stocksharp.ru/users/27828/info@stocksharp.ruДоброго времени суток, Михаил!<br /><br />В программе вывожу график свечей, заметил что очень долго рисуются свечи при первом построении графика. Даже в примере SampleCandles на построение часового графика по первому инструменту уходит несколько минут. Мне кажется, что проблема заключается в том, что при получении первого графика на каждую сделку по инструменту вызывается событие CandlesChanged и соответстсвенно изменение свечи на графике, хотя данное событие нужно вызывать только для самой "последней" свечи, которая нарисуется позже. Может я не прав, но мне кажется, что лучше реализовать вызов этого события только при обработке самой последней сделки по инструменту в таблице всех сделок?https://stocksharp.ru/topic/1316/ProcessDataError при регистрации заявки и событие о новых сделок2011-01-14T15:03:15Z2011-01-14T15:03:15ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ru1) Сегодня пришло событие ProcessDataError, в котором была следующая ошибка:<br /><a href='http://i.pixs.ru/storage/5/3/4/2011011417_9976669_1519534.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i.pixs.ru/storage/5/3/4/2011011417_9976669_1519534.png" style='max-width: 600px;' alt=""/></a><br /><br />Событие пришло после регистрации заявки из стратегии.<br />Для инструмента, используемого в стратегии, были зарегистрированы все необходимые события:<br /><div class="code"><strong>Код</strong><div class="innercode"> _multiTrader.RegisterTrades(security);<br /> _multiTrader.RegisterQuotes(security);<br /> _multiTrader.RegisterSecurity(security);</div></div><br /><br />Для остальных инструментов - нет.<br /><br />С чем связана данная ошибка? Заявки на сервере зарегистрировались.<br /><br /><br />2) Также почему-то не для всех моих сделок приходит событие NewMyTrades в стратегии.<br />Подписываюсь на событие в конструкторе.<br />Вот скриншот сделок в смарте: <a href='http://i.pixs.ru/storage/6/8/0/123png_2788132_1519680.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i.pixs.ru/storage/6/8/0/123png_2788132_1519680.png" style='max-width: 600px;' alt=""/></a><br />А вот что печатается в обработчике NewMyTrades:<br /><a href='http://i.pixs.ru/storage/6/9/4/orderpng_8182314_1519694.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://i.pixs.ru/storage/6/9/4/orderpng_8182314_1519694.png" style='max-width: 600px;' alt=""/></a><br />и всё. Даже спустя 4 минуты ничего не пришло.<br /><br />Печать сделана так:<br /><div class="code"><strong>Код</strong><div class="innercode"> private void MyTradeStrategyNewMyTrades(IEnumerable<MyTrade> trades)<br /> {<br /> foreach (var trade in trades)<br /> {<br /> AddLog(StrategyErrorStates.None, "Прошла сделка по цене {0}, объём {1}, направление {2}.", <br /> trade.Trade.Price, trade.Trade.Volume, trade.Order.Direction);<br /> }<br /> }</div></div><br /><br />Это стратегия, что и в первом вопросе. Т.е. подписан на теже самые события.<br /><br />С чем это связано и как получать все мои сделки?https://stocksharp.ru/topic/1315/STATISTICA + S#. возможно?2011-01-13T10:55:26Z2011-01-13T10:55:26Ztarasphttps://stocksharp.ru/users/28282/info@stocksharp.ruесть ли возможность построить робота на связке с каким-нибудь пакетом статистического анализа?<br />например STATISTICA, SPSS, Statgraphicshttps://stocksharp.ru/topic/1314/Автоматическое открытие окна со стаканом2011-01-13T05:13:19Z2011-01-13T05:13:19ZDimarikhttps://stocksharp.ru/users/28403/info@stocksharp.ruДоброго времени!<br /><br />Прочитал что, QuikTrader.RegisterQuotes начиная с версии 2.5 умеет автоматически открывать окно со стаканом в Квике.<br /><br />Если я правильно понял, то должно посходить следующее:<br /><br />1. Из таблицы Security выбираешь инструмен<br /> _security = Securities.First(p => p.Code == "Код Лукойла"); // Забыл код ;)<br />2. Делаешь вызов <br />try<br />{<br /> _trader.RegisterQuotes(_security);<br />}<br />catch (ArgumentException)<br />{<br /> // Надо что то делать <br />}<br /><br />И вот тут срабатывает ArgumentException. Окно со стаканом в квике не открывается.<br />В _security все нормально. Не null;<br /><br />Может я что то не так делаю? Как автоматически открыть окно со стаканом?https://stocksharp.ru/topic/1313/Cкальперский робо-привод - Glass (бета версия)2011-01-09T16:46:28Z2011-01-09T16:46:28Zdenishttps://stocksharp.ru/users/59/info@stocksharp.ruПривет всем форумчанам-скальперам.<br /><br />Хочу поделиться своей собственной разработкой <a href="http://stocksharp.com/glass/" title="http://stocksharp.com/glass/">Glass</a>. Понимаю, что сейчас пойдут ахи и вздохи, ну зачем еще один привод, но перед этим небольшая история о приводе и почему он не такой как другие.<br /><br />Я сам скальпирую примерно 1.5 года. За это время перепробовал почти все известные приводы. В принципе, все они хорошо, но есть один недостаток - негибкие и нет <b>полноценного авто-трейдинга</b>. Сейчас скальпить с роботами затея бесперспективная (хотя бы посчитать сколько роботов было в TOP 20 ЛЧИ). Уходить полностью в роботы не планирую, многое еще зависит от моих глаз и понимания рынка. Поэтому я начал создавать свой привод, где можно совместить ручной трейдинг и скорость роботов. Сначала появился сам привод:<br /><br /><a href='http://http://stocksharp.com/glass/images/quotes.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://http://stocksharp.com/glass/images/quotes.png" style='max-width: 600px;' alt=""/></a><br /><br />Затем я добавил возможность создания стратегий и запуск их в стакане:<br /><br /><a href='http://http://stocksharp.com/glass/images/strategies.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://http://stocksharp.com/glass/images/strategies.png" style='max-width: 600px;' alt=""/></a><br /><br />Все, что видно на экране (расцветка, шрифт, форматирование), горячие клавиши и реакция на мышку - это все программируется во встроенном редакторе на C# (заморочки с программированием есть, но я старался их максимально спрятать, так что получилось очень просто). У всех свой уникальный стиль скальпинга, и нельзя его подстраивать под какую ни было программу. Если что-то не понравилось (нужно больше информации, или, наоборот, убрать лишнее), просто меняется код и стакан начинает работать по другому.<br /><br />Есть еще много всяких плюшек как: одновременная работы с Quik и SmartCOM (привод получился кросс-платформенный), журнала сделок и заявок, экспорта в Excel и т.д..<br /><br />Программа одновременно платная и бесплатная. Все, что относиться к приводу - бесплатно. Но можно использовать только одну стратегию, которую я придумал для себя. Если необходимо использовать свои наработки, то это уже за лицензию. Цену не ломлю, так как сам не из Москвы и понимаю тех, кто торгует их регионов. Но и чтобы штаны не спадали ;-). 200р в месяц, или купить сразу анлим.<br /><br />Есть триал версия на полный режим в один месяц. Пока решил сделать бета тестирование. Всем, кто сильно "натестирует", вообще подарю пожизненную лицензию. Я не жадный. А еще хотел бы поработать вместе с теми, кто тоже интересуется автоматизированным скальпингом. Если есть идеи и желание запрограммировать + поделиться со всеми, пишите ответом или в личку. Можно совместно сделать самую продвинутую платформу для скальпинга ;-)<br /><br /><a href="http://stocksharp.com/glass/" title="http://stocksharp.com/glass/">Glass</a> написан с использованием <a href="http://stocksharp.com" title="http://stocksharp.com">S#</a>. Так что, если кто-то захочет использовать привод как тестер для стратегий, чтобы потом их полностью перевести в автономный робот, то теоретически это можно сделать за несколько часов.https://stocksharp.ru/topic/1312/Как подхватить в стратегии текущий размер позиции2011-01-06T23:01:57Z2011-01-06T23:01:57Zaervhttps://stocksharp.ru/users/28151/info@stocksharp.ruПосле успешного старта стратегии обнаруживаю разницу<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><br />var pos = _trader.Positions.First(p => p.Security == _security);<br />int tp = pos != null ? pos.CurrentValue : 0; // = 1<br />int sp = _strategy.PositionManager.Position; // = 0<br />Assert.AreEqual( tp, sp ); // Не равны<br /></div></div><br /><br />Как сделать, чтобы стратегия "подхватила" текущую позицию по бумаге?<br />Возможны (нужны) два варианта:<br /><div class="code"><strong>Код</strong><div class="innercode"><br />// Сегодня были сделки<br />_trader.MyTrades.Count(t=> t.Trade.Security == _security) > 0 <br />// Сделки были когда-то давно<br />_trader.MyTrades.Count(t=> t.Trade.Security == _security) == 0<br /></div></div><br /><br />Научите меня, пожалуйста, как поступить или поправьте, если ошибаюсь.<br />А может просто, в стратегии использовать не _strategy.PositionManager.Position, а _strategy.Trader.Positions<br />?<br />https://stocksharp.ru/topic/1311/Получение Unit из строки2011-01-06T19:12:04Z2011-01-06T19:12:04ZAlexanderhttps://stocksharp.ru/users/2826/info@stocksharp.ruНачал переводить в своей архитектуре свой собственный тип на тип данных Unit.<br />Используются либо проценты, либо - целые числа.<br /><br />Всё отлично работает за исключением одного - при попытке получить число из строки "2000" на выходе имею Unit 200 (с абсолютным типом, как я и ожидаю).<br />Преобразование разбил и сейчас делаю следующим образом:<br /><div class="code"><strong>Код</strong><div class="innercode"> var str = Settings.Default.StrVolume[i];<br /> var unit = str.ToUnit(null);</div></div><br /><br />Из дебагера:<br /><div class="code"><strong>Код</strong><div class="innercode"><br /> str "2000" string<br /> unit {200} Ecng.Trading.BusinessEntities.Unit</div></div><br /><br />https://stocksharp.ru/topic/1310/История свечек из квика2011-01-06T09:33:36Z2011-01-06T09:33:36ZDimarikhttps://stocksharp.ru/users/28403/info@stocksharp.ruЗдравствуйте все!<br /><br />Подскажите, как загрузить историю из квика по инструменту?<br /><br />Удачи!<br />https://stocksharp.ru/topic/1309/Обновил форум2011-01-04T23:07:59Z2011-01-04T23:07:59ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruС Yaf 1.9.4 до 1.9.5. Пишут, что серьезно переработали feed функциональность. Сходу разницу не увидел. Список изменений <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACTNCgph51eXwr5_PcMfNDIR3KWoGdhMvFdjnFuqqLBwGj_fE6an9YfLYtUHxGWRep0lzk0bVvYsuqqT3h7lxhR" title="http://wiki.yetanotherforum.net/YAF-1-9-5-Changes.ashx
">http://wiki.yetanotherfo.../YAF-1-9-5-Changes.ashx
</a><br /><br />И да, найдете жука - отпишитесь.https://stocksharp.ru/topic/1308/Рацпредложение по таблице Инструменты2011-01-03T20:09:03Z2011-01-03T20:09:03ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruВначале приведу картинку из доки:<br /><br /><a href='http://http://stocksharp.com/doc/help/Art/security_dde.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://http://stocksharp.com/doc/help/Art/security_dde.png" style='max-width: 600px;' alt=""/></a><br /><br />Предлагаю удалить следующие колонки:<br /><br />1. Полное название.<br />2. Спрос (цена).<br />3. Спрос (объем).<br />4. Предложение (цена).<br />5. Предложение (объем).<br />6. Время послед. сделки.<br />7. Цена послед. сделки.<br />8. Объем послед. сделки.<br />9. Цена открытия.<br />10. Макс цена сделки.<br />11. Мин цена сделки.<br />12. Закрытие.<br /><br />Тоесть, превратить в это <a href='https://stocksharp.ru/file/101492/stoporderstest_zip/' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://stocksharp.ru/file/101492/stoporderstest_zip/?size=500x500" alt=""/></a><br /><br />Причина - сделать настройки проще (проблема с временем послед сделки самая острая). Скажем, сейчас таблица с Инструментами самая тяжелая. Я не беру в расчет стоп-заявки, так как это все же больше экзотика, чем реально полезная вещь. Разберемся по пунктам.<br /><br />1. Оно кому-нибудь нужно?<br />2-5. Security.BestBid + BestAsk - сейчас есть медленное копия MarketDepth. Не могу найти причину, когда нужна такая информация (ей по сути верить нельзя).<br />6-8. Security.LastTrade - тоже самое, что и пред пункт.<br />9-12 - оно кому-нибудь нужно?<br /><br />Как вариант перехода - сделать опцию в QuikTrader. Если она включена - используется укороченный вариант таблицы с инструментами. Для совместимости, BestBid BestAsk LastTrade будут заполняться, но уже реальными данными (из стакана и тиковых сделок).<br /><br />Ну как?https://stocksharp.ru/topic/1307/TRANS2QUIK.dll x642011-01-02T14:02:20Z2011-01-02T14:02:20ZMaximhttps://stocksharp.ru/users/6182/info@stocksharp.ruДобрый день.<br /><br />Помогите с советом, пожалуйста.<br /><br />Есть ли возможность работы с QuikTrader из 64 битной версии программы?<br /><br />Сейчас при необходимости обработки большой порции информации компилирую в 64 битную<br />версию, а при необходимости работы с Квиком в 32 битную версию. Немножко неудобно.<br /><br />На сколько я знаю, ответ на мой вопрос отрицательный, но возможно я чего то не знаю.https://stocksharp.ru/topic/1306/Котировки Джуниор Квика на новогодние праздники2010-12-31T15:37:11Z2010-12-31T15:37:11Zserggserghttps://stocksharp.ru/users/28101/info@stocksharp.ruПривет<br /><br />мой брокер сказал, что до 10.01 демо-котировок не будет<br />а хотелось бы поработать.<br /><br />Кто как такую задачку решает?<br />https://stocksharp.ru/topic/1305/MainWindow.Instance2010-12-31T10:34:11Z2010-12-31T10:34:11Zserggserghttps://stocksharp.ru/users/28101/info@stocksharp.ruПрошу прощения за детский вопрос, но ... задам его<br /><br />В Сампле есть код<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote"> public MainWindow()<br /> {<br /> InitializeComponent();<br /> MainWindow.Instance = this;<br />... }</div></div><br />Попытался создать свой пример во многом скопировав его из Сампле,<br />все замечательно кроме одной малости<br />в той же функции выдается ошибка<br /><div class="quote"><span class="quotetitle">Цитата:</span><div class="innerquote">Error 1 '_myTest.MainWindow' does not contain a definition for 'Instance'</div></div><br /><br />в моем примере у MainWindow другой набор свойств и методов чем в Сампле.<br />Помогите пжл разобраться - как сделать чтобы и моем примере появился MainWindow с такими же свойствами ?<br />https://stocksharp.ru/topic/1304/Нет данных в стакане в Sample2010-12-30T18:27:02Z2010-12-30T18:27:02Zserggserghttps://stocksharp.ru/users/28101/info@stocksharp.ruПривет!<br /><br />Запущен реальный Квик 5.18.0.239 от Уралсиба<br />логинимся - котир пошел<br />грузим info_sample_dde_extended.wnd<br />переименовываем таблицу LKOH-QJSIM в LKOH-EQBR (иначе выдает ошибку)<br />скачан StockSharp_2.6.2 полностью<br /><br />стартуем Sample.exe<br />Жмем кнопки:<br />- Подключить<br />- Экспорт ДДЕ<br />- Инструменты<br />выбираем LKOH, <br />жмем Стакан - получаем стакан, но пустой<br /><br />убиваем Sample<br /><br />снова грузим грузим info_sample_dde_extended.wnd<br />!!! получаем стакан LKOH-QJSIM в Квике !!!<br />добавляем в табл Инструменты<br />RTS-3.11 и -6.11<br />Снова стартуем Sample.exe, Жмем кнопки: - Подключить- Экспорт ДДЕ- Инструменты<br />выбираем в сампле_инструмент RTS-3.11 жмем Стакан - получаем:<br />- пустой стакан сампла "R1H1 котировки" и<br />- стакан в Квике с назв. "RIH1-SPBFUT" [САМ] СОЗДАЕТСЯ и с данными<br />далее<br /><br />выбираем в сампле_инструмент LKOH, жмем Стакан - получаем:<br />- пустой стакан от сампла с назв. " LKOH котировки", но пустой<br />- в Квике как ни в чем не бывало продолжает висеть стакан LKOH-QJSIM, тоже естественно пустой<br />!!! при этом ошибки уже не возникает !!!<br /><br />Внимание, вопрос :)) даже два :<br />- что нужно сделать, чтобы стакан в примере начал отображаться?<br />- в чем причина разной реакции на стакан LKOH в квике ?https://stocksharp.ru/topic/1303/Несовпадение статуса заявок в квике и таблице Orders2010-12-30T15:54:17Z2010-12-30T15:54:17ZLaferthttps://stocksharp.ru/users/26871/info@stocksharp.ruЗаявку видно в стакане как активную, хотя в таблице Orders у неё State Done , Status NotDone https://stocksharp.ru/topic/1302/Время работы S#2010-12-30T08:12:26Z2010-12-30T08:12:26Zdarthttps://stocksharp.ru/users/28358/info@stocksharp.ruДобрый день, всех с наступающим НГ.<br />У меня вопрос к Михаилу: S# останавливает стратегии в 23:50.<br />Можно как-то продлить их работу на хотя бы на 1-5 минут? Просто для того чтобы успеть получить последнюю сформированную свечку.<br />Я их записываю в файл. Кроме того, на мой взгляд, это наиболее простой путь для получения истории без всяких сложностей ввиде сторонних БД и купайлов.<br />https://stocksharp.ru/topic/1301/Баги с MarketTime2010-12-29T19:36:49Z2010-12-29T19:36:49ZAlterhttps://stocksharp.ru/users/5036/info@stocksharp.ruКвик 5.17, демо от финама и цериха, S# 2.6.2, виндус 7.<br /><br />1. Периодически при запуске экспорта до начала дневной сессии вылетает следующее исключение:<br /><div class="code"><strong>Код</strong><div class="innercode">System.ArgumentOutOfRangeException: Length cannot be less than zero.<br />Parameter name: length<br /> at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)<br /> at Ecng.Trading.Quik.QuikTerminal.get_ServerTime()<br /> at Ecng.Trading.Quik.QuikTrader.get_MarketTime()</div></div><br />Запуск экспорта при этом останавливается. Я так понимаю, исключение из-за того, что в квике до начала сессии в строке состояния не отображается время сервера. Однажды после "Length cannot be less than zero" приложение вылетело с исключением "Invalid window handle" со стеком <br /><div class="code"><strong>Код</strong><div class="innercode"> at ManagedWinapi.ApiHelper.FailIfZero(Int32 returnValue)<br /> at ManagedWinapi.Windows.SystemWindow.get_ClassName()<br /> at Ecng.Trading.Quik.QuikTerminal.#=qcXb0wX1GPQdWGUrbevouvAK8mGq_ZX7KePQhng707pY=(SystemWindow #=qG0Xlt4ny5EAScYg7lccmqQ==)<br /> at System.Linq.Enumerable.<>c__DisplayClassf`1.<CombinePredicates>b__e(TSource x)<br /> at System.Linq.Enumerable.<>c__DisplayClassf`1.<CombinePredicates>b__e(TSource x)<br /> at System.Linq.Enumerable.WhereArrayIterator`1.MoveNext()<br /> at System.Linq.Buffer`1..ctor(IEnumerable`1 source)<br /> at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)<br /> at Ecng.Trading.Quik.QuikTerminal.#=qamfRCc20wzNF9qUIUdCLjw==()<br /> at Ecng.Trading.Quik.QuikTerminal.#=qql8kmexb9weYKGtc_Ek1tK_1CSd3q5TCKaR0ygbS2tg=()<br /> at Ecng.Trading.Quik.QuikTerminal.#=q_lLubITNoaw1eEj2RyjWrL6fPHNnQvwlZk8iZRaC5_U=.#=qPxKjanm0K1_jwKHEEU6x$Lgud7LdKO06j2l5DeimLBs=()<br /> at Ecng.Trading.Quik.QuikTerminal.#=qoXV4QEM_G1YonOjwwNKmQw==(Func`1 #=qD9Z_f5aw8cHk3v4kR8Tc2Q==, String #=qlAVSNw2aXxBrCQuSzMRn7Q==, Int32 #=qTZICHcGD_nZxYj0durmu1w==)<br /> at Ecng.Trading.Quik.QuikTerminal.#=qs0x1wp4BQfVFbNqH4twdig==(Func`1 #=qn8XD$TEMuAA2cdPOT4AwnA==, String #=qm53EkQ$FmOHt8W3Ilw_ixA==)<br /> at Ecng.Trading.Quik.QuikTerminal.#=q1nY_TDv5z4$zgSjRjMbMbQ==(#=q$aqcBec_FkKr5WeVX3nTzxDxX_Hd0f61IkNPxLTqPYE= #=qNirypqSKGZrg3AUbX_rooA==)<br /> at Ecng.Trading.Quik.QuikTerminal.#=qPnw1sKXTdcVcr_x$fqgnYg==(#=q$aqcBec_FkKr5WeVX3nTzxDxX_Hd0f61IkNPxLTqPYE= #=qyLTc$cDFRn1maT$ee$2hdA==)<br /> at Ecng.Trading.Quik.QuikTerminal.StartDde(String caption)<br /> at Ecng.Trading.Quik.QuikTerminal.#=q0uBotj_32cN2RsRalTUJ0g==(IEnumerable`1 #=qI5INwD8rV7E8FrjZfrBpag==)<br /> at Ecng.Trading.Quik.QuikTerminal.#=q$mY6xOgWiR6d5FoJEIxsuDutXikuujvQPPOYZQ$pyuo=(SynchronizedMultiDictionary`2 #=qsvevh4wpjDS8xolIi$hNDw==)<br /> at Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action`1 action)<br /> at Ecng.Trading.Quik.QuikTerminal.ReStartDde()<br /> at Ecng.Trading.Quik.QuikTrader.ReStartExport()<br /> at #=qCM88e9F2z6ySIFif3PFU60Wtx52dpExQh_MYocmJjXH851AppX8z40RLoPgPXV07.#=q58dzQUueKRlLgxEyABuSG3i5qQAHm54ZBVKojMghuV4=.#=q3ZZ2iYrOGZh_1bYY3etOSOOxiS3RPvffjOq8ETnvRY8=()<br /> at Ecng.Common.ThreadHelper.<>c__DisplayClass1.<CreateTimer>b__0(Object )<br /> at System.Threading._TimerCallback.TimerCallback_Context(Object state)<br /> at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)<br /> at System.Threading._TimerCallback.PerformTimerCallback(Object state)</div></div><br /><br />2. Ночью, в промежутке между сессиями, время сервера в квике не меняется, застывая на времени окончания вечерней сессии. Поэтому каждые ExportTimeOutInterval всю ночь вызывается перезапуск экспорта. Несмертельно конечно, но некрасиво.https://stocksharp.ru/topic/1300/Список задач2010-12-29T17:20:14Z2010-12-29T17:20:14ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruИ так, предлагаю подытожить то, что нужно сделать и в каком порядке.<br /><br />Задачи сгруппировал по группам (копировал из соседней ветки <a href="http://stocksharp.com/forum/1275/&p=2)" title="http://stocksharp.com/forum/1275/&p=2)">http://stocksharp.com/forum/1275/&p=2)</a>. Первая группа - самая приоритетная. Без нее делать задачи из следующей бессмысленно. Сами задачи внутри этой группы так же выстроены по очередности.<br /><br />Базовая группа:<br /><ol><br /><li>Описать основные метаданные, как это сделано для Квика (<a href="http://stocksharp.com/doc/help/html/AllMembers_T_Ecng_Trading_Quik_DdeSecurityColumns.htm" title="http://stocksharp.com/doc/help/html/AllMembers_T_Ecng_Trading_Quik_DdeSecurityColumns.htm">DdeSecurityColumns</a>, <a href="http://stocksharp.com/doc/help/html/AllMembers_T_Ecng_Trading_Quik_DdeTradeColumns.htm" title="http://stocksharp.com/doc/help/html/AllMembers_T_Ecng_Trading_Quik_DdeTradeColumns.htm">DdeTradeColumns</a> и т.д.). Я это уже показал на примере класса PlazaFutureColumns, но там колонки не реальные. Предлагаю прямо разобрать по названию таблиц потоков, кто за какие будет отвечать (описывать в коде). Таблицы только основные: инструменты, заявки, сделки и т.д.<br /><li>Подписываться на <b>произвольные</b> потоки + отписываться.<br /><li>Получать стаканы. Производная от предыдущей задача. Выделил ее отдельно.<br /><li>Заявки (регистрация, снятие и перемещение). Я уже сделал через класс Message заполнение полей для отправки транзакций. Это дело надо доделать.<br /><li>Парсинг ответа от транзакций (<b>внимание! всех транзакций, а не только, что в предыдущем пункте</b>). Я не знаю, в каком виде они приходят, но могу сказать, какой результат должен быть. Это должно быть PlazaException с кодом ошибки (чтобы не мучится сравнение строчек в коде). И код не ввиде числа (что не так уж лучше строчки), а нормального перечисления (enum).<br /></ol><br /><br />Первую задачу предлагаю сделать сообща. Остальные - разбираем по тем признакам, кто какие таблицы описывал (например, кто описал стакан, тот занимается задачей 3, кто инструменты - задачей 2, кто заявки - задачей 4).<br /><br />Второстепенная группа:<br /><ol><br /><li>Дописать все остальные метаданные (позиции, счета, волатильность, маржа, клиринг, доп информация о деривативах, индексы).<br /><li>Фильтрация потоков. Так как Плаза не дает фильтр (<a href="http://stocksharp.com/posts/m/5258/" title="http://stocksharp.com/posts/m/5258/">камрад skuvv написал об этом</a>), но в клиентском коде прописывать фильтры дело не благодарное, предлагаю это симулировать через RegisterXXX + UnRegisterXXX.<br /><li>Возможность задавать глубину стакана (как я понял, это влияет на то, к какому потоку необходимо цепляться).<br /><li>Поддержка агрегированного стакана и обычного. Для этого можно использовать GroupedQuote (внутри себя он будет содержать не агрегированные котировки).<br /></ol><br /><br />Третьестепенная группа:<br /><ol><br /><li>С помощью метаданных научиться строить конфиги ini. Как вариант, через PlazaTable (куда собственно и будут добавляться колонки из пункта 1 пред группы). Сейчас ini файлы программно редактировать нельзя. И если роботу нужны спец колонки нужно менять формат ini схем. Я предлагаю до загрузки этих схем давать возможность менять из программно (парсить и менять ini файлы на лету). + как фича автоматически сканировать директорию при старте и создавать с правильным набором колонок сами PlazaTable. Возможно, здесь поможет TableSet.<br /><li><a href="http://stocksharp.com/posts/m/5192/" title="http://stocksharp.com/posts/m/5192/">Время биржи</a>.<br /><li>Все остальные транзакции (FutChangeClientMoney, OptChangeExpiration и т.д.).<br /><li>Составные инструменты.<br /><li>На форуме доступна x64 версия. Нужна прозрачная поддержка (без перекомпиляции) x86 и x64.<br /><li>Обертка над роутером (чтобы так же, не ручками править конфиги, а программно).<br /><li>Документация (как xml, так и обычная). Если нужно сделать как у S#, то необходимо использовать Sandcastle.<br /></ol><br /><br /><b>Особенности в работе</b>.<br /><br />Старайтесь писать так, как это принято в .NET и в частности C# коде.<br />Публичные методы классы и т.д. описывайте xml комментариями (лучше не сочинять, а копировать из документации Плазы, чтобы быть не с планеты Юпитер, а ближе к тем, кто будет это использовать и вторым глазом подглядывать в документацию).<br />Предлагаю использовать R# как средство для контроля качества кода.<br />Пишите юнит тесты (заведите отдельный проект в sln).https://stocksharp.ru/topic/1299/DDE2010-12-29T04:11:50Z2010-12-29T04:11:50ZDimarikhttps://stocksharp.ru/users/28403/info@stocksharp.ruЗдравствуйте!<br /><br />Вопрос может быть не совсем по S# но все же.... <br />Может кто подскажет как бороться с низкой скоростью передачи данных по DDE. <br />В программе написанной с использованием S# при обновлении стакана задержка идет примерно в секунду.<br />Если напрямую экспортировать из Квика в Excel то задержка чуть меньше но все равно около секунды. Пробовал на разных компьютерах (думал компьютер слабый или настройки какие ....)<br />При передачи котировок (что в Excel, что в мою программу) пропадают целые массивы информации. Например: лучшая цена покупки (продажи) в квике обновилась уже несколько раз а на клиенте обновления идут мало того что с задержкой так еще и пропадают промежуточные результаты из стакана в квике.<br /><br />Моя программа обрабатывает событие обновления котировок в стакане<br /><br />Квик версия 5.18.0.239 под Windows 7<br />Настройки квика: <br />[excel]<br />timeout=5<br />start-timeout=20<br /><br />Как с этим бороться?