Example #1
0
        public override string ToString()
        {
            string output = $"MMSI: {MMSI} Type: {MessageType} ";

            switch (MessageType)
            {
            case 1:
            case 2:
            case 3:
                output += PositionReport?.ToString();
                break;

            case 4:
                output += BaseStationReport?.ToString();
                break;

            case 5:
                output += VoygageReport?.ToString();
                break;

            default:
                output += "unsupported messagetype";
                break;
            }

            return(output);
        }
Example #2
0
        public void SaveExistingTest(
            [Values(15.0, null)] double?latitude,
            [Values(42.0, null)] double?longitude,
            [Values(false, true)] bool setPositionDateTime)
        {
            var editMode = EditMode.Edit;

            var positionDateTime = setPositionDateTime ? new DateTime?(new DateTime(2001, 1, 1)) : null;
            var positionReportID = "TestPositionReportID";
            var comment          = "A position report comment";
            var position         = latitude != null && longitude != null ? new Position(latitude.Value, longitude.Value) : null;


            var positionReport = new PositionReport();

            positionReport.ID      = positionReportID;
            positionReport.Comment = "";


            _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport);
            _positionReportRepositoryMock.Expect(
                r => r.SubmitChanges())
            .WhenCalled(
                b => VerifyPositionReport(positionReport, positionReportID, positionDateTime, comment, position));

            var result = TestedController.Save(editMode, positionReportID, positionDateTime, comment, latitude, longitude);


            VerifyRedirectToRouteResult(result, expectedAction: "Index");
        }
Example #3
0
        public static AisMessage DecodeAisString(string armoredString)
        {
            var    aisMsg = new AisMessage();
            string binary = DecodeVDXArmoredString(armoredString);

            aisMsg.MessageType     = Convert.ToInt32(binary.Substring(0, 6), 2);
            aisMsg.RepeatIndicator = Convert.ToInt32(binary.Substring(6, 2), 2);
            aisMsg.MMSI            = Convert.ToInt32(binary.Substring(8, 30), 2);

            switch (aisMsg.MessageType)
            {
            case 1:
            case 2:
            case 3:
                aisMsg.PositionReport = PositionReport.CreateFromBinary(binary);
                break;

            case 4:
                aisMsg.BaseStationReport = BaseStationReport.CreateFromBinary(binary);
                break;

            case 5:
                aisMsg.VoygageReport = VoyageReport.CreateFromBinary(binary);
                break;
            }

            return(aisMsg);
        }
Example #4
0
        /// <summary>
        /// PositionReport message handler
        /// </summary>
        private void OnPositionReport(PositionReport message)
        {
            if (message.getAccount() == _accountId)
            {
                var fxcmPositionId = message.getFXCMPosID();
                if (_openPositions.ContainsKey(fxcmPositionId) && message is ClosedPositionReport)
                {
                    _openPositions.Remove(fxcmPositionId);
                }
                else
                {
                    _openPositions[fxcmPositionId] = message;
                }
            }

            if (message.getRequestID() == _currentRequest)
            {
                AutoResetEvent autoResetEvent;
                if (message.isLastRptRequested() && _mapRequestsToAutoResetEvents.TryGetValue(_currentRequest, out autoResetEvent))
                {
                    autoResetEvent.Set();
                    _mapRequestsToAutoResetEvents.Remove(_currentRequest);
                }
            }
        }
        public async Task <JsonResult> GetPositionByDate(string vehicleId, string start)
        {
            var id = Guid.Parse(vehicleId);
            // var endPeriod = DateTime.Now;
            var startPeriod = default(DateTime);

            DateTime.TryParseExact(start, "yyyy-MM-dHH:mm", null, DateTimeStyles.AssumeLocal, out startPeriod);

            var endPeriod = startPeriod.Date.AddDays(1).AddTicks(-1);
            var vehicle   = await ObjectContext.Vehicles.FindAsync(id);

            var positions = await _positionService.GetVehiclePositionsByPeriod(id, startPeriod, endPeriod);

            if (!positions.Any())
            {
                return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet));
            }
            var gpsCollection = positions.Select(x =>
                                                 new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") });
            var positionReport = new PositionReport();
            var result         = positionReport.BuidDailyReport(positions, startPeriod, vehicle.VehicleName);
            var distance       = result.Where(x => x.MotionStatus == "Moving").Sum(x => x.Distance);

            return(Json(new { Vehiclename = vehicle?.VehicleName, Distance = distance, Periods = result, GpsCollection = gpsCollection }, JsonRequestBehavior.AllowGet));
        }
