Example #1
0
        public StrategyTransaction GetStrategyTransaction(int transactionId)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>();

                StrategyTransaction transaction = transactionRepository.Get(transactionId);

                if (transaction == null)
                {
                    NotFoundFault fault = new NotFoundFault(string.Format("No transaction found with id '{0}'.", transactionId));
                    throw new FaultException <NotFoundFault>(fault, fault.Message);
                }

                return transaction;
            }));
        }
Example #2
0
        public StrategyTransaction[] GetStrategyTransactionsCollection(int entryStrategyTransactionId)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                // get the entry order transaction
                StrategyTransaction transaction = GetStrategyTransaction(entryStrategyTransactionId);

                // add it to the return collection
                List <StrategyTransaction> transactions = new List <StrategyTransaction>()
                {
                    transaction
                };

                IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>();

                List <string> searchIds = new List <string>()
                {
                    transaction.BrokerTransactionID
                };

                // find the related transactions
                while (searchIds.Count > 0)
                {
                    string searchId = searchIds.First();

                    searchIds.RemoveAt(0);

                    List <StrategyTransaction> relatedTransactions = transactionRepository.Get().Where(t => t.BrokerOrderID == searchId || t.BrokerTradeID == searchId).ToList();

                    // grab their BrokerTransactionId's
                    relatedTransactions.ForEach(t => searchIds.Add(t.BrokerTransactionID));

                    // add them to the collection
                    transactions.AddRange(relatedTransactions);
                }

                return transactions.ToArray();
            }));
        }
Example #3
0
        public StrategyTransaction SaveStrategyTransaction(StrategyTransaction transaction, string brokerName)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                StrategyTransaction updatedEntity = null;
                Strategy strategy = GetStrategy(transaction.StrategyID);

                if (strategy != null)
                {
                    IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>();

                    if (transaction.StrategyTransactionID == 0)
                    {
                        transaction.BrokerID = GetBrokerByName(brokerName).BrokerID;
                        updatedEntity = transactionRepository.Add(transaction);
                    }
                    else
                    {
                        updatedEntity = transactionRepository.Update(transaction);
                    }
                }
                return updatedEntity;
            }));
        }
Example #4
0
        /// <summary>
        /// Fetches and returns all strategy transaction entries (inclusive) in the specified range.
        /// </summary>
        /// <param name="dateBottom">The earliest transaction time.</param>
        /// <param name="dateTop">The latest transaction time.</param>
        /// <param name="maxTransactions">The number of transactions to return up to a maximum of 5000.</param>
        /// <returns></returns>
        public StrategyTransaction[] GetStrategyTransactionsByDateRange(DateTime dateBottom, DateTime?dateTop, int maxTransactions)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                maxTransactions = Math.Min(5000, maxTransactions);

                dateTop = dateTop ?? DateTime.MaxValue.ToUniversalTime();

                if (dateBottom >= dateTop)
                {
                    throw new ArgumentOutOfRangeException(string.Format("dateBottom [{0}] is greater than dateTop [{1}].", dateBottom, dateTop));
                }
                if (dateTop <= dateBottom)
                {
                    throw new ArgumentOutOfRangeException(string.Format("dateTop [{0}] is less than dateBottom [{1}].", dateTop, dateBottom));
                }

                IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>();

                StrategyTransaction[] transactions = transactionRepository.GetStrategyTransactionsByDateRange(dateBottom, dateTop.Value).Take(maxTransactions).ToArray();

                return transactions;
            }));
        }
Example #5
0
        /// <summary>
        /// Fetches and returns specified count of strategy transactions.
        /// </summary>
        /// <param name="count">The number of transactions to return up to a maximum of 5000.</param>
        /// <param name="descending">The direction of the strategy transactions read.</param>
        /// <returns></returns>
        public StrategyTransaction[] GetStrategyTransactions(int?count, bool?descending)
        {
            return(ExecuteFaultHandledOperation(() =>
            {
                count = Math.Min(5000, count ?? 5000);

                descending = descending ?? false;

                IStrategyTransactionRepository transactionRepository = _DataRepositoryFactory.GetDataRepository <IStrategyTransactionRepository>();

                IEnumerable <StrategyTransaction> transactions = null;

                if (descending.Value)
                {
                    transactions = transactionRepository.Get().OrderByDescending(t => t.BrokerTransactionID).Take(count.Value);
                }
                else
                {
                    transactions = transactionRepository.Get().OrderBy(t => t.BrokerTransactionID).Take(count.Value);
                }

                return transactions.ToArray();
            }));
        }