Работа с candleManager~/topic/977/rabota-s-candlemanager/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T09:53:50Zhttps://stocksharp.com/images/logo.pnghttps://stocksharp.com/posts/m/2604/Опять непонятный косяк возник. Код, по нажатию на кнопку(нажимаем ее когда прошло уже как минимум 10...2010-04-14T20:10:00Z2010-04-14T20:10:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comОпять непонятный косяк возник.<br />Код, по нажатию на кнопку(нажимаем ее когда прошло уже как минимум 10<br />свечей с момента открытия):<br /><br />ВремяНажатия=DateTime.Now;<br />var arg = new CandleArg();<br /> arg.Value = TimeSpan.FromMinutes(TimeFrame);<br /> _candleManager.RegisterTimeFrameCandles(secur,<br />(TimeSpan)arg.Value);<br /><br />_candleManager.NewCandles += delegate<br /> {<br /> if (ВремяНажатияПуск.AddSeconds(milsec) ><br />DateTime.Now) return;<br /> candles = _candleManager.GetTimeFrameCandles(secur,<br />TimeSpan.FromMinutes(TimeFrame), 8);<br /> };<br /><br />И в итоге candles выдает непонятно что...<br />Аналогично получается если свечи получаю таким образом(когда<br />просматриваю свечи, то получаю нормальный набор свечей,начиная с<br />начала сессии до какого то времени(не до текущего), дальше пусто):<br /><br />candles = _candleManager.GetTimeFrameCandles(secur,<br /><br />TimeSpan.FromMinutes(TimeFrame),<br /><br />new Range<DateTime>(secur.LastTrade.Time.Date + begin,<br />secur.LastTrade.Time));<br /><br />Причем на одном компе работает как часы, а на другом непонятно что<br />показывает(и опять же не всегда, а к концу сессии)<br />Версия s# 1.6(сейчас буду на 1.8 переписывать, но не знаю поможет или<br />нет) <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2603/new GetTimeFrameCandles(secur, TimeSpan.FromMinutes(TimeFrame), new Range(minDate, maxDate)); 2010-03-17T12:41:00Z2010-03-17T12:41:00ZMikhail Sukhovhttps://stocksharp.com/users/201/info@stocksharp.comnew GetTimeFrameCandles(secur, TimeSpan.FromMinutes(TimeFrame), new<br />Range<DateTime>(minDate, maxDate));<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2602/А подскажите пожалуйста, как можно пользоваться перегрузкой GetTimeFrameCandles(Security, TimeSpan, ...2010-03-17T07:12:00Z2010-03-17T07:12:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comА подскажите пожалуйста, как можно пользоваться перегрузкой<br />GetTimeFrameCandles(Security, TimeSpan, Range((DateTime)))<br />Т.е. я к сожалению не смог нигде найти где и как можно задать<br />Range<DateTime> timeRange , м.б. есть какой нибудь пример?<br /><br />Вообще мне это надо для того, чтобы получить все доступные свечки<br />заданного тайм фрейма. Я так понял тут мы задаем диапазон времени и<br />получаем все свечи из этого диапазона, так? <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2601/Получить можно: _candleManager.GetTimeFrameCandles(trader.GetCandleBounds().Min) 2010-03-15T15:37:00Z2010-03-15T15:37:00ZMikhail Sukhovhttps://stocksharp.com/users/201/info@stocksharp.comПолучить можно:<br /><br />_candleManager.GetTimeFrameCandles(trader.GetCandleBounds().Min)<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2600/Сделал вот так _candleManager.CandlesChanged += delegate { if (ВремяНажатияПуск.AddMinutes(TimeFrame...2010-03-15T11:40:00Z2010-03-15T11:40:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comСделал вот так<br /><br />_candleManager.CandlesChanged += delegate<br /> {<br /> if<br />(ВремяНажатияПуск.AddMinutes(TimeFrame)>DateTime.Now)<br /> candles =<br />_candleManager.GetTimeFrameCandles(secur,<br />TimeSpan.FromMinutes(TimeFrame), 20);<br /> };<br /><br />Все заработало нормально, но один ньюанс появился. Самая последняя<br />свечка(candles[19]) представляет собой не последнюю свечку на чарте, а<br />предпоследнюю,т.е. текущую свечку получить не получается... <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2599/)) спасибо, попробую 2010-03-12T16:31:00Z2010-03-12T16:31:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.com))<br />спасибо, попробую <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2598/Есть. Вы запускаете RegisterTimeFrameCandles в момент X. Сохраните это время. Ждите, пока не появило...2010-03-12T16:30:00Z2010-03-12T16:30:00ZMikhail Sukhovhttps://stocksharp.com/users/201/info@stocksharp.comЕсть. Вы запускаете RegisterTimeFrameCandles в момент X. Сохраните это<br />время. Ждите, пока не появилось NewCandles для времени X + TimeFrame.<br /><br />Если следовать Вашему кода, то возникает ситуация. CandlesChanges<br />вызвалось для свечек с самого начала сессии (фактически для первых<br />сделок). А Вы еще пытаетесь и -20 свечек взять. Влезать в вечерку<br />пред. сессиии S# не позволяет =)<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2597/А есть выход? Т.е. мне нужно в любой момент времени иметь данные о 20и последних свечках, м.б. подск...2010-03-12T16:23:00Z2010-03-12T16:23:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comА есть выход? Т.е. мне нужно в любой момент времени иметь данные о 20и<br />последних свечках, м.б. подскажите как сделать? <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2596/Будут не корректны. Потому что вот что получается. Вы в событие об изменении одних свечек, получаете...2010-03-12T16:10:00Z2010-03-12T16:10:00ZMikhail Sukhovhttps://stocksharp.com/users/201/info@stocksharp.comБудут не корректны. Потому что вот что получается. Вы в событие об<br />изменении одних свечек, получаете данные по другим свечкам. Которые<br />могут быть еще не сформированны.<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2595/Я делаю так: есть кнопка connect, dde и start При нажатии на коннект создаем экземпляр CandleManager...2010-03-12T15:41:00Z2010-03-12T15:41:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comЯ делаю так: есть кнопка connect, dde и start<br />При нажатии на коннект создаем экземпляр CandleManager, далее делаем<br />дде вывод и при нажатии на start вот что прописываю:<br /><br />_candleManager.RegisterTimeFrameCandles(secur, (TimeSpan)arg.Value);<br /><br /> _candleManager.CandlesChanged += delegate<br /> {<br /> candles =<br />_candleManager.GetTimeFrameCandles(secur,<br />TimeSpan.FromMinutes(TimeFrame), 20);<br /> };<br /><br />А далее по коду вызываю значения этих свечек, однако все равно данные<br />не корректные.....<br /> <br /> Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2594/Так делать нельзя. Свечки формируются в параллельном потоке. Когда Вы вызываете RegisterTimeFrameCan...2010-03-12T14:40:00Z2010-03-12T14:40:00ZMikhail Sukhovhttps://stocksharp.com/users/201/info@stocksharp.comТак делать нельзя. Свечки формируются в параллельном потоке. Когда Вы<br />вызываете RegisterTimeFrameCandles, запускается данный процесс.<br />Необходимо время для окончания формирования (+ еще особенность ДДЕ<br />Квика посылать данные не упорядоченно). Именно для этого я и сделал<br />события СandleChanged.<br /><br />Старайтесь делать следующим образом. Запускать экспорт и формирование<br />свечек в самом старте работы. Затем, предоставлять время роботу<br />подумать. Как вариант, не сразу запускать процесс торговли, а делать<br />кнопку старт, которую нажимает пользователь. Человек в состоянии<br />понять, что загружка проца упала, и что все данные перелиты. В<br />дальнейшем, уже работать со свечками в стиле: пришло событие<br />NewCandles, значит все свечки до только что созданных (именно что<br />только что созданных, а не окончательно сформированных)<br />сформировались.<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/2593/Здравствуйте. Ситуация такая: в роботе получаю значения 20и последних свечек таким образом arg.Value...2010-03-12T14:03:00Z2010-03-12T14:03:00ZAndreiFXhttps://stocksharp.com/users/28035/info@stocksharp.comЗдравствуйте.<br />Ситуация такая: в роботе получаю значения 20и последних свечек таким<br />образом<br /><br />arg.Value = TimeSpan.FromMinutes(TimeFrame);<br />secur = Securities.FirstOrDefault(secc => secc.Code == this.sec.Text);<br /> _candleManager.RegisterTimeFrameCandles(secur, (TimeSpan)arg.Value);<br /> var candles = _candleManager.GetTimeFrameCandles(secur,<br />TimeSpan.FromMinutes(TimeFrame), 20);<br /><br />Сначала они считались грамотно и верно, однако сегодня какая то<br />неожиданная ошибка: последние 3 свечки не соответствуют<br />действительности, т.е. там цена какая то не та и время свечи указано<br />которого на текущий момент еще не было.<br />Из за чего такое может быть?<br /> <br /> Copyright @ StockSharp Platform LLC 2010 - 2024