Example #6
0
 private static void VerifyPositionReport(PositionReport positionReportToVerify, string positionReportID,
                                          DateTime?positionDateTime, string comment, Position position)
 {
     Assert.AreEqual(positionReportToVerify.ID, positionReportID, "PositionReport ID has been modified.");
     Assert.AreEqual(positionReportToVerify.PositionDateTime, positionDateTime, "PositionDateTime not set.");
     Assert.AreEqual(positionReportToVerify.Comment, comment, "Comment not set.");
     Assert.AreEqual(positionReportToVerify.Position, position, "Position not set.");
 }
Example #7
0
 public PositionActivity(int x, int y, int width, int height, PositionReport pType)
 {
     this.Position = pType;
     this.X = x;
     this.Y = y;
     this.Width = width;
     this.Height = height;
 }
Example #8
0
        public void ValidateInvalidPowerTrades()
        {
            var powerTrades = new PowerTrades {
                Day = SummerDay, Trades = new[] { PowerTrade.Create(SummerDay.DateTime, 24), PowerTrade.Create(SummerDay.DateTime, 23) }
            };

            Assert.Throws <ArgumentException>(() => PositionReport.ValidateTrades(powerTrades));
        }
Example #9
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public async Task <JsonResult> AllVehiclesWithLastPosition()
        {
            var report = new PositionReport();
            var user   = User.Identity;

            var positions = report.PositionViewModels(await _positionService.GetLastVehiclPosition(user.Name));

            return(Json(positions, JsonRequestBehavior.AllowGet));
        }
Example #10
0
        public static PositionReport Build()
        {
            var report = new PositionReport
            {
                SubHeadings      = new List <string>(),
                ValidationErrors = new List <string>(),
                Groups           = new List <PositionReportGroup>(),
            };

            return(report);
        }
Example #11
0
        public void BuildPositionOnePowerTrade()
        {
            var powerTrade = PowerTrade.Create(SummerDay.DateTime, 24);
            var trades     = new PowerTrades {
                Day = SummerDay, Trades = new[] { powerTrade }
            };
            var actual          = PositionReport.BuildPosition(trades);
            var expectedPeriods = powerTrade.Periods;

            Assert.That(actual.Day, Is.EqualTo(trades.Day));
            CollectionAssert.AreEqual(expectedPeriods, actual.Periods, new PowerPeriodComparer(0.0001));
        }
Example #12
0
        public void ValidateValidPowerTrades()
        {
            var powerTrades = new PowerTrades {
                Day = SummerDay, Trades = Enumerable.Range(1, 2).Select(i => PowerTrade.Create(SummerDay.DateTime, 24)).ToArray()
            };
            var actual = PositionReport.ValidateTrades(powerTrades);

            Assert.That(actual.Day, Is.EqualTo(powerTrades.Day));
            for (var i = 0; i < powerTrades.Trades.Count(); i++)
            {
                CollectionAssert.AreEqual(actual.Trades[i].Periods, powerTrades.Trades[i].Periods, new PowerPeriodComparer(0.0001));
            }
        }
        public void WidgetTest()
        {
            var positionReport         = new PositionReport();
            var positionReportListPage = new PagedList <PositionReport>(new [] { positionReport }, 1, 1, 1);

            _positionReportRepositoryMock.Expect(r => r.ListPublished(1, 1)).Return(positionReportListPage);


            var result = TestedController.Widget();


            VerifyViewResult(result, "LatestPositionsWidget", typeof(PositionReport), positionReport);
        }
Example #14
0
        public void CanProcessEventData()
        {
            var report = new PositionReport(18, "Ais", new DateTime(2018, 12, 14, 10, 29, 54), 55.4436546, 3.6985412);

            var processor = new PositionProcessor();

            var result = processor.ProcessMessage(report);

            Assert.NotNull(result);
            Assert.Equal(4, result.GeoHash.Length);
            Assert.Equal(report.Longitude, result.Position.Coordinates.Longitude);
            Assert.Equal(report.Latitude, result.Position.Coordinates.Latitude);
        }
