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); }