Форум. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=forum&page=210Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T06:41:16Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/1872/Не удалось получить фабрику класса COM компонента2011-09-06T10:00:26Z2011-09-06T10:00:26ZiRoothttps://stocksharp.ru/users/565/info@stocksharp.ruДоброго времени, давно здесь не появлялся, тем времени s# неплохо развился, теперь готов к его постижению, вместе с с#<br />Пытаюсь подключиться к SmartTrade, как указано в примерах и хелпах, при компиляции получаю :<br />Не удалось получить фабрику класса COM для компонента с CLSID {DEA17435-B62C-4F13-BEC8-08EBD203B281} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).<br /><br />показывает на trader.Connect()<br />Надеюсь на вашу помощь, заранее спасибо :)https://stocksharp.ru/topic/1871/EmulationTrader.Suspend() - оно работает?2011-09-06T04:44:52Z2011-09-06T04:44:52ZHamperhttps://stocksharp.ru/users/277/info@stocksharp.ruМне необходимо написать тестирование так, чтобы исторические данные выдавались либо с определенной задержкой между тиками, либо при срабатывании сигнала на покупку/продажу тестирование приостанавливалось и потом возобнавлялось бы при нажатии кнопки. Фактически хочется сделать некий "мультик", чтобы показать как и где сработала стратегия и визуально оценить этот момент.<br /><br />Попытался вызвать метод EmulationTrader.Suspend() Срабатывает событие EmulationTrader.StateChanged, но при этом тики продолжают тикать. Т.е. фактически остановки эмуляции не происходит. Останавливается только после достижения конца виртуального дня.<br /><br />Подскажите, как все таки остановить эмуляцию и потом ее продолжить с места остановки?<br /><br />PS: Эксперименты проводил на том примере, который дан в дистрибутиве - SampleHistoryTesting<br />https://stocksharp.ru/topic/1870/OpenVolume, HighVolume, LowVolume, CloseVolume2011-09-05T18:15:28Z2011-09-05T18:15:28ZRomSunZhttps://stocksharp.ru/users/6384/info@stocksharp.ruПодскажите, что за значения получает OpenVolume, HighVolume, LowVolume, CloseVolume, TotalPrice из QUIK? (класс Candle)<br /><br />Роман.https://stocksharp.ru/topic/1869/RegisterQuotes открывает стакан другого инструмента.2011-09-05T10:12:30Z2011-09-05T10:12:30Zstalkrhttps://stocksharp.ru/users/28712/info@stocksharp.ruПроблема следующая - метод RegisterQuotes открывает стакан другого инструмента.<br />Версия библиотеки последняя - 3.2.10<br />Версия квика 5.23.0.119<br />Вызываю метод:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
trader.RegisterQuotes(s);
</pre>
</div></div><br />Проверял под дебаггером, в s передается правильный инструмент.<br />Далее происходит странное. В квике открывается стакан с правильным заголовком (код бумаги, код класса совпадают), но сами котировки от совершенно другого инструмента, соответственно, и в эвенте QuotesChanged приходят эти неправильные котировки.<br /><br />Пример - тикер "ДВМП ао". Слева открытый по нему стакан. Правильная цена 10.35.<br /><a href='http://s001.radikal.ru/i196/1109/df/bba1d3209133.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://s001.radikal.ru/i196/1109/df/bba1d3209133.jpg" style='max-width: 600px;' alt="quik" title="quik" /></a><br /><br />Кто-нибудь с подобным сталкивался?https://stocksharp.ru/topic/1868/Закачка с финама гидра 3.2.102011-09-02T15:48:06Z2011-09-02T15:48:06ZJackSparrowhttps://stocksharp.ru/users/27783/info@stocksharp.ruТолько начал активно вникать в проект.<br />Но вот столкнулся со следующим:<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABB_Z_qYpszM4ei1v-bS9zFYubGy5hhR7e9HEvc2XwL6A" title="http://slil.ru/31640541
">http://slil.ru/31640541
</a><br /><br />это картинка экспорта без газпрома<br /><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABB_Z_qYpszM4ei1v-bS9zFijZibTUAGaqHR4hOmKGCBA" title="http://slil.ru/31640546
">http://slil.ru/31640546
</a><br /><br />а вторая тоже самое но добавлен газпром, его добавление вызывает ошибку в границах индекса.<br />Где и почиму не разбирался т.к не все уяснил еще себе.<br /><br />ЗЫ может есть какой более удобный способ, картинки выкладывать?https://stocksharp.ru/topic/1867/Что порождает событие NewPortfolios?2011-09-02T13:40:30Z2011-09-02T13:40:30ZСергей Гавриловhttps://stocksharp.ru/users/28633/info@stocksharp.ruЧто нужно сделать, чтобы возникло событие NewPortfolios? Вызвать какой-то метод или оно просто возникает при коннекте с Квиком?https://stocksharp.ru/topic/1866/Правило PositionChanged не срабатывает2011-09-02T12:45:26Z2011-09-02T12:45:26Zfreelancerhttps://stocksharp.ru/users/28572/info@stocksharp.ruСтавлю стоп так (в <em>action</em>):<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.
When(this.PositionChanged()).
Do(action);</pre>
</div></div><br /><br />Но правило не выполняется. В чем может быть проблема ?https://stocksharp.ru/topic/1865/Проблема с котированием2011-09-02T08:54:08Z2011-09-02T08:54:08Zmdvhttps://stocksharp.ru/users/6039/info@stocksharp.ruЗдравствуйте! Проблема такая. Стратегия котирования запускается, пишет в лог, что запустилась и на этом зависает, не выставляя никакие заявки.<br />Что характерно, этот же самый код отлично работает под QUIK JUNIOR котирование выполняется и завершается. Под нормальным квиком обычные заявки работают правильно, то есть настройки базовой стратегии правильные. Экспорт стакана запускаю (иначе бы под джуниором не работало). Может кто сталкивался? Я чувствую, что тут какая-то совсем глупая ошибка, но не могу понять даже, с какого боку копать ее. Может есть возможность посмотреть более подробные логи стратегии?...https://stocksharp.ru/topic/1863/EmulationTrader не понимает тиков с одинаковым Time2011-09-01T07:02:43Z2011-09-01T07:02:43Zvalenockhttps://stocksharp.ru/users/167/info@stocksharp.ruЕсть локальная база тиков по фучу РТС в формате FileStorage. Создана перегонкой из текстовых файлов с финама, соответственно все Time атрибуты идут без миллисекунд.<br />В секунду могут проходить десятки разных сделок с разным объёмом и ценой. StorageAPI нормально к этому относится и умеет их выдавать последовательно - так, как они записаны в файл.<br />EmulationTrader.NewTrades их так же видит без проблем.<br />Но уже когда мы тестируем стратегию в EmulationTrader то Strategy.NewTrades уже видит ТОЛЬКО ОДНУ сделку в секунду, а именно из всех сделок в заданную секунду он видит ТОЛЬКО последнюю сделку.<br /><br />Проверялось так - выводим все сделки в EmulationTrader.NewTrades и сравниваем со сделками в Strategy.When(Security.SecurityNewTrades()).Do(Process);<br />Первый метод вываливает ВСЕ - второй только последнюю сделку за секунду.<br />Параметр EmulationTrader.MarketTimeChangedInterval особого влияния не оказал - чаще чем 1 секунда сделки не появлялись, Strategy.Process() не вызывался.<br /><br />Без какого-либо изменения кода проблему удалось решить перегонкой базы FileStorage - просто добавив миллисекунды всем сделкам по возрастанию - первая сделка в секунду 00мс, вторая 01мс и т.д.<br /><br />видимо, баг ?<br />пофиксить не могу - нет кодаhttps://stocksharp.ru/topic/1862/EmulationTrader не следит за временем2011-08-31T22:17:41Z2011-08-31T22:17:41Zvalenockhttps://stocksharp.ru/users/167/info@stocksharp.ruПри вызове<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_historyTrader.Start(new DateTime(2011, 06, 01), new DateTime(2011, 06, 02, 12, 00, 00));</pre>
</div></div><br />тестирование будет идти до конца дня, а не до 12:00:00.<br /><br />Также не понятно как протестировать только один день на истории - при вызове<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_historyTrader.Start(new DateTime(2011, 06, 01), new DateTime(2011, 06, 01));</pre>
</div></div><br />выскочит exception "начало и конец не могут совпадать". При вызове<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
_historyTrader.Start(new DateTime(2011, 06, 01), new DateTime(2011, 06, 02));</pre>
</div></div><br />тестирование идёт уже два дня.https://stocksharp.ru/topic/1861/FileStorage - отдаёт сделки только первый раз ?2011-08-31T16:14:08Z2011-08-31T16:14:08Zvalenockhttps://stocksharp.ru/users/167/info@stocksharp.ruБорюсь с проблемой, которую не получается пока никак локализовать.<br />Сделал класс HistoryTest, в котором один метод, который запускает тестирование на истории и выходит, когда оно заканчивается.<br />Первый раз, когда я создаю экземпляр класса и запускаю тестирование на исполнение - всё работает как надо.<br />Второй и последующие разы создаю НОВЫЙ экземпляр класса и не получаю от storageAPI ни новых сделок ни даже NewSecurities не срабатывает ни разу. totalStorageTrades так и остаётся 0.<br /><br />Это я что-то делаю не так или storageAPI не сбрасывает текущую позицию в файле или счётчик трейдов ?<br /><br />Класс использую так:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
for (var i = 1000; i < 30000; i+= 1000)
{
var storage = new TradingStorage(new FileStorage(PathHistoryStorage)) { BasePath = PathHistoryStorage };
var test = new HistoryTest()
{
PathHistoryStorage = PathHistoryStorage,
Security = _rts,
FileLog = fLog,
EmulationStartTime = new DateTime(2011, 06, 01),
EmulationStopTime = new DateTime(2011, 06, 02, 12, 00, 00),
storage = storage
};
test.RunHistoryTest2(i);
while (!test.IsFinished()) System.Threading.Thread.Sleep(10000);
Console.ReadLine();
}
</pre>
</div></div><br /><br />Сам класс:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
class HistoryTest
{
public string PathHistoryStorage;
private EmulationTrader _historyTrader;
public Security Security;
private StrategyTest _strategy;
private DateTime _lastTitleUpdateDate;
public DateTime EmulationStartTime = new DateTime(2011, 06, 01);
public DateTime EmulationStopTime = new DateTime(2011, 09, 02);
public StreamWriter FileLog;
public TradingStorage storage;
//---------------------------------------------------------------------------------------------------------------
//
//---------------------------------------------------------------------------------------------------------------
public void RunHistoryTest2(int period)
{
// тестовый портфель
var portfolio = new Portfolio { Name = "TeST" };
// инициализируем настройки (инструмент в истории обновляется раз в 100ms)
var timeFrame = TimeSpan.FromSeconds(1);
_historyTrader = new EmulationTrader(new[] { Security }, new[] { portfolio })
{
MarketTimeChangedInterval = timeFrame,
Storage = storage,
WorkingTime = Exchange.Rts.WorkingTime,
DaysInMemory = 1,
};
Console.WriteLine("==============================================================");
_strategy = new StrategyTest
{
Volume = 1,
Portfolio = portfolio,
Security = Security,
Trader = _historyTrader,
period = period,
};
_historyTrader.NewSecurities += newSecs => { foreach (var security in newSecs) Console.WriteLine("Актив: " + security.Id + " " + security.Name); };
var totalStorageTrades = 0;
_historyTrader.NewTrades += trades =>{ totalStorageTrades += trades.Count(); };
_historyTrader.StateChanged += () =>
{
if (_historyTrader.State == EmulationStates.Stopped)
{
Console.WriteLine("TotalStorageTrades = " + totalStorageTrades);
Console.WriteLine("FINISHED 1 run...");
_strategy.Stop();
_strategy.Dispose();
_historyTrader.StopExport();
_historyTrader.Disconnect();
_historyTrader.Dispose();
storage.GetTradeStorage(Security).AllDates.GetEnumerator().Reset();
storage = null;
}
// запускаем стратегию когда эмулятор запустился
else if (_historyTrader.State == EmulationStates.Started) _strategy.Start();
};
// запускаем экспорт, чтобы инициализировать переданными инструментами и портфелями
// необходимоые свойства HistoryEmulationTrader
_historyTrader.Connect();
_historyTrader.StartExport();
// Запуск начала тестирования:
_historyTrader.Start(EmulationStartTime, EmulationStopTime);
}
//---------------------------------------------------------------------------------------------------------------
//
//---------------------------------------------------------------------------------------------------------------
public bool IsFinished()
{
return _historyTrader == null || _historyTrader.State == EmulationStates.Stopped;
}
}</pre>
</div></div>https://stocksharp.ru/topic/1860/[BUG?] IsSyncRegister2011-08-31T10:34:00Z2011-08-31T10:34:00ZChurchhttps://stocksharp.ru/users/459/info@stocksharp.ruСвойство CandleManager.IsSyncRegister, судя по всему, не работает.<br /><br />Тестовый код:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
AddInfoLog("IsSyncRegister = {0}", _candleManager.IsSyncRegister);
AddInfoLog("Регистрация свечек...");
//_candleToken = _candleManager.RegisterCandles((new TimeFrameCandle()).GetType(), this.Security, TimeSpan.FromMinutes(1));
_candleToken = _candleManager.RegisterTimeFrameCandles(Security, _timeFrame);
AddInfoLog("Свечки зарегистрированы.");
AddInfoLog("candlesize will be "+(Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1));
var cc = _candleManager.GetCandles(_candleToken, Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1);
AddInfoLog("cc size = {0}",cc.Count());
Thread.Sleep(5000);
AddInfoLog("Попытка №2");
cc = _candleManager.GetCandles(_candleToken, Math.Max(Math.Max(_longPer, _shortPer), _atrPer) + 1);
AddInfoLog("cc size = {0}", cc.Count());</pre>
</div></div><br /><br />Результат:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
AC$ 31.08.2011 14:27:15.009 IsSyncRegister = True
AC$ 31.08.2011 14:27:15.010 Регистрация свечек...
AC$ 31.08.2011 14:27:15.049 Свечки зарегистрированы.
AC$ 31.08.2011 14:27:15.050 candlesize will be 28
AC$ 31.08.2011 14:27:15.053 cc size = 0
AC$ 31.08.2011 14:27:20.054 Попытка №2
AC$ 31.08.2011 14:27:20.058 cc size = 28</pre>
</div></div><br /><br />Могу попробовать самостоятельно пофиксить, если откроете мне тот участок кода.https://stocksharp.ru/topic/1859/WinForms или WPF?2011-08-31T07:24:03Z2011-08-31T07:24:03ZSergKuzhttps://stocksharp.ru/users/28330/info@stocksharp.ruДобрый день!<br />Подскажите, пожалуйста, возможно ли написание графических интерфейсов WinForms или нужно использовать только WPF?https://stocksharp.ru/topic/1858/Обновил Гидру до 3.2.10 - при запуске вылазит ошибка2011-08-30T17:59:09Z2011-08-30T17:59:09ZDThttps://stocksharp.ru/users/28052/info@stocksharp.ru<a href='http://narod.ru/disk/23472135001/%D0%93%D0%B8%D0%B4%D1%80%D0%B0%203.2.10.PNG.html' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://narod.ru/disk/23472135001/%D0%93%D0%B8%D0%B4%D1%80%D0%B0%203.2.10.PNG.html" style='max-width: 600px;' alt="скрин" title="скрин" /></a>https://stocksharp.ru/topic/1857/Проблемы с функцией Option.IV()2011-08-30T14:50:21Z2011-08-30T14:50:21Zkashttps://stocksharp.ru/users/28238/info@stocksharp.ruПериодически, без какой-либо закономерности программа вылетает и выдает исключение на этом методе <br />Function does not accept a floating point Not-a-Number value.<br />Число точно не NaN, оно нормальное, даже проверку ставил IsNaN выдает false, переходит к Option.IV()и ошибка выскакивает...<br />В чем косяк вообще понять не могу, нормальное число я в нее передаю, точно, проверял кучу раз. <br /><br />Да кстати пишу так Option.IV(premium). Premium типа decimal.https://stocksharp.ru/topic/1856/Тип ордера FillOrCancel2011-08-30T14:45:31Z2011-08-30T14:45:31ZChurchhttps://stocksharp.ru/users/459/info@stocksharp.ruИногда случается ошибка:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:plain">
AC$ 30.08.2011 18:00:09.579 [alpha] System.ArgumentException: Транзакции 'ACCOUNT=SPBFUT00czw; CLIENT_CODE=SPBFUT00czw; TRANS_ID=57550479; CLASSCODE=SPBFUT; SECCODE=RIU1; QUANTITY=1; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=165065; EXECUTION_CONDITION=FILL_OR_KILL;' не была зарегистрирована. Причина 'Ошибка создания заявки. [FORTS] "Неполное сведение FOK заявки.".'.
Parameter name: transactionTxt
at #=qWVb3hlEq_bsi0PlbyLoPNGtmi$sN1GAXJmEglIOuywk=.#=qe2XG1WRxcPRM7kYqWweGZ$USUGIpyehjN9FXfaVbRqk=(String #=qoaJFz4elMnSbwxESEkocqA==, OrderStatus& #=qF9fiowcCBpgiw2vJwkeiPQ==, UInt32& #=qVABNTzTaO$dkfjwyZVXGRQ==, Int64& #=qufGPkJZSaS$_1AhJXi0Q_Q==, String& #=qZYLywgaI4aboC1fy22p5YQ==)
at StockSharp.Quik.QuikTrader.#=qIiEPgk1OxvfO3bGPdOk80whIsPAOOUvmEP23HUwhR00=(Order #=qE1hxwYv7mjShNv3VqnQ$4Q==, TransactionBuilder #=qMayz96ds6ngzqy1uCpM0Mw==)
at StockSharp.Quik.QuikTrader.OnRegisterOrder(Order order)
at StockSharp.Algo.BaseTrader.RegisterOrder(Order order)
at StockSharp.Algo.Strategies.Strategy.RegisterOrder(Order order)
at Church.Strategies.Alpha.Alpha.GoShort()
at Church.Strategies.Alpha.Alpha.Process()
at StockSharp.Algo.Strategies.StrategyRule.#=qFRqbpWkXa_e5qv6Y_c3Cjqa84vmqnWUiNQozd3UzbCQ=.#=qE64_FjSgaXcFnXD55NNbNw==(Object #=qXmNYxa6wjOyOlL9yFxtNvA==)
at StockSharp.Algo.Strategies.Strategy.#=qiaS4JJP6dIvcV4PykmPE_w==(StrategyRule #=qE1G0wojhtVI3LgG2ikwMjQ==, Object #=qN7sJLpCukdtyplL46bCrEQ==)</pre>
</div></div><br /><br />Код заполнения ордера:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var order = CreateOrder(OrderDirections.Sell, this.Security.BestBid.Price - EntrySlip, this.Volume);
order.ExecutionCondition = OrderExecutionConditions.FillOrCancel;</pre>
</div></div><br /><br />Это бага? Что такое transactionTxt и нужно ли его передавать?https://stocksharp.ru/topic/1855/Exception при первом вызове Trader.RegisterQuotes(...)2011-08-30T07:30:27Z2011-08-30T07:30:27ZDenhttps://stocksharp.ru/users/6003/info@stocksharp.ruS# 3.2.10. Наблюдаю стабильно <b>Exception "окно с именем xxx@xxx не найдено"</b> при вызове <b>Trader.RegisterQuotes(...)</b> для инструмента, у которого еще не открывался стакан. <br />При этом, стакан автоматически открывается и имеет правильное название, напр. <b>SBRF-9.11@RTS</b> или <b>BR-9.11@RTS</b>. <br />При повторном запуске <b>Trader.RegisterQuotes(...)</b> все работает нормально. Видимо присутствует какой-то race condition.https://stocksharp.ru/topic/1854/Открытый интерес2011-08-29T16:24:02Z2011-08-29T16:24:02Zrafhttps://stocksharp.ru/users/28475/info@stocksharp.ruНе смог найти такой параметр Security, как Открытый интерес (OpenInt). Не подскажите, где искать?https://stocksharp.ru/topic/1853/Storage API.2011-08-29T15:04:20Z2011-08-29T15:04:20Zigsbrhttps://stocksharp.ru/users/27754/info@stocksharp.ruТест записи сделок в файловое хранилище (на базе примера SmpleStorage со своим генератором экземпляров класса Trade и хранением на диске вместо записи в память) привел к следующим наблюдениям:<br /><br />1.Конструктор "public FileStorage(string directory)" - не ясно, какая именно директория подразумевается. Какую бы я строку не задавал, пишет в текущую директорию (и читает с нее же). Может, я неправильно понимаю этот параметр? Выкрутился тем, что после создания экземпляра TradingStorage задаю нужное место хранения данных используя BasePath. Вполне возможно, что у параметра directory из конструктора FileStorage есть какой-то другой смысл, но разобраться в этом из документации я не смог.<br /><br />2. Повторной запись всего набора данных после добавления свежих записей ведет к удвоению бывшей последней записи. На примере. Если я за сегодня записал 10 экземпляров класса Trade со значением Id от 1 до 10, то при добавлении следующих 10 трейдов к исходному списку и повторному его сохранению, имею следующий результат: при чтении получу 21 запись (вместо ожидаемых 20), где все записи будут уникальные, кроме одного исключения - трейд за номером 10 (бывший последний) будет записан два раза с одним и тем же Id. Похоже на баг, т.к. мой здравый смысл подсказывает, что при повторной записи всего набора или все записи должны удваиваться, или ни одна из них. Замечу, что такое поведение наблюдается при AppendOnlyNew = true (интерфейс IMarketDataStorage<T>), если же установить AppendOnlyNew = false все записи будут просто дублироваться, как и ожидается по смыслу.<br /><br />3. Если для экземпляров каждой из записей класса Trade в списке не задавать значение Security, то сохранить список трейдов в TradeStorage невозможно, т.к. генерируется ошибка. Признаться, я посчитал, что если стоит атрибут [Ignore] в определении класса перед соответствующим полем, то можно не задавать лишнее - ведь все равно при вызове IMarketDataStorage<Trade> GetTradeStorage(Security security) мы задаем единое значение security для всего набора записываемых данных. Зачем лишние операции на каждую единицу хранения?! Но почему-то [Ignore] не работает. Или я в этом месте неправильно понимаю логику.https://stocksharp.ru/topic/1852/Кто поможет по Publisher?2011-08-29T12:25:21Z2011-08-29T12:25:21ZMikhail Sukhovhttps://stocksharp.ru/users/201/info@stocksharp.ruНа Codeplex сейчас лежит программа Publisher, которая помогает собирать архивы (те самые, что выкладываем на box). В ней написан метод <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAbncQVTu8T5yVB2LlB47S-5KHyW8ZN6xcH4iJyKFKwUQgjwasowjZHTe_leX0HSMFU_nR7NSU8GERX1bG3knJxNexywgzpeBr8GID-IWKRWw" title="http://stocksharp.codeplex.com/SourceControl/changeset/view/8831#94007">PublishHelper.StartCompile</a>, который компилирует примеры:<br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public static void StartCompile(string slnFile)
{
StartProcess(_devenvPath, "/build Debug {0}".Put(slnFile));
//
// ÷ñÒ577482106êÖ0õæ÷http://www.roelvanlisdonk.nl/?p=1802
÷ñÒ577482106êÖ1õæ÷
//
//const string logFilePath = "build.log";
//using (var process = Process.Start(_devenvPath, "/Rebuild Debug {0} /out {1}".Put(slnFile, logFilePath)))
//{
// using (var sr = new StreamReader(new FileStream(logFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
// {
// while (!process.HasExited)
// {
// while (!sr.EndOfStream)
// Console.WriteLine(sr.ReadLine());
// Thread.Sleep(1000);
// }
// }
//}
}</pre>
</div></div><br /><br />Закомментированная часть - это попытка (неудачная, не знаю почему не работает) перенаправить вывод студии в консоль. Вывод нужен для того, чтобы узнать, нормально ли сейчас собирается пример или он выдает какие-то ошибки. Как следствие этого иногда возникает ситуация когда примеры на box попадают в несобираемом состоянии.