Example #15
0
        public PositionReport Create()
        {
            var positionReport = new PositionReport
            {
                ID = Guid.NewGuid().ToString(),
                PositionDateTime = DateTime.Now,
                WindDirection    = 0,
                WindSpeed        = 0,
                Course           = 0,
                Speed            = 0
            };

            return(positionReport);
        }
Example #16
0
 /// <summary>
 /// Converts an FXCM position to a QuantConnect holding.
 /// </summary>
 /// <param name="fxcmPosition">The FXCM position</param>
 private static Holding ConvertHolding(PositionReport fxcmPosition)
 {
     return(new Holding
     {
         Symbol = ConvertSymbol(fxcmPosition.getInstrument()),
         Type = GetSecurityType(fxcmPosition.getInstrument()),
         AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()),
         ConversionRate = 1.0m,
         CurrencySymbol = "$",
         Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0
             ? fxcmPosition.getPositionQty().getLongQty()
             : -fxcmPosition.getPositionQty().getShortQty())
     });
 }
Example #17
0
 /// <summary>
 /// Converts an FXCM position to a QuantConnect holding.
 /// </summary>
 /// <param name="fxcmPosition">The FXCM position</param>
 private static Holding ConvertHolding(PositionReport fxcmPosition)
 {
     return new Holding
     {
         Symbol = ConvertSymbol(fxcmPosition.getInstrument()),
         Type = GetSecurityType(fxcmPosition.getInstrument()),
         AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()),
         ConversionRate = 1.0m,
         CurrencySymbol = "$",
         Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0
             ? fxcmPosition.getPositionQty().getLongQty()
             : -fxcmPosition.getPositionQty().getShortQty())
     };
 }
Example #18
0
        public void BuildPositionMultiplePowerTrades()
        {
            var powerTrade = CreatePowerTrade(SummerDay, 24);
            var trades     = new PowerTrades {
                Day = SummerDay, Trades = new[] { powerTrade, powerTrade, powerTrade }
            };
            var actual          = PositionReport.BuildPosition(trades);
            var expectedPeriods = powerTrade.Periods.Select(p => new PowerPeriod {
                Period = p.Period, Volume = p.Volume * 3.0
            }).ToArray();

            Assert.That(actual.Day, Is.EqualTo(trades.Day));
            CollectionAssert.AreEqual(expectedPeriods, actual.Periods, new PowerPeriodComparer(0.0001));
        }
Example #19
0
        /// <summary>
        /// Converts an FXCM position to a QuantConnect holding.
        /// </summary>
        /// <param name="fxcmPosition">The FXCM position</param>
        private Holding ConvertHolding(PositionReport fxcmPosition)
        {
            var securityType = _symbolMapper.GetBrokerageSecurityType(fxcmPosition.getInstrument().getSymbol());

            return(new Holding
            {
                Symbol = _symbolMapper.GetLeanSymbol(fxcmPosition.getInstrument().getSymbol(), securityType, Market.FXCM),
                Type = securityType,
                AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()),
                CurrencySymbol = "$",
                Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0
                    ? fxcmPosition.getPositionQty().getLongQty()
                    : -fxcmPosition.getPositionQty().getShortQty())
            });
        }
Example #20
0
        public static PositionReport WithSubHeading(this PositionReport source, string value)
        {
            if (source.SubHeadings == null)
            {
                source.SubHeadings = new List <string> {
                    value
                };
            }
            else
            {
                source.SubHeadings.Add(value);
            }

            return(source);
        }
Example #21
0
        public static PositionReport WithValidationError(this PositionReport source, string value)
        {
            if (source.ValidationErrors == null)
            {
                source.ValidationErrors = new List <string> {
                    value
                };
            }
            else
            {
                source.ValidationErrors.Add(value);
            }

            return(source);
        }
Example #22
0
        public static PositionReport WithGroup(this PositionReport source, PositionReportGroup value)
        {
            if (source.Groups == null)
            {
                source.Groups = new List <PositionReportGroup> {
                    value
                };
            }
            else
            {
                source.Groups.Add(value);
            }

            return(source);
        }
