Exemplo n.º 1
0
        public override IDictionary<long, Dictionary<string, string>> Export(IList<Trade> inTrades, Filter inFilter, Stream stream, Market market, IList<Exception> exceps)
        {
            var task = _task;
            var filter = task.Filter;
            var date = market.Date(_effectiveTime);
            var trades = Env.Current.Trade.GetTrades2(filter, date, _effectiveTime);
          
            using (var writer = new StreamWriter(stream))
            {
                WriteHeader(writer);
                foreach (var trade in trades)
                {
                    if (trade.Product == null)
                    {
                        exceps.Add(new ApplicationException(String.Format("Trade {0} is invalid.  Missing product.", trade.Id)));
                        continue;
                    }
                    if(trade.TradeTime > _effectiveTime)
                    {
                        continue;
                    }

                    string line = WriteTrade(trade, date, _effectiveTime, exceps);
                    if (!Utilities.IsNullOrEmpty(line))
                    {
                        writer.WriteLine(line);
                    }
                }
            }
            return null;
        }
 static protected IList<Position> LoadTradingPositions(Filter filter, Market market, DateTime valuationTime, SimpleDate fromDate, SimpleDate toDate)
 {
     var builder = new PositionBuilder { PositionFilter = filter };
     builder.AcceptCurrencySecurity = true;
     builder.IncludeOtc = true;
     builder.ExcludeNonLive = true;
     builder.FromDate = fromDate;
     builder.ToDate = toDate;
     var asOfDate = market.Date(valuationTime);
     return builder.Build(new SimpleDate(asOfDate));
 }
Exemplo n.º 3
0
        /*public override IDictionary<long, Dictionary<string, string>> Export(IList<Trade> inTrades, Filter inFilter, Stream stream, Market market, IList<Exception> exceps)
        {
            var task = _task;
            var filter = task.Filter;
            var date = market.Date(_effectiveTime);

            //consider parameterizing
            var excludeMatured = false;
            var includeCash = false;
            var posBySettleDate = false;
            var includeCcyPair = false;

            var posFilter = (Filter)filter.Clone();
            posFilter.ExcludeNonMultiplyTraded = false;
            posFilter.ExcludeMultiplyTraded = false;
            posFilter.ExcludeNonLiveTrades = excludeMatured;

            using (var writer = new StreamWriter(stream))
            {
                WriteHeader(writer);

                var trades = Env.Current.Trade.GetTrades2(filter, date, _effectiveTime);
                foreach (var trade in trades)
                {
                    if (trade.Product == null)
                    {
                        exceps.Add(new ApplicationException(String.Format("Trade {0} is invalid.  Missing product.", trade.Id)));
                        continue;
                    }
                    if (trade.TradeTime > _effectiveTime)
                    {
                        continue;
                    }

                    string line = WriteTrade(trade, date, _effectiveTime, exceps, false);
                    if (!Utilities.IsNullOrEmpty(line))
                    {
                        writer.WriteLine(line);
                    }
                }

                var positions2 = Env.Current.Trade.LoadPaymentPositions(filter, date, date);
                var positions = Env.Current.Trade.LoadMostRecentNewPositions(posFilter, date);
                foreach (var pos in positions)
                {
                    if (!includeCash && pos.Product is CurrencySecurity)
                    {
                        continue;
                    }
                    bool isCashPos = pos.Product is CurrencySecurity;
                    bool isCurrencyPair = pos.Product is CurrencyPair;
                    if (excludeMatured)
                    {
                        if (isCurrencyPair)
                        {
                            if (Utilities.IsZero(pos.TotalSettled.Quantity) && Utilities.IsZero(pos.TotalSettled.Amount)) continue;
                        }
                        else
                        {
                            if (isCashPos && Utilities.IsZero(pos.TotalSettled.Quantity)) continue;
                            if (posBySettleDate)
                            {
                                if (!isCashPos && Utilities.IsZero(pos.TotalSettled.Quantity)) continue;
                            }
                            else if (!isCashPos && Utilities.IsZero(pos.TotalTraded.Quantity)) continue;
                        }
                    }
                    //if (excludeMatured && pos.TotalTraded.Quantity == 0) continue;
                    if (!includeCcyPair && pos.Product is CurrencyPair) continue;
                    var trade = posBySettleDate ? pos.ToSettledTrade() : pos.ToTradedTrade();
                    trade.Id = pos.PositionId;

                    string line = WriteTrade(trade, date, _effectiveTime, exceps, false);
                    if (!Utilities.IsNullOrEmpty(line))
                    {
                        writer.WriteLine(line);
                    }
                }
            }

            return null;
        }*/
        public override IDictionary<long, Dictionary<string, string>> Export(IList<Trade> inTrades, Filter inFilter, Stream stream, Market market, IList<Exception> exceps)
        {
            var task = _task;
            var filter = task.Filter;
            var date = market.Date(_effectiveTime);
            var trades = Analysis.LoadTradeAndPositions(filter, _effectiveTime, market, true);

            using (var writer = new StreamWriter(stream))
            {
                WriteHeader(writer);
                foreach (var trade in trades)
                {
                    if (trade.Product == null)
                    {
                        exceps.Add(new ApplicationException(String.Format("Trade {0} is invalid.  Missing product.", trade.Id)));
                        continue;
                    }
                    if (trade.Product is CurrencySecurity) continue;
                    if (trade.TradeTime > _effectiveTime) continue;
                    if (SymTradeHelper.GetNominal(trade) == 0.0D) continue;

                    string line = WriteTrade(trade, date, _effectiveTime, exceps);
                    if (!Utilities.IsNullOrEmpty(line))
                    {
                        writer.WriteLine(line);
                    }
                }
            }
            return null;
        }