Сообщество. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=community&page=242Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T10:36:37Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/1772/вопрос новичка2011-07-27T08:35:23Z2011-07-27T08:35:23ZMihailohttps://stocksharp.ru/users/16573/info@stocksharp.ruЗдравствуйте. Я временами начинаю писать робота по примерам, т.к. опыта программирования у меня нет. У меня возникла новая идея, но я не знаю как её реализовать.<br />Суть следующая: я получаю сделки по инструменту и совершаю математические действия с последней ценой (назовем её "ИзмЦена").<br />1) Как мне строить график в реальном времени по ИзмЦена? Нужно именно передавать в график ИзмЦену, а не считать её на месте от Security.<br />2) Как мне передавать эту цену в стратегию, а не считать её в стратегии от Security?.<br />Заранее спасибо.https://stocksharp.ru/topic/1771/Простейшее построение графиков (новичок)2011-07-26T10:36:00Z2011-07-26T10:36:00ZSgt.Riggshttps://stocksharp.ru/users/27912/info@stocksharp.ruЗдравствуйте!<br /><br />Стоит задача реализовать построение графиков "крестики-нолики" для QUIK. Поскольку знаю C#, решил воспользоваться вашей библиотекой. Никак не могу разобраться, как именно нужно настраивать QUIK, чтобы получить необходимые графики (использую пока пример из дистрибутива библиотеки). С QUIK'ом знаком очень мало, моя задача - только алгоритмы (изначально вообще планировалось писать плагин на QPILE, но насколько я понял, реализовать на нём свой способ визуализации данных - плохая идея). Прошу помощи :) Нужно, по сути, изобразить тот же график, что показывает QUIK по команде "Графики цены и объёма". Любой график, представленный в данный момент времени в QUIK'е, должен быть изображён в моей программе в виде крестиков-ноликов. Портфели и пр. не нужны... Подскажите, пожалуйста, как получить исключительно данные графиков при помощи вашей библиотеки? В качестве "образца" используется инструмент "RTS-9.11 [Фьючерсы FORTS]".<br /><br />Заранее спасибо.https://stocksharp.ru/topic/1770/Багтрекер для S#2011-07-26T04:07:02Z2011-07-26T04:07:02ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruА может ишью/баг-трекер завести для S#?<br />А то не легко трекать статус треда - решена проблема или нет.https://stocksharp.ru/topic/1769/Вопрос от новичка.2011-07-25T14:00:51Z2011-07-25T14:00:51ZVit1986https://stocksharp.ru/users/28144/info@stocksharp.ruДоброе время суток.<br />Не могу подключиться к QUIK (FinamJunior 5.17.0.139).<br /><br />Пишет (в любом примере из Samples): Не удалось подключиться к Quik. Возможно, в quik-е не включена обработка внешних транзакций….<br /><br />Использовать info.wnd не удалось, пишет что не достаточно памяти.<br />Настроил все как сказано в мануале (т.е. обработка внешних транзакций включил).<br /><br />OS: WinXP sp2<br /><br />https://stocksharp.ru/topic/1768/EmulationTrader: не приходит ответ на выставление заявки2011-07-25T07:41:32Z2011-07-25T07:41:32Zromanickhttps://stocksharp.ru/users/28047/info@stocksharp.ruПривет. Продолжаю мучать эмулятор.<br />Столкнулся с тем что <b>иногда</b> эмулятор никак не реагирует на выставление заявки.<br />Обработчики стоят следующие:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(newOrder.Registered())
.Do(() => {
log("заявка принята, id="+newOrder.TransactionId.ToString() + " vol="+newOrder.Volume);
});</pre>
</div></div><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(newOrder.Failed())
.Do(() => {
log("failed");
});</pre>
</div></div><br /><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(newOrder.NewTrades())
.Do(() => { log("ордер исполнен"); });</pre>
</div></div><br /><br />На всякий случай ещё подписывался на Strategy.NewOrder и Strategy.OrderFailed - там тоже реакции не видно.<br />Заявку отправляю с помощью Strategy.RegisterOrder.<br />Повторюсь, что этот баг плавающий - т.е. он то есть, то его нет.<br /><br />Upd: this - стратегия, унаследованная от Strategyhttps://stocksharp.ru/topic/1767/Двойное вызов OnProcess2011-07-24T16:58:14Z2011-07-24T16:58:14Zhobohttps://stocksharp.ru/users/27889/info@stocksharp.ruПри тестировании через EmulationTrader стратегии на основе TimeFrameStrategy OnProcess вызывается дважды.<br />Допустим, если timeframe - 10 секунд, то вызов будет в 11:00:00, еще раз в 11:00:00, потом в 11:00:10 и еще раз в 11:00:10,..<br />Версия - 3.2.5.https://stocksharp.ru/topic/1766/Проблема с Canceled()2011-07-23T11:28:57Z2011-07-23T11:28:57Zromanickhttps://stocksharp.ru/users/28047/info@stocksharp.ruВыставляю 2 заявки - buyOrder и sellOrder. Затем ставлю обработчик:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(buyOrder.Canceled())
.Do(() => {
log("buy canceled");
buyOrder = null;
});</pre>
</div></div><br /><br />и <br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
this.When(sellOrder.Canceled())
.Do(() => {
log("sell canceled");
sellOrder = null;
});</pre>
</div></div><br /><br />this - это стратегия.<br />Затем по определённому событию снимаю всё при помощи CancelActiveOrders()<br /><br />В логах вижу:<br />buy canceled<br />sell canceled<br />buy canceled<br />sell canceled<br /><br />Т.е. каждый обработчик вызывается 2 раза. Убираю один ордер - начинает вызываться один раз. Выходит что вызов обработчика Canceled происходит не для текущего ордера, а для всех снятых в цикле. Это баг или фича? И если фича, как мне понять для какой заявки произошло событие Canceled?<br /><br />Использую эмулятор, s# 3.2.5https://stocksharp.ru/topic/1765/Проблема при инициализации EmulationTrader2011-07-22T20:54:08Z2011-07-22T20:54:08Zromanickhttps://stocksharp.ru/users/28047/info@stocksharp.ruПриветствую!<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
var security = new Security
{
Id = "RIU9@RTS",
Code = "RIU9",
Name = "RTS-9.09",
MinStepSize = 5,
MinStepPrice = 2,
Decimals = 0,
Exchange = Exchange.Test,
};
var portfolio = new Portfolio { Name = "test account" };
var eTrader = new EmulationTrader(
new[] { security },
new[] { portfolio })
{
StartTime = new DateTime(2011, 1, 1),
StopTime = new DateTime(2011, 2, 1)
};
Debug.WriteLine(eTrader.Portfolios.Count());
Debug.WriteLine(eTrader.Securities.Count());</pre>
</div></div><br />Выводятся два нуля. Почему так?https://stocksharp.ru/topic/1764/Жесть с NewMyTrades!!!! (не вызвалось событие NewMyTrades)2011-07-22T18:10:29Z2011-07-22T18:10:29ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruЯ веду подсчет открытой позиции самостоятельно - ловлю NewMyTrades, <br />и если бумага моя (==this.Security) то увеличиваю/уменьшаю (в зависимости от направления ордера по которому пришел трейд) счетчик int OpenedPosition в стратегии.<br /><br />а сегодня столкнулся с серьезной проблемой<br /><br />была открытая лонг позиция в 2 бумаги. это подтверждает и мой счетчик и PositionManager.Position:<br />22.07.2011 13:55:39.415 PositionManager.Position: 2; OpenedPosition:2<br /><br />роботом был послан ордер на биржу на продажу 3х лотов:<br />22.07.2011 13:55:39.810 RegisterOrder: Ok! sec=LKU1 dir=SELL vol=3 price=18769,00<br /><br />пока ордер висел позиция не менялась<br />22.07.2011 13:55:49.408 PnLManager.PnL: 2; OpenedPosition:2;<br /><br />но потом вдруг - БЕЗ ВЫЗОВА NewMyTrade свойство PositionManager.Position изменилось!<br />22.07.2011 13:55:50.490 PnLManager.PnL: -1; OpenedPosition:2;<br />и в логах Квика видно что как раз в это время ордер был полностью исполнен!<br />[cursing]<br /><br />т.к. робот не знал о выполнении его ордера - трейды же не пришли, то продолжил торговать.<br />и через несколько секунд ситуация еще раз повторилось, а потом еще раз и до тех пор пока все средства со счета в ГО не ушли. <br />спасло только то что счет небольшой и цена далеко не ушла - вручную потом откупил совсем с небольшими потерями.[bored] <br /><br />как так получилось что NewMyTrade не был вызван???<br />и как можно перестраховаться от таких косяков в будущем???<br />как ЖЕЛЕЗНО узнать свою позицию???<br />[confused]<br /><br />PS> PositionManager.Position который показал правильную инфу тут постоянно неправильно показывает в других ситуацияхhttps://stocksharp.ru/topic/1763/Первый индикатор2011-07-22T12:08:03Z2011-07-22T12:08:03Zandreyats973https://stocksharp.ru/users/28004/info@stocksharp.ruДобрый день. Подскажите, пожалуйста!<br /><br />Есть огромное желание сделать индикатор Optimal Tracking Filter.<br /><br />Попробовал по аналогии с примерами и уже реализованными индикаторами. Но в них идет наследование основного класса от классов LengthIndicator<decimal> <br />или<br />SingleValueIndicator<br /><br />не могу найти их описание.<br /><br />Подскажите, где можно почитать.<br />https://stocksharp.ru/topic/1762/Тестирование, событие окончания формирования свечек2011-07-22T11:37:08Z2011-07-22T11:37:08ZKhripunovAVhttps://stocksharp.ru/users/136/info@stocksharp.ruЗдравствуйте, подскажите, пожалуйста,<br />создаю:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
...
Trader = new EmulationTrader(
new[] { security },
new[] { portfolio })
{
StartTime = _rangeTime.StartTime,
StopTime = _rangeTime.StopTime,
MarketTimeChangedInterval = timeFrame,
Storage = storage,
WorkingTime = Exchange.Rts.WorkingTime,
BufferSize = 100000000,
};
var candleManager = new CandleManager(new SyncTraderCandleSource(Trader));
candleManager.RegisterTimeFrameCandles(security, timeFrame);
...</pre>
</div></div><br />передаю в стратегию, в стратегии подписываюсь на событие окончания формирования свечек<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
...
_candleManager.CandlesFinished += OnCandlesFinished;</pre>
</div></div><br /><br />при тестировании получаю:<br />серебро, золото в 1 секунду приходят десятки свечек (все замечатьльно) <br />0.01460785 [7744] SA Стратегия запущена. <br />1.01266527 [7744] SA Time 15.12.2009 10:30:00<br />1.32536006 [7744] SA Time 15.12.2009 11:00:00<br />1.40875268 [7744] SA Time 15.12.2009 11:30:00<br />1.50156999 [7744] SA Time 15.12.2009 12:00:00<br />1.68105543 [7744] SA Time 15.12.2009 12:30:00<br />1.74173212 [7744] SA Time 15.12.2009 13:30:00<br />1.92636836 [7744] SA Time 15.12.2009 15:30:00<br />1.99092543 [7744] SA Time 15.12.2009 16:00:00<br />2.07673168 [7744] SA Time 15.12.2009 16:30:00<br />2.20514417 [7744] SA Time 15.12.2009 17:00:00<br />2.31050301 [7744] SA Time 15.12.2009 17:30:00<br />2.44161773 [7744] SA Time 15.12.2009 18:00:00<br /><br />при тестировании индекса РТС в 20 (+/-) секунд приходит одна свечка <br />0.01460947 [3400] SA Стратегия запущена. <br />19.86399269 [3400] SA 40, Time 14.12.2009 19:00:00<br />41.78348541 [3400] SA 40, Time 14.12.2009 19:30:00<br />58.73326874 [3400] SA 40, Time 14.12.2009 20:00:00<br />73.32785034 [3400] SA 40, Time 14.12.2009 20:30:00<br />93.57959747 [3400] SA 40, Time 14.12.2009 21:00:00 <br />121.92475891 [3400] SA 40, Time 14.12.2009 21:30:00 <br />156.52507019 [3400] SA 40, Time 14.12.2009 22:00:00 <br />174.81349182 [3400] SA 40, Time 14.12.2009 22:30:00<br />205.17909241 [3400] SA 40, Time 14.12.2009 23:00:00 <br />итог: 9 тридцати минутных свеч, программа 1.5Мб исключение System.OutOfMemoryException<br /><br />при тестировании контрактов LKOH после построения 25 свеч за 500 секунд (1 свеча 20 секунд) процесс пошел более быстрее.<br />0.01644796 [5828] SA Стратегия запущена. <br />3.07521367 [5828] SA 32, Time 14.12.2009 19:00:00<br />4.38461351 [5828] SA 32, Time 14.12.2009 19:30:00<br />6.77292013 [5828] SA 32, Time 14.12.2009 20:00:00<br />8.60875511 [5828] SA 32, Time 14.12.2009 20:30:00 <br />9.16585255 [5828] SA 32, Time 14.12.2009 21:00:00 <br />10.07854939 [5828] SA 32, Time 14.12.2009 21:30:00<br />11.40424538 [5828] SA 32, Time 14.12.2009 22:00:00 <br />12.46323681 [5828] SA 32, Time 14.12.2009 22:30:00<br />18.28660583 [5828] SA 32, Time 14.12.2009 23:00:00<br />21.89432526 [5828] SA 32, Time 14.12.2009 23:30:00<br />53.01043701 [5828] SA 32, Time 15.12.2009 10:30:00<br />119.58635712 [5828] SA 32, Time 15.12.2009 11:00:00<br />185.16238403 [5828] SA 32, Time 15.12.2009 11:30:00<br />267.20208740 [5828] SA 32, Time 15.12.2009 12:00:00<br />303.97787476 [5828] SA 32, Time 15.12.2009 12:30:00<br />348.32104492 [5828] SA 32, Time 15.12.2009 13:00:00<br />369.00817871 [5828] SA 32, Time 15.12.2009 13:30:00<br />390.65640259 [5828] SA 32, Time 15.12.2009 14:00:00<br />414.89291382 [5828] SA 32, Time 15.12.2009 14:30:00<br />444.07022095 [5828] SA 32, Time 15.12.2009 15:00:00<br />473.62747192 [5828] SA 32, Time 15.12.2009 15:30:00<br />497.20465088 [5828] SA 32, Time 15.12.2009 16:00:00<br />500.43054199 [5828] SA 32, Time 15.12.2009 16:30:00<br />503.46044922 [5828] SA 32, Time 15.12.2009 17:00:00<br />506.67254639 [5828] SA 32, Time 15.12.2009 17:30:00<br /><br />Понимаю, последние инструменты имеют гораздо большый объем сделок.<br />Подскажите, пожалуйста, каким образом увеличить скорость тестирования (использовать другой подход построения свеч?).https://stocksharp.ru/topic/1761/[BUG] Лимитированные заявки исполняются по неправильной цене!2011-07-22T08:11:57Z2011-07-22T08:11:57ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruТестирование на реале.<br /><br />Ситуация ниже похожа на багу:<br /><br />по логу видно текущий бест аск:<br />22.07.2011 11:47:36.825 BestAsk:197005,00; BestBid:197000,00<br /><br />далее видно отправку мною лимитированного(!) ордера на продажу по 197010,00<br />22.07.2011 11:47:36.828 RegisterOrder: Ok! sec=RIU1 dir=SELL vol=1 price=197010,00<br /><br />далее в логе видно новые бест аски - либо я установил эти уровни либо я присоединился к этим уровням в стакане<br />22.07.2011 11:47:37.785 BestAsk:197010,00; BestBid:197000,00<br />22.07.2011 11:47:38.859 BestAsk:197010,00; BestBid:197000,00<br />22.07.2011 11:47:39.782 BestAsk:197010,00; BestBid:197000,00<br /><br />а далее видно что мой ордер исполнился по более высокой цене - как будто он только что долетел до стакана и был выполнен по маркету<br />22.07.2011 11:47:40.456 Trade id=3 sec=RIU1 dir=SELL vol=1 price=197015<br /><br />22.07.2011 11:47:40.966 BestAsk:197030,00; BestBid:197015,00<br /><br />т.о. либо бага в алгоритме выполнения ордеров,<br />либо их выполнение тормозит - т.е. ордер как-будто "долетел" только 3-4 секунды спустя.https://stocksharp.ru/topic/1760/Гидра 3.2.5 не все инструменты импортирует с Финама2011-07-22T07:10:34Z2011-07-22T07:10:34ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruНапример после инсталляции с нуля не получается проимпортировать RIU1 (да и другие фьючерсы тоже)<br />Вот только что находится по RTS:https://stocksharp.ru/topic/1759/[SOLVED] Гидра 3.2.5 не импортит инструменты с РТС2011-07-22T07:06:20Z2011-07-22T07:06:20ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruГидра 3.2.5 не импортит инструменты с РТСhttps://stocksharp.ru/topic/1758/Ошибка получения данных из квика2011-07-21T08:52:02Z2011-07-21T08:52:02Zbgoodhttps://stocksharp.ru/users/28369/info@stocksharp.ruДобрый день!<br /><br />Некоторое время назад появилась ошибка при попытке получения данных из квика.<br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACTtyp-sUp2_MOwM1JPcpABoS9WtlPDrjadoeQeJiXmOuQ_p_cRU8wdBImY0AK2fWIdnrVvKPiu0M0e3vSK9DBM" title="http://imageshack.us/photo/my-images/855/serror.jpg/"><a href='http://img855.imageshack.us/img855/710/serror.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="http://img855.imageshack.us/img855/710/serror.jpg" style='max-width: 600px;' alt=""/></a></a><br /><br />Естественно процесса с таким id нет.<br /><br />Подключение к квику вполне успешно<br />Trader.IsConnected == true<br /><br /><br />Подскажите, в чем может быть проблема? Может быть не запускается какой-то сервис квика?https://stocksharp.ru/topic/1757/Стоп-лосс2011-07-21T08:17:35Z2011-07-21T08:17:35Zrafhttps://stocksharp.ru/users/28475/info@stocksharp.ruПодскажите пожалуйста, как правильно будет описать стоп-лосс, чтобы при достижении цены стопа, выставлялась бы заявка с исполнением по рынку.https://stocksharp.ru/topic/1756/Экспорт стакана произвольного инструмента2011-07-20T18:21:05Z2011-07-20T18:21:05ZDottzhttps://stocksharp.ru/users/311/info@stocksharp.ru<b>Ситуация следующая:</b><br /><br />Делаю дельта-хеджер. В главном окне предлагается выбрать счет , торгуемые опционы и фьючи. Список опционов и фьючей выводится на основе данных, получаемых из 2 произвольных таблиц: таблица со списком опционов(через табл. "текущая таблица"), где располагаются только опционы и есть поле "Код бумаги" и таблица с параметрами опционов (через табл. "информация по опционам"). Первая нужна мне для списка опционов, а вторая для их параметров (греки, волатильность). <br /><br />Далее переход к самому хеджеру: в нем 2 стакана (ст. опциона и ст. фьюча) , список параметров для хеджирования и проч. мелочи. Столкнулся с проблемой вывода этих самых стаканов:<br />Для вывода стакана через RegisterQuotes(), на вход надо дать тип Security. У меня же имеется только Код инструмента. <br /><br /><b>Вопросы:</b><br /><br />1. Как осуществить вывод стакана , имея только код инструмента? <br />2. Как в дальнейшем получать информацию лишь по одному инструменту, а не искать по ID инструмента в таблице и считывать их. А то слишком много неиспользуемых данных грузится и процесс поиска параметров по инструменту усложняется использованием таблиц.https://stocksharp.ru/topic/1755/не понятен механизм работы метода AddRange2011-07-20T14:24:53Z2011-07-20T14:24:53Zvaderhttps://stocksharp.ru/users/28223/info@stocksharp.ruздравствуйте.<br />Пытаюсь реализовать такую стратегию, в которой, цена следующей заявки зависит от цены предидущей.<br />Для этого подпислся на событие получения новых моих сделок, сохраняю их в коллекцию, и получаю цену последней сделки.<br />Регистрирую заявку, жду когда придет сделка, извлекаю последную сдлку и беру цену.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
MainWindow.Instance.Trader.RegisterOrder(order);
waitHandle.WaitOne();
if (_backgroundWorker.CancellationPending){return;}
_backgroundWorker.ReportProgress(4, order); curLotBuyNow += Trades[Trades.Count-1].Order.Volume;
MessageBox.Show("Id= "+Trades[Trades.Count-1].Order.Id.ToString()+" curLotBuyNow= " + curLotBuyNow.ToString());
waitHandle.Reset();
price = Math.Min(_priceOfOrder, Trades[Trades.Count-1].Trade.Price);
</pre>
</div></div><br />При получении сделки, я хочу чтобы сначала, сделки добавились в коллекцию, а потом произошла разблокировка потока и произошло извлечение цены. <br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
MainWindow.Instance.Trader.NewMyTrades += trades =>this.GuiAsync(() =>
{
lock(this)
{
trades = from n in trades
where (n.Trade.Security == _security) && (n.Order.ExtensionInfo == "S#")
select n;
int startSize = Trades.Count;
MessageBox.Show("startSize= "+startSize.ToString());
this.Trades.AddRange(trades);
while(startSize == Trades.Count){
}
MessageBox.Show("Count= "+Trades.Count.ToString());
//Если по другому инструменту?
if((Orders.Count != 0) && Orders[Orders.Count-1].IsMatched()){
this.Orders.RemoveAt(Orders.Count-1);
waitHandle.Set();
}
}
});
</pre>
</div></div><br />Но этого не происходит. Часто этот код curLotBuyNow += Trades[Trades.Count-1].Order.Volume;<br />извлает предпоследнуюю сделку. Я пытался и цикл ожидания использовать(while(startSize == Trades.Count){}) и lock, но ничего не помогает.<br />Помогите, пожалуйста, разобратся.https://stocksharp.ru/topic/1754/Как подключить библиотеку?2011-07-20T13:28:26Z2011-07-20T13:28:26ZFreemanlexxhttps://stocksharp.ru/users/27901/info@stocksharp.ruДобрый день друзья!<br />Хочу написать индикатор для quik с использованием этой библиотеки, но не знаю как правильно ее подключить в Visual Studio 2010. Научите пожалуйста. Я скачал библиотеку там исходники примеров, а где само ядро или класс?https://stocksharp.ru/topic/1753/Подключение по протоколу Plaza22011-07-20T13:10:22Z2011-07-20T13:10:22ZPresidenthttps://stocksharp.ru/users/510/info@stocksharp.ruНасколько я понимаю наш любимый S# поддерживает протокол Plaza2 напрямую.<br /><br />А через какого брокера можно подключиться по этому протоколу?<br />