Example #23
0
        public PositionActivity(int v1, int v2, PositionReport pType)
        {
            this.Position = pType;

            if ((pType & PositionReport.Moved) == PositionReport.Moved)
            {
                this.X = v1;
                this.Y = v2;
            }

            if ((pType & PositionReport.Resized) == PositionReport.Resized)
            {
                this.Width = v1;
                this.Height = v2;
            }
        }
Example #24
0
        public void DeleteTest()
        {
            var positionReportID = "TestPositionReportID";

            var positionReport = new PositionReport();

            positionReport.ID = positionReportID;


            _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport);


            var result = TestedController.Delete(positionReportID);


            VerifyViewResult(result, "ConfirmDelete", typeof(PositionReport), positionReport);
        }
Example #25
0
        public void AddTest()
        {
            var positionReport = new PositionReport();

            AddRole("Author");
            _positionReportRepositoryMock.Expect(r => r.Create()).Return(positionReport);


            var result = TestedController.Add();


            VerifyViewResult(result, "Edit", typeof(EditPositionReportData));
            var resultModel = (EditPositionReportData)((ViewResult)result).ViewData.Model;

            Assert.That(resultModel.EditMode, Is.EqualTo(EditMode.Add));
            Assert.That(resultModel.PositionReport, Is.EqualTo(positionReport));
        }
Example #26
0
        private static PositionReport ProcessMessage(string subject, string messageBody)
        {
            var positionReport = new PositionReport();

            var positionReportRepositoryMock = MockRepository.GenerateMock <IPositionReportRepository>();

            positionReportRepositoryMock.Expect(b => b.Create()).Return(positionReport);
            positionReportRepositoryMock.Expect(b => b.SubmitChanges());

            var parsedMessage = new ParsedMessage("*****@*****.**", "*****@*****.**", subject, messageBody, null);

            var positionReportMessageProcessor = new PositionReportMessageProcessor(positionReportRepositoryMock);

            positionReportMessageProcessor.ProcessMessage(parsedMessage);

            positionReportRepositoryMock.VerifyAllExpectations();
            return(positionReport);
        }
Example #27
0
        public void SaveDeleteTest()
        {
            var positionReportID = "TestPositionReportID";

            var positionReport = new PositionReport();

            positionReport.ID = positionReportID;


            _positionReportRepositoryMock.Expect(r => r.Get(positionReportID)).Return(positionReport);
            _positionReportRepositoryMock.Expect(r => r.Delete(positionReport));
            _positionReportRepositoryMock.Expect(r => r.SubmitChanges());


            var result = TestedController.SaveDelete(positionReportID);


            VerifyRedirectToRouteResult(result, expectedAction: "Index");
        }
