| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 07.02.2011 
 
 
	
			avkar Mikhail Sukhov 
 Мне все равно до конца не ясно. Нужно что отметить? Что она не дожидается формирования свечек?
 Что функция не получает свечи из Квика, а возвращает только уже полученные свечи, и поэтому, если между RegisterTimeFrameCandles и GetTimeFrameCandles не прошло достаточно времени, возвращает пустое множество (или не все свечи). Насчет пустого множества согласен. И я сейчас посмотрел код, там как раз пустой массив и возвращается. У вас не так? Насчет времени... Не думаю что это имеет вообще расписывать. Потому что на этом S# целиком построен. Те же ITrader.Security, Order, MyTrades - все они будут возвращать пустые массивы, пока не придут данные по экспорту.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| mr leng 
 
   
 
						
						
					 | Дата: 08.02.2011 
 
 
	
			рецедив)))
 происходит что-то вообще сумашедшее....
 
 один раз запускаю получаю правильные свечи
 во второй раз получаю null
 в третий раз могу получить не правильную свечку(close или low не совпадпют с настоящим)
 
 и это когда свечка уже точно сформироваться
 
 хелп ми)
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Greene-nsk 
 
   
 
						
						
					 | Дата: 08.02.2011 
 
 
	
			Вы бы код привели, как вы дожидаетесь окончания формирования свечек. Было бы легче подсказывать.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| mr leng 
 
   
 
						
						
					 | Дата: 08.02.2011 
						
							|  |  |  |   |  
 
 
	
			class SmaStrategy : Strategy
 {
 private readonly CandleManager _candleManager;
 private TimeSpan _timeFrameStra;
 private double m;
 
 private DateTime _nextTime;
 private string line;
 private string _ClientCode1;
 private int _VOL1;
 private bool _isClientChek1;
 
 public SmaStrategy(CandleManager candleManager, ITrader trader, int vol1, LH20 lh20, string clientcode1, string account, Security security, TimeSpan TimeFrameStra, bool isChek1, TimeSpan interval)
 : base(trader, account, security, interval)
 {
 _candleManager = candleManager;
 
 _timeFrameStra = TimeFrameStra;
 _ClientCode1 = clientcode1;
 _VOL1 = vol1;
 _isClientChek1 = isChek1;
 this.LH20 = lh20;
 }
 
 public LH20 LH20 { get; private set; }
 
 protected override void OnRunning()
 {
 // вычисляем время окончания текущей пятиминутки
 _nextTime = _timeFrameStra.GetCandleBounds(base.Trader).Max;
 
 base.OnRunned();
 }
 
 protected override bool OnProcess()
 {
 // если наша стратегия в процессе остановки
 if (base.ProcessState == StrategyProcessStates.Stopping)
 {
 base.Orders.Where(o => o.State == OrderStates.Active).ForEach(base.Trader.GuarantyCancelOrder);
 return false;
 }
 
 
 
 if (base.Trader.MarketTime < _nextTime)
 {
 return true;
 }
 
 
 
 if (base.Trader.MarketTime > _nextTime)
 {
 // получаем сформированную свечку
 var candle = _candleManager.GetTimeFrameCandle(Security, _timeFrameStra, _nextTime - _timeFrameStra);
 
 _nextTime += _timeFrameStra;
 
 
 //     if (candle == null)
 //       return true;
 var t = candle.ClosePrice;
 var t1 = candle.LowPrice ;
 var t2 = candle.HighPrice;
 var t3 = candle.OpenPrice;
 var ty = 0;
 }
 return true;
 
 }
 
 }
 
 
 
 ничего всехр естественного, вот этот код и выводит то нормальные свечи то ненормальные(
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| avkar 
 
   
 
						
						
					 | Дата: 08.02.2011 
 
 
	
			Сначала нужно зарегистрировать ваш тайм-фрейм для инструмента с помощью функции RegisterTimeFrameCandles, а потом уже получать свечи, а в вашем коде я этого не вижу.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| avkar 
 
   
 
						
						
					 | Дата: 08.02.2011 
 
 
	
			Mikhail Sukhov Насчет пустого множества согласен. И я сейчас посмотрел код, там как раз пустой массив и возвращается. У вас не так?
 
 Да, при первом вызове GetTimeFrameCandles всегда возвращается пустое множество. При следующих вызовах, бывают, что свечи выходят не полностью, но это происходит только, если квик только-что загрузился, и таблица всех сделок еще до конца не заполнилась с сервака.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| mr leng 
 
   
 
						
						
					 | Дата: 09.02.2011 
 
 
	
			тайм фрейм регистрировалвызывал уже после формирования свечи
 все равно
 
 перешел последнию версию
 тьфу-тьфу-тьфу
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  | 
		
			| 
 | 
		
			
				| Mikhail Sukhov 
 
   
 
						
						
					 | Дата: 10.02.2011 
 
 
	
			mr leng class SmaStrategy : Strategy
 {
 
 ...
 ничего всехр естественного, вот этот код и выводит то нормальные свечи то ненормальные(
 Я так понял, что это стратегия из моего примера? Во-первых, в ней есть ошибки (я нашел их, когда тестировал ее на истории в 3.0). Во-вторых, я нашел не все.[biggrin] Все таки нужно отдавать отчет в том, что примеры - это больше популистское, чем практичное.
			
			
			
			
		
 | 
			
				|  | 
	
		| Спасибо: |   |  | 
			
				|  |