protected void ProcessDelayedPositions()
        {
            double lowestAsk     = Ticker.OrderBook.Asks[0].Value;
            bool   continueCheck = true;

            while (continueCheck)
            {
                continueCheck = false;
                foreach (DelayedPositionInfo info in DelayedPositions)
                {
                    if (info.Type == OrderType.Buy)
                    {
                        if (StrategyData.Count - 1 - info.DataItemIndex > info.LiveTimeLength)
                        {
                            DelayedPositions.Remove(info);
                            continueCheck = true;
                            break;
                        }
                        if (lowestAsk <= info.Price)
                        {
                            OpenDelayedPosition(info);
                            continueCheck = true;
                            break;
                        }
                    }
                }
            }
        }
        protected virtual DelayedPositionInfo AddDelayedPosition(string mark, double value, double amount, double closeValue, int liveTimeLength)
        {
            if (1.05 * value * amount > MaxAllowedDeposit)
            {
                return(null);
            }
            DelayedPositionInfo info = new DelayedPositionInfo()
            {
                Time = DataProvider.CurrentTime, Type = OrderType.Buy, Mark = mark, Amount = amount, Price = value, LiveTimeLength = liveTimeLength, DataItemIndex = StrategyData.Count - 1, CloseValue = closeValue
            };

            DelayedPositions.Add(info);
            return(info);
        }
 protected virtual void OpenDelayedPosition(DelayedPositionInfo info)
 {
     DelayedPositions.Remove(info);
 }