Alexander 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/10/2012
					
					
			
					 
					 
					
	
			vk37 Alexander Mukhanchikov Ап. Или уже не актуально?  Пока работаю на предыдущей версии. Есть слабая надежда, что как-то все само сабой исправиться )  Продублирую вопрос - Какой код нужно дописать в пример, чтобы увидеть разницу между версиями 4 и 6? Без ответа на этот вопрос вряд ли что-то исправится.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					vk37 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/10/2012
					
					
			
					 
					 
					
	
			Так ведь это ж исследовать надо. Не знаю какой код. Потом у вас пример со свечами, а у меня со стаканами.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/10/2012
					
					
			
					 
					 
					
	
			vk37 Alexander Mukhanchikov Ап. Или уже не актуально?  Пока работаю на предыдущей версии. Есть слабая надежда, что как-то все само сабой исправиться )  Судя по всему, проблема в вашем коде. То, что начало тормозить на новой версии, еще не означает ошибку S#. Возможно, раньше не было каких-то алгоритмов, которые появились в последних версиях и  в вашем случае начали использоваться в роботе. Думаю багу можно закрывать.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					vk37 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/18/2012
					
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
								 
							 | 
						 
					 
			
					 
					 
					
	
			Торможение стало происходить из-за работы дочерней стратегии. Что-то не так с синхронизацией? Дочерняя стратегия: Code
using System.Collections.Concurrent;
using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
namespace AlgoTrading.SpeedTest
{
    public class MyQuotingStrategy : Strategy
    {
        private readonly ConcurrentStack<Order> _orders = new ConcurrentStack<Order>();
        private readonly OrderDirections _orderDirection;
        private readonly Unit _startPrice;
        private readonly Unit _offset;
        private readonly object _locker = new object();
        private bool _canCancel;
        public MyQuotingStrategy(OrderDirections orderDirection, Unit price, Unit offset)
        {
            _orderDirection = orderDirection;
            _startPrice = price;
            _offset = offset;
        }
        protected override void OnStarted()
        {
            Security
                .WhenMarketDepthChanged()
                .Do(depth =>
                {
                    Order order;
                    _orders.TryPeek(out order);
                    if (order != null && order.State == OrderStates.Active && _canCancel)
                    {
                        var cancelOrder = _orderDirection == OrderDirections.Buy && depth.BestBid != null &&
                                           depth.BestBid.Price > order.Price || _orderDirection == OrderDirections.Sell && depth.BestAsk != null &&
                                           depth.BestAsk.Price < order.Price;
                        if (cancelOrder)
                        {
                            _canCancel = false;
                            order.WhenCanceled().Do(o => RegisterNew(o.Balance,
                                                                     _orderDirection == OrderDirections.Buy
                                                                         ? new Unit(depth.BestBid.Price, UnitTypes.Absolute, Security)
                                                                         : new Unit(depth.BestAsk.Price, UnitTypes.Absolute, Security)))
                                .Once()
                                .Sync(_locker)
                                .Apply(this);
                            CancelOrder(order);
                        }
                    }
                })
                .Sync(_locker)
                .Apply(this);
            RegisterNew(Volume, _startPrice);
            base.OnStarted();
        }
        private void RegisterNew(decimal volume, Unit price)
        {
            var order = new Order()
            {
                Direction = _orderDirection,
                Price = price.ApplyOffset(_orderDirection, _offset),
                Volume = volume,
            };
            order.WhenRegistered().Do(o => _canCancel = true )
            .Once()
            .Sync(_locker)
            .Apply(this);
            order.WhenMatched().Do(o => Stop())
            .Once()
            .Sync(_locker)
            .Apply(this);
            RegisterOrder(order);
            _orders.Push(order);
        }
    }
}
 Вызов дочерней стратегии из основной: Code
using StockSharp.Algo;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
namespace AlgoTrading.SpeedTest
{
    public class MarketDepthSkeleton : Strategy
    {
        private OrderDirections? _orderDirection;
        private bool _canProcess = true;
        private readonly object _locker = new object();
        protected override void OnStarted()
        {
            Security
                .WhenMarketDepthChanged()
                .Do(ProcessDepth)
                .Sync(_locker)
                .Apply(this);
            base.OnStarted();
        }
        private void ProcessDepth(MarketDepth depth)
        {
            if (Security.BestAsk == null || Security.BestBid == null)
                return;
            if (_canProcess)
            {
                _canProcess = false;
                _orderDirection = _orderDirection.HasValue ? _orderDirection.Value.Invert() : OrderDirections.Buy;
                var price = depth.GetCurrentPrice(_orderDirection.Value).Value;
                var strategy = new MyQuotingStrategy(_orderDirection.Value,
                                                     new Unit(price, UnitTypes.Absolute, Security),
                                                     new Unit(1, UnitTypes.Step, Security)) { Volume = Volume };
                strategy.WhenStopped().Do(() => _canProcess = true).Once().Sync(_locker).Apply(this);
                ChildStrategies.Add(strategy);
            }
        }
    }
}
  
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					vk37 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/19/2012
					
					
			
					 
					 
					
	
			Да скорость снизилась из-за работы дочерней стратегии. Отказался пока от использования дочерних стратегий: котирование встроил в основную стратегию. Скорость стала прежней.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/19/2012
					
					
			
					 
					 
					
	
			vk37 Да скорость снизилась из-за работы дочерней стратегии. Отказался пока от использования дочерних стратегий: котирование встроил в основную стратегию. Скорость стала прежней.  Вряд ли. В SampleHistoryTesting котирование используется как дочерняя стратегия. И наблюдается только ускорение тестирования.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					vk37 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/19/2012
					
					
			
					 
					 
					
	
			Я говорю не про статегию MarketQuotingStrategy в SampleHistoryTesting, а про свою дочернюю стратегию. На предыдущей версии сборок тестирование за 2 месяца выполнялось за 20 мин. На новой версии - 1 час 20 мин. На новой версии без механизма дочерних стратегий - 20 мин.
			
			
			
			
		
 
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					Mikhail Sukhov 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 11/20/2012
					
					
			
					 
					 
					
	
			vk37 Я говорю не про статегию MarketQuotingStrategy в SampleHistoryTesting, а про свою дочернюю стратегию.
   Может вы скажите наконец, что нужно в SampleHistoryTesting изменить, чтобы воспроизвести данную ситуацию.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 | 
			
		
			
  | 
		
			
				
					vk37 
					 
					 
					 
					 
					
					
						
						
					 
				 | 
				
					Date: 1/8/2013
					
					
			
					 
					 
					
	
			Вопрос со скоростью тестирования решился указанием у дочерней стратегии: Code
var quotingStrategy = new MyQuotingStrategy(quotingOrder)
{
  DisposeOnStop = true,
  WaitAllTrades = true,
};
 Скорость тестирования падала только при тестировании за достаточно длительный период времени, когда котирование вызывалось много раз.
			
			
			
			
		
  
				 | 
			
			
				| 
					
				 | 
				
					
	
		| 
			Thanks:
		 | 
		
		
			 
		 | 
	 
 
				 | 
			
			
				| 
					
				 |