Ejemplo n.º 1
0
        internal GenericActionResult HandlePositionUpdate(string backtestJobName, BacktestPosition position)
        {
            if (position == null)
            {
                return(new GenericActionResult(false, "Invalid position object: null"));
            }

            logger.Debug($"Processing position update");

            return(jobsControllerUtils.AddPosition(backtestJobName, position));
        }
        public static BacktestPositionModel ToPositionModel(this BacktestPosition position)
        {
            if (position == null)
            {
                return(null);
            }

            return(new BacktestPositionModel()
            {
                Cross = position.Cross,
                CumulativeCommissionUsd = position.CommissionUsd,
                PositionQuantity = position.PositionQuantity / 1000,
                GrossCumulativePnlUsd = position.RealizedPnlUsd,
                LastUpdate = position.LastUpdate.ToLocalTime()
            });
        }
Ejemplo n.º 3
0
        internal GenericActionResult AddPosition(string jobName, BacktestPosition position)
        {
            //BacktestJob job;

            //if (activeJobs.TryGetValue(jobName, out job))
            //{
            //    job.Output.Positions.Add(position);
            //    activeJobs.AddOrUpdate(jobName, job, (key, oldValue) => job);

            //    return new GenericActionResult(true, $"Added position update to job {jobName}");
            //}
            //else
            //{
            //    string err = $"Not adding position update to unknown job {jobName}";
            //    logger.Error(err);
            //    return new GenericActionResult(false, err);
            //}

            return(new GenericActionResult(false, "Disabled"));
        }
Ejemplo n.º 4
0
        public async Task TestPostNewPosition()
        {
            string controllerEndpoint = "https://localhost:44379/";

            PositionsConnector connector = PositionsConnector.GetConnector(controllerEndpoint);

            BacktestPosition position = new BacktestPosition()
            {
                LastUpdate       = DateTimeOffset.Now,
                Cross            = Cross.EURUSD,
                PositionQuantity = 10000,
                RealizedPnL      = 100,
                RealizedPnlUsd   = 100,
                UnrealizedPnL    = 100,
                UnrealizedPnlUsd = 100
            };

            var result = await connector.PostPosition("RegTestJob", position);

            Assert.IsTrue(result.Success, result.Message);
        }
Ejemplo n.º 5
0
        public async Task <GenericActionResult> PostPosition(string backtestJobName, BacktestPosition position, CancellationToken ct = default(CancellationToken))
        {
            try
            {
                ct.ThrowIfCancellationRequested();

                if (string.IsNullOrEmpty(backtestJobName))
                {
                    throw new ArgumentNullException(nameof(backtestJobName));
                }

                if (position == null)
                {
                    throw new ArgumentNullException(nameof(position));
                }

                logger.Info($"About to send POST request to {controllerEndpoint}/api/positions/{backtestJobName}");

                return(await controllerEndpoint.AppendPathSegment($"/api/positions/{backtestJobName}").PostJsonAsync(position, ct).ReceiveJson <GenericActionResult>());
            }
            catch (OperationCanceledException)
            {
                string err = "Not posting position update: operation cancelled";
                logger.Error(err);
                return(new GenericActionResult(false, err));
            }
            catch (ArgumentNullException ex)
            {
                string err = $"Not posting position update: missing or invalid parameter {ex.ParamName}";
                logger.Error(err);
                return(new GenericActionResult(false, err));
            }
            catch (Exception ex)
            {
                string err = "Failed to post position update";
                logger.Error(err, ex);
                return(new GenericActionResult(false, $"{err}: {ex.Message}"));
            }
        }
Ejemplo n.º 6
0
 public GenericActionResult Post(string backtestJobName, [FromBody] BacktestPosition position)
 {
     return(utils.HandlePositionUpdate(backtestJobName, position));
 }