private void StopBotIfNeeded() { if (_fileExists) { return; } _maxTimeFileMayNotExist = TimeSpan.FromSeconds(5); if (_robot.Server.Time - _fileDoesNotExistSince > _maxTimeFileMayNotExist) { _robot.Print(string.Format("Couldn't find file for {0}s.", (int)_maxTimeFileMayNotExist.TotalSeconds)); _robot.Stop(); } }
public bool Execute(IEnumerable <TraderCopierArguments> copierArgumentses) { _copierArgumentses = copierArgumentses; ExecutedOperationsCount = 0; var executedSuccessfully = true; var positionsMap = GetPositionsMapByLabel(); foreach (var arg in _copierArgumentses) { if (!ValidateFilter(arg)) { continue; } Position[] positionsToModify; if (positionsMap.TryGetValue(arg.Ticket, out positionsToModify)) { foreach (var position in positionsToModify) { executedSuccessfully &= UpdatePositionIfNeeded(position, arg); } positionsMap.Remove(arg.Ticket); } else { executedSuccessfully &= ExecuteAndModify(arg); if (_noMoney) { _robot.Stop(); return(false); } } } var positionToCloses = positionsMap.Values.SelectMany(positions => positions); foreach (var positionToClose in positionToCloses) { executedSuccessfully &= _robot.ClosePosition(positionToClose).IsSuccessful; } return(executedSuccessfully); }