Example #28
0
        public void TestReportingRoundtripOutThenInPositionReport()
        {
            // payment rules abstract type issue
            var orig = new PositionReport()
            {
                fpmlVersion = "5-3",
                position    = new[]
                {
                    new ReportedPosition()
                    {
                        constituent = new PositionConstituent()
                        {
                            Item = new Trade()
                            {
                                collateral = new Collateral()
                                {
                                    independentAmount = new IndependentAmount()
                                    {
                                        paymentDetail = new[]
                                        {
                                            new PaymentDetail()
                                            {
                                                id = "id0", paymentRule = new PercentageRule()
                                                {
                                                    paymentPercentSpecified = true, paymentPercent = 5.0M
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };
            PositionReport copy = Roundtrip_OutThenIn(orig, true, false);
            // tests
            Trade          trade = (Trade)copy.position[0].constituent.Item;
            PercentageRule rule  = (PercentageRule)trade.collateral.independentAmount.paymentDetail[0].paymentRule;

            Assert.IsTrue(rule.paymentPercentSpecified);
            Assert.AreEqual(5.0M, rule.paymentPercent);
        }
Example #29
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="vehicleId"></param>
        /// <returns></returns>
        public async Task <JsonResult> GetTargetByPeriod(string vehicleId)
        {
            var id = Guid.Parse(vehicleId);
            //var start =
            var endPeriod   = DateTime.Now;
            var startPeriod = DateTime.Now.Date;
            var vehicle     = await _vehicleService.GetVehicleById(id);

            var positions = await _positionService.GetVehiclePositionsByPeriod(id, startPeriod, endPeriod);

            if (!positions.Any())
            {
                return(Json(new List <TargetViewModel>(), JsonRequestBehavior.AllowGet));
            }
            var gpsCollection = positions.Select(x =>
                                                 new { Latitude = x.Lat, Longitude = x.Long, GpsStatement = x.Timestamp.ToString("O") });
            var positionReport = new PositionReport();

            return(Json(new { Periods = positionReport.BuidDailyReport(positions, startPeriod, vehicle.VehicleName), GpsCollection = gpsCollection }, JsonRequestBehavior.AllowGet));
        }
Example #30
0
        // PositionReport message handler
        private void OnPositionReport(PositionReport positionReport)
        {
            Console.WriteLine("OnPositionReport()");
            Console.WriteLine("\tRequestId = {0}", positionReport.getRequestID());

            Console.WriteLine("\tgetAccount() = " + positionReport.getAccount());
            Console.WriteLine("\tgetInstrument().getSymbol() = " + positionReport.getInstrument().getSymbol());
            Console.WriteLine("\tgetCurrency() = " + positionReport.getCurrency());
            Console.WriteLine("\tgetPositionQty() = " + positionReport.getPositionQty());
            Console.WriteLine("\tgetSettlPrice() = " + positionReport.getSettlPrice());
            Console.WriteLine();

            if (positionReport.getRequestID() == _currentRequest)
            {
                if (positionReport.isLastRptRequested())
                {
                    _requestPositionListEvent.Set();
                }
            }
        }
        public void Start()
        {
            // Build the computation environment.
            _environment = new Environment
            {
                TokenSource         = new CancellationTokenSource(),
                Interval            = TimeSpan.FromMinutes(XmlConvert.ToDouble(ConfigurationManager.AppSettings["schedule-interval-minutes"])),
                PowerService        = new PowerService(),
                GetTrades           = (p, d) => PositionReport.GetTrades(p, d),
                ValidateTrades      = t => PositionReport.ValidateTrades(t),
                BuildPosition       = t => PositionReport.BuildPosition(t),
                BuildReport         = (rs, p) => PositionReport.BuildReport(rs, p),
                WriteReport         = (rs, r) => PositionReport.WriteReport(rs, r),
                PipelineBufferSize  = XmlConvert.ToInt32(ConfigurationManager.AppSettings["pipeline-buffer-size"]),
                ReportSpecification = new ReportSpecification
                {
                    FilenameFormat     = ConfigurationManager.AppSettings["report-filename-format"],
                    FilenameDateFormat = ConfigurationManager.AppSettings["report-filename-date-format"],
                    OutputPath         = ConfigurationManager.AppSettings["report-output-path"],
                    Headers            = ConfigurationManager.AppSettings["report-headers"],
                    LocalTimeFormat    = ConfigurationManager.AppSettings["report-localtime-format"]
                }
            };

            // Create the position report pipelined computation.
            _pipeline = Pipeline.Create(LogManager.GetLogger("Pipeline"), _environment);

            // Run the position report pipelined computation at the specified interval until a cancellation request is received.
            _subscription =
                Observable.Generate(0,
                                    i => !_environment.TokenSource.IsCancellationRequested,
                                    i => i + 1,
                                    i => i,
                                    i => i == 0 ? TimeSpan.Zero : _environment.Interval)
                .Timestamp()
                .Select(x => x.Timestamp)
                .Subscribe(_pipeline.AsObserver());
        }
        /// <summary>
        /// PositionReport message handler
        /// </summary>
        private void OnPositionReport(PositionReport message)
        {
            if (message.getAccount() == _accountId)
            {
                if (_openPositions.ContainsKey(message.getCurrency()) && message is ClosedPositionReport)
                {
                    _openPositions.Remove(message.getCurrency());
                }
                else
                {
                    _openPositions[message.getCurrency()] = message;
                }
            }

            if (message.getRequestID() == _currentRequest)
            {
                if (message.isLastRptRequested())
                {
                    _mapRequestsToAutoResetEvents[_currentRequest].Set();
                    _mapRequestsToAutoResetEvents.Remove(_currentRequest);
                }
            }
        }
Example #33
0
        public void SaveWithInvalidEditModeTest()
        {
            var editMode = (EditMode)Int32.MaxValue;

            var positionReportID = Guid.Empty.ToString();
            var comment          = "A position report comment";

            var positionReport = new PositionReport();

            positionReport.ID = positionReportID;


            try
            {
                var result = TestedController.Save(editMode, positionReportID, null, comment, null, null);

                Assert.Fail("ArgumentException not raised.");
            }
            catch (ArgumentException ex)
            {
                Assert.That(ex.ParamName, Is.EqualTo("editMode"));
            }
        }
        /// <summary>
        /// PositionReport message handler
        /// </summary>
        private void OnPositionReport(PositionReport message)
        {
            if (message.getAccount() == _accountId)
            {
                if (_openPositions.ContainsKey(message.getCurrency()) && message is ClosedPositionReport)
                {
                    _openPositions.Remove(message.getCurrency());
                }
                else
                {
                    _openPositions[message.getCurrency()] = message;
                }
            }

            if (message.getRequestID() == _currentRequest)
            {
                if (message.isLastRptRequested())
                {
                    _mapRequestsToAutoResetEvents[_currentRequest].Set();
                    _mapRequestsToAutoResetEvents.Remove(_currentRequest);
                }
            }
        }
Example #35
0
        /// <summary>
        /// Converts an FXCM position to a QuantConnect holding.
        /// </summary>
        /// <param name="fxcmPosition">The FXCM position</param>
        private Holding ConvertHolding(PositionReport fxcmPosition)
        {
            var securityType = _symbolMapper.GetBrokerageSecurityType(fxcmPosition.getInstrument().getSymbol());

            return new Holding
            {
                Symbol = _symbolMapper.GetLeanSymbol(fxcmPosition.getInstrument().getSymbol(), securityType, Market.FXCM),
                Type = securityType,
                AveragePrice = Convert.ToDecimal(fxcmPosition.getSettlPrice()),
                ConversionRate = 1.0m,
                CurrencySymbol = "$",
                Quantity = Convert.ToDecimal(fxcmPosition.getPositionQty().getLongQty() > 0 
                    ? fxcmPosition.getPositionQty().getLongQty() 
                    : -fxcmPosition.getPositionQty().getShortQty())
            };        
        }
        /// <summary>
        /// PositionReport message handler
        /// </summary>
        private void OnPositionReport(PositionReport message)
        {
            if (message.getAccount() == _accountId)
            {
                var fxcmSymbol = message.getInstrument().getSymbol();
                if (_openPositions.ContainsKey(fxcmSymbol) && message is ClosedPositionReport)
                {
                    _openPositions.Remove(fxcmSymbol);
                }
                else
                {
                    _openPositions[fxcmSymbol] = message;
                }
            }

            if (message.getRequestID() == _currentRequest)
            {
                AutoResetEvent autoResetEvent;
                if (message.isLastRptRequested() && _mapRequestsToAutoResetEvents.TryGetValue(_currentRequest, out autoResetEvent))
                {
                    autoResetEvent.Set();
                    _mapRequestsToAutoResetEvents.Remove(_currentRequest);
                }
            }
        }
Example #37
0
        // PositionReport message handler
        private void OnPositionReport(PositionReport positionReport)
        {
            Console.WriteLine("OnPositionReport()");
            Console.WriteLine("\tRequestId = {0}", positionReport.getRequestID());

            Console.WriteLine("\tgetAccount() = " + positionReport.getAccount());
            Console.WriteLine("\tgetInstrument().getSymbol() = " + positionReport.getInstrument().getSymbol());
            Console.WriteLine("\tgetCurrency() = " + positionReport.getCurrency());
            Console.WriteLine("\tgetPositionQty() = " + positionReport.getPositionQty());
            Console.WriteLine("\tgetSettlPrice() = " + positionReport.getSettlPrice());
            Console.WriteLine();

            if (positionReport.getRequestID() == _currentRequest)
            {
                if (positionReport.isLastRptRequested())
                {
                    _requestPositionListEvent.Set();
                }
            